From e5cdff96d161a5a8a952147025211cc3c6933b66 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Thu, 20 Apr 2017 13:32:53 -0500 Subject: [PATCH 01/14] remove /dashboard directory for new /themes switch --- dashboard/.gitignore | 47 - dashboard/.htaccess | 3 - dashboard/custom/.gitignore | 7 - dashboard/db/.gitignore | 9 - dashboard/db/branding-l.php | 1 - dashboard/db/branding-m.php | 9 - dashboard/fileshare/.htaccess | 1 - dashboard/fileshare/share.php | 32 - dashboard/img/brands/btsync.png | Bin 14457 -> 0 bytes dashboard/img/brands/couchpotato.png | Bin 10801 -> 0 bytes dashboard/img/brands/csf.png | Bin 70165 -> 0 bytes dashboard/img/brands/deluge.png | Bin 14951 -> 0 bytes dashboard/img/brands/emby.png | Bin 17642 -> 0 bytes dashboard/img/brands/jackett.png | Bin 22265 -> 0 bytes dashboard/img/brands/nextcloud.png | Bin 21677 -> 0 bytes dashboard/img/brands/nzbhydra.png | Bin 5941 -> 0 bytes dashboard/img/brands/plex.png | Bin 27080 -> 0 bytes dashboard/img/brands/plexpy.png | Bin 9991 -> 0 bytes dashboard/img/brands/plexrequests-net.png | Bin 5691 -> 0 bytes dashboard/img/brands/pyload.png | Bin 22760 -> 0 bytes dashboard/img/brands/quickbox.png | Bin 1707 -> 0 bytes dashboard/img/brands/rapidleech.png | Bin 20548 -> 0 bytes dashboard/img/brands/rtorrent.png | Bin 20712 -> 0 bytes dashboard/img/brands/sabnzbd.png | Bin 24498 -> 0 bytes dashboard/img/brands/sickrage.png | Bin 34872 -> 0 bytes dashboard/img/brands/sonarr.png | Bin 16405 -> 0 bytes dashboard/img/brands/subsonic.png | Bin 26797 -> 0 bytes dashboard/img/brands/syncthing.png | Bin 22080 -> 0 bytes dashboard/img/brands/znc.png | Bin 33758 -> 0 bytes .../img/favicon/android-chrome-192x192.png | Bin 5277 -> 0 bytes .../img/favicon/android-chrome-512x512.png | Bin 17038 -> 0 bytes dashboard/img/favicon/apple-touch-icon.png | Bin 3200 -> 0 bytes dashboard/img/favicon/browserconfig.xml | 9 - dashboard/img/favicon/favicon-16x16.png | Bin 775 -> 0 bytes dashboard/img/favicon/favicon-32x32.png | Bin 1075 -> 0 bytes dashboard/img/favicon/favicon.ico | Bin 15086 -> 0 bytes dashboard/img/favicon/manifest.json | 18 - dashboard/img/favicon/mstile-150x150.png | Bin 2688 -> 0 bytes dashboard/img/favicon/safari-pinned-tab.svg | 24 - dashboard/img/logo-dark.png | Bin 21111 -> 0 bytes dashboard/img/logo-light.png | Bin 21057 -> 0 bytes dashboard/inc/config.php | 557 - dashboard/inc/localize.php | 16 - dashboard/inc/panel.end.php | 4 - dashboard/inc/panel.header.php | 410 - dashboard/inc/panel.menu.php | 279 - dashboard/inc/panel.scripts.php | 798 - dashboard/index.php | 574 - dashboard/js/bootstrap.js | 2363 --- dashboard/js/bootstrap.min.js | 7 - dashboard/js/custom.js | 159 - dashboard/js/github-activity.js | 379 - dashboard/js/jquery-1.10.2.min.js | 6 - dashboard/js/jquery-easing-1.3.js | 205 - dashboard/js/jquery-migrate-1.1.0.min.js | 3 - dashboard/js/jquery-ui-1.9.1.custom.min.js | 6 - dashboard/js/jquery-ui.min.js | 13 - dashboard/js/jquery.flexslider-min.js | 6 - dashboard/js/jquery.form.js | 869 - dashboard/js/jquery.isotope.js | 13 - dashboard/js/jquery.localscroll-1.2.7-min.js | 9 - dashboard/js/jquery.nav.js | 223 - dashboard/js/jquery.scrollTo-1.4.3.1-min.js | 7 - dashboard/js/jquery.scrollbar.js | 1576 -- dashboard/js/jquery.sticky.js | 129 - dashboard/js/jquery.tocify.js | 987 - dashboard/js/jquery.tocify.min.js | 4 - dashboard/js/jquery.tweet.js | 312 - dashboard/js/lobipanel.js | 1572 -- dashboard/js/modernizr.custom.js | 598 - dashboard/js/nivo-lightbox.min.js | 359 - dashboard/js/npm.js | 13 - dashboard/js/quick.js | 273 - dashboard/js/script.js | 76 - dashboard/lang/flag_lang_de.png | Bin 21511 -> 0 bytes dashboard/lang/flag_lang_dk.png | Bin 18450 -> 0 bytes dashboard/lang/flag_lang_en.png | Bin 23083 -> 0 bytes dashboard/lang/flag_lang_fr.png | Bin 17928 -> 0 bytes dashboard/lang/lang_de | 347 - dashboard/lang/lang_dk | 347 - dashboard/lang/lang_en | 347 - dashboard/lang/lang_fr | 346 - dashboard/lang/locale_country-array | 440 - dashboard/lib/Hover/hover.css | 4879 ----- dashboard/lib/animate.css/animate.css | 3272 --- dashboard/lib/bootstrap/js/bootstrap.js | 2363 --- dashboard/lib/datatables-plugins/.bower.json | 15 - dashboard/lib/datatables-plugins/License.txt | 20 - dashboard/lib/datatables-plugins/Readme.md | 21 - .../lib/datatables-plugins/api/average().js | 32 - .../api/column().title().js | 21 - .../api/columns().order().js | 46 - .../api/fnAddDataAndDisplay.js | 63 - .../lib/datatables-plugins/api/fnAddTr.js | 74 - .../api/fnColumnIndexToVisible.js | 33 - .../datatables-plugins/api/fnDataUpdate.js | 25 - .../datatables-plugins/api/fnDisplayRow.js | 46 - .../datatables-plugins/api/fnDisplayStart.js | 32 - .../datatables-plugins/api/fnFakeRowspan.js | 66 - .../lib/datatables-plugins/api/fnFilterAll.js | 39 - .../datatables-plugins/api/fnFilterClear.js | 63 - .../api/fnFilterOnReturn.js | 36 - .../api/fnFindCellRowIndexes.js | 55 - .../api/fnFindCellRowNodes.js | 55 - .../datatables-plugins/api/fnGetAdjacentTr.js | 55 - .../datatables-plugins/api/fnGetColumnData.js | 83 - .../api/fnGetColumnIndex.js | 31 - .../api/fnGetHiddenNodes.js | 43 - .../lib/datatables-plugins/api/fnGetTd.js | 59 - .../lib/datatables-plugins/api/fnGetTds.js | 65 - .../datatables-plugins/api/fnLengthChange.js | 48 - .../datatables-plugins/api/fnMultiFilter.js | 63 - .../datatables-plugins/api/fnPagingInfo.js | 39 - .../api/fnProcessingIndicator.js | 26 - .../datatables-plugins/api/fnReloadAjax.js | 102 - .../api/fnSetFilteringDelay.js | 51 - .../datatables-plugins/api/fnSortNeutral.js | 36 - .../api/fnStandingRedraw.js | 35 - .../api/fnVisibleToColumnIndex.js | 33 - .../datatables-plugins/api/order.neutral().js | 30 - .../api/page.jumpToData().js | 38 - .../datatables-plugins/api/row().show().js | 40 - dashboard/lib/datatables-plugins/api/sum().js | 51 - .../dataTables.alphabetSearch.css | 39 - .../dataTables.alphabetSearch.js | 162 - .../dataTables.alphabetSearch.min.js | 8 - .../dataTables.conditionalPaging.js | 82 - .../lengthLinks/dataTables.lengthLinks.css | 4 - .../lengthLinks/dataTables.lengthLinks.js | 90 - .../lengthLinks/dataTables.lengthLinks.min.js | 6 - .../pageResize/dataTables.pageResize.js | 147 - .../pageResize/dataTables.pageResize.min.js | 7 - .../features/pageResize/index.html | 578 - .../dataTables.searchHighlight.css | 6 - .../dataTables.searchHighlight.js | 81 - .../dataTables.searchHighlight.min.js | 6 - .../row-based/TableTools.ShowSelectedOnly.js | 168 - .../filtering/row-based/range_dates.js | 51 - .../filtering/row-based/range_numbers.js | 46 - .../filtering/type-based/accent-neutralise.js | 66 - .../filtering/type-based/html.js | 38 - .../filtering/type-based/phoneNumber.js | 31 - .../datatables-plugins/i18n/Afrikaans.lang | 30 - .../lib/datatables-plugins/i18n/Albanian.lang | 30 - .../lib/datatables-plugins/i18n/Arabic.lang | 24 - .../lib/datatables-plugins/i18n/Armenian.lang | 30 - .../datatables-plugins/i18n/Azerbaijan.lang | 30 - .../lib/datatables-plugins/i18n/Bangla.lang | 24 - .../lib/datatables-plugins/i18n/Basque.lang | 31 - .../datatables-plugins/i18n/Belarusian.lang | 27 - .../datatables-plugins/i18n/Bulgarian.lang | 24 - .../lib/datatables-plugins/i18n/Catalan.lang | 24 - .../i18n/Chinese-traditional.lang | 24 - .../lib/datatables-plugins/i18n/Chinese.lang | 31 - .../lib/datatables-plugins/i18n/Croatian.lang | 30 - .../lib/datatables-plugins/i18n/Czech.lang | 30 - .../lib/datatables-plugins/i18n/Danish.lang | 24 - .../lib/datatables-plugins/i18n/Dutch.lang | 26 - .../lib/datatables-plugins/i18n/English.lang | 30 - .../lib/datatables-plugins/i18n/Estonian.lang | 23 - .../lib/datatables-plugins/i18n/Filipino.lang | 24 - .../lib/datatables-plugins/i18n/Finnish.lang | 24 - .../lib/datatables-plugins/i18n/French.lang | 29 - .../lib/datatables-plugins/i18n/Galician.lang | 31 - .../lib/datatables-plugins/i18n/Georgian.lang | 23 - .../lib/datatables-plugins/i18n/German.lang | 30 - .../lib/datatables-plugins/i18n/Greek.lang | 24 - .../lib/datatables-plugins/i18n/Gujarati.lang | 30 - .../lib/datatables-plugins/i18n/Hebrew.lang | 24 - .../lib/datatables-plugins/i18n/Hindi.lang | 24 - .../datatables-plugins/i18n/Hungarian.lang | 30 - .../datatables-plugins/i18n/Icelandic.lang | 30 - .../i18n/Indonesian-Alternative.lang | 24 - .../datatables-plugins/i18n/Indonesian.lang | 24 - .../lib/datatables-plugins/i18n/Irish.lang | 24 - .../lib/datatables-plugins/i18n/Italian.lang | 30 - .../lib/datatables-plugins/i18n/Japanese.lang | 24 - .../lib/datatables-plugins/i18n/Korean.lang | 30 - .../lib/datatables-plugins/i18n/Kyrgyz.lang | 29 - .../lib/datatables-plugins/i18n/Latvian.lang | 29 - .../datatables-plugins/i18n/Lithuanian.lang | 30 - .../datatables-plugins/i18n/Macedonian.lang | 26 - .../lib/datatables-plugins/i18n/Malay.lang | 30 - .../datatables-plugins/i18n/Mongolian.lang | 30 - .../lib/datatables-plugins/i18n/Nepali.lang | 31 - .../datatables-plugins/i18n/Norwegian.lang | 24 - .../lib/datatables-plugins/i18n/Persian.lang | 24 - .../lib/datatables-plugins/i18n/Polish.lang | 31 - .../i18n/Portuguese-Brasil.lang | 30 - .../datatables-plugins/i18n/Portuguese.lang | 24 - .../lib/datatables-plugins/i18n/Romanian.lang | 24 - .../lib/datatables-plugins/i18n/Russian.lang | 30 - .../lib/datatables-plugins/i18n/Serbian.lang | 24 - .../lib/datatables-plugins/i18n/Sinhala.lang | 30 - .../lib/datatables-plugins/i18n/Slovak.lang | 30 - .../datatables-plugins/i18n/Slovenian.lang | 30 - .../lib/datatables-plugins/i18n/Spanish.lang | 31 - .../lib/datatables-plugins/i18n/Swahili.lang | 30 - .../lib/datatables-plugins/i18n/Swedish.lang | 30 - .../lib/datatables-plugins/i18n/Tamil.lang | 30 - .../lib/datatables-plugins/i18n/Thai.lang | 24 - .../lib/datatables-plugins/i18n/Turkish.lang | 24 - .../lib/datatables-plugins/i18n/Ukranian.lang | 28 - .../lib/datatables-plugins/i18n/Urdu.lang | 24 - .../lib/datatables-plugins/i18n/Uzbek.lang | 29 - .../datatables-plugins/i18n/Vietnamese.lang | 24 - .../bootstrap/1/dataTables.bootstrap.css | 28 - .../bootstrap/1/dataTables.bootstrap.js | 150 - .../bootstrap/2/dataTables.bootstrap.css | 226 - .../bootstrap/2/dataTables.bootstrap.js | 162 - .../bootstrap/2/dataTables.bootstrap.min.js | 8 - .../integration/bootstrap/2/index.html | 442 - .../bootstrap/3/dataTables.bootstrap.css | 372 - .../bootstrap/3/dataTables.bootstrap.js | 206 - .../bootstrap/3/dataTables.bootstrap.min.js | 8 - .../integration/bootstrap/3/index.html | 442 - .../integration/bootstrap/images/sort_asc.png | Bin 160 -> 0 bytes .../bootstrap/images/sort_asc_disabled.png | Bin 148 -> 0 bytes .../bootstrap/images/sort_both.png | Bin 201 -> 0 bytes .../bootstrap/images/sort_desc.png | Bin 158 -> 0 bytes .../bootstrap/images/sort_desc_disabled.png | Bin 146 -> 0 bytes .../integration/font-awesome/bootstrap.html | 511 - .../font-awesome/dataTables.fontAwesome.css | 156 - .../integration/font-awesome/datatables.html | 519 - .../integration/font-awesome/foundation.html | 511 - .../foundation/dataTables.foundation.css | 222 - .../foundation/dataTables.foundation.js | 180 - .../foundation/dataTables.foundation.min.js | 8 - .../foundation/images/sort_asc.png | Bin 160 -> 0 bytes .../foundation/images/sort_asc_disabled.png | Bin 148 -> 0 bytes .../foundation/images/sort_both.png | Bin 201 -> 0 bytes .../foundation/images/sort_desc.png | Bin 158 -> 0 bytes .../foundation/images/sort_desc_disabled.png | Bin 146 -> 0 bytes .../integration/foundation/index.html | 445 - .../jqueryui/dataTables.jqueryui.css | 500 - .../jqueryui/dataTables.jqueryui.js | 156 - .../jqueryui/dataTables.jqueryui.min.js | 9 - .../jqueryui/dataTables.jqueryui.scss | 629 - .../integration/jqueryui/index.html | 443 - dashboard/lib/datatables-plugins/make.sh | 27 - .../datatables-plugins/pagination/ellipses.js | 160 - .../datatables-plugins/pagination/extjs.js | 137 - .../pagination/four_button.js | 110 - .../datatables-plugins/pagination/index.html | 33 - .../datatables-plugins/pagination/input.js | 220 - .../jPaginator/dataTables.jPaginator.js | 76 - .../pagination/scrolling.js | 130 - .../datatables-plugins/pagination/select.js | 97 - .../datatables-plugins/sorting/alt-string.js | 30 - .../datatables-plugins/sorting/anti-the.js | 31 - .../sorting/chinese-string.js | 30 - .../datatables-plugins/sorting/currency.js | 36 - .../custom-data-source/dom-checkbox.js | 15 - .../sorting/custom-data-source/dom-select.js | 16 - .../sorting/custom-data-source/dom-text.js | 16 - .../sorting/date-dd-MMM-yyyy.js | 63 - .../lib/datatables-plugins/sorting/date-de.js | 110 - .../lib/datatables-plugins/sorting/date-eu.js | 64 - .../datatables-plugins/sorting/date-euro.js | 48 - .../lib/datatables-plugins/sorting/date-uk.js | 42 - .../sorting/datetime-moment.js | 48 - .../datatables-plugins/sorting/datetime-us.js | 86 - .../lib/datatables-plugins/sorting/enum.js | 37 - .../datatables-plugins/sorting/file-size.js | 36 - .../sorting/formatted-numbers.js | 40 - .../datatables-plugins/sorting/ip-address.js | 44 - .../datatables-plugins/sorting/monthYear.js | 36 - .../lib/datatables-plugins/sorting/natural.js | 90 - .../datatables-plugins/sorting/num-html.js | 38 - .../sorting/numeric-comma.js | 37 - .../lib/datatables-plugins/sorting/percent.js | 34 - .../lib/datatables-plugins/sorting/persian.js | 59 - .../datatables-plugins/sorting/scientific.js | 29 - .../datatables-plugins/sorting/signed-num.js | 30 - .../sorting/stringMonthYear.js | 51 - .../lib/datatables-plugins/sorting/time.js | 56 - .../sorting/title-numeric.js | 40 - .../sorting/title-string.js | 36 - .../sorting/turkish-string.js | 33 - .../type-detection/currency.js | 40 - .../type-detection/date-uk.js | 19 - .../type-detection/file-size.js | 24 - .../type-detection/formatted-num.js | 27 - .../type-detection/ip-address.js | 18 - .../type-detection/num-html.js | 56 - .../type-detection/numeric-comma.js | 40 - .../lib/datatables/jquery.dataTables.css | 455 - dashboard/lib/datatables/jquery.dataTables.js | 14951 -------------- dashboard/lib/datatables/sort_asc.png | Bin 160 -> 0 bytes .../lib/datatables/sort_asc_disabled.png | Bin 148 -> 0 bytes dashboard/lib/datatables/sort_both.png | Bin 201 -> 0 bytes dashboard/lib/datatables/sort_desc.png | Bin 158 -> 0 bytes .../lib/datatables/sort_desc_disabled.png | Bin 146 -> 0 bytes .../lib/flot-spline/jquery.flot.spline.js | 212 - dashboard/lib/flot/jquery.flot.axislabels.js | 87 - dashboard/lib/flot/jquery.flot.canvas.js | 345 - dashboard/lib/flot/jquery.flot.js | 3168 --- dashboard/lib/flot/jquery.flot.resize.js | 59 - dashboard/lib/flot/jquery.flot.time.js | 432 - dashboard/lib/font-awesome/FontAwesome.otf | Bin 124988 -> 0 bytes dashboard/lib/font-awesome/font-awesome.css | 2199 -- .../lib/font-awesome/fontawesome-webfont.eot | Bin 76518 -> 0 bytes .../lib/font-awesome/fontawesome-webfont.svg | 685 - .../lib/font-awesome/fontawesome-webfont.ttf | Bin 152796 -> 0 bytes .../lib/font-awesome/fontawesome-webfont.woff | Bin 90412 -> 0 bytes .../font-awesome/fontawesome-webfont.woff2 | Bin 71896 -> 0 bytes dashboard/lib/ionicons/css/ionicons.css | 1480 -- dashboard/lib/ionicons/fonts/ionicons.eot | Bin 120724 -> 0 bytes dashboard/lib/ionicons/fonts/ionicons.svg | 2230 --- dashboard/lib/ionicons/fonts/ionicons.ttf | Bin 188508 -> 0 bytes dashboard/lib/ionicons/fonts/ionicons.woff | Bin 67904 -> 0 bytes dashboard/lib/jquery-knob/jquery.knob.js | 802 - dashboard/lib/jquery-toggles/toggles-full.css | 241 - dashboard/lib/jquery-toggles/toggles.js | 294 - dashboard/lib/jquery-ui/jquery-ui.css | 1225 -- dashboard/lib/jquery-ui/jquery-ui.js | 16617 ---------------- .../lib/jquery.gritter/jquery.gritter.css | 102 - .../lib/jquery.gritter/jquery.gritter.js | 419 - dashboard/lib/jquery.ui.touch-punch.min.js | 11 - dashboard/lib/jquery/jquery.js | 9210 --------- dashboard/lib/modernizr/modernizr.js | 1406 -- dashboard/lib/select2/select2.css | 431 - dashboard/lib/select2/select2.js | 5403 ----- dashboard/skins/bootstrap.min.css | 5 - dashboard/skins/css/github-activity.css | 276 - dashboard/skins/css/quick.css | 15098 -------------- dashboard/skins/filters.svg | 5 - dashboard/skins/less/addons.less | 59 - dashboard/skins/less/bootstrap-override.less | 771 - dashboard/skins/less/demo.less | 159 - dashboard/skins/less/headerpanel.less | 507 - dashboard/skins/less/leftpanel.less | 485 - dashboard/skins/less/loading-animation.less | 356 - dashboard/skins/less/lobi-variables.less | 22 - dashboard/skins/less/lobipanel.less | 7 - dashboard/skins/less/main.less | 264 - dashboard/skins/less/mainpanel.less | 72 - dashboard/skins/less/mixins.less | 378 - dashboard/skins/less/pages.less | 879 - dashboard/skins/less/plugins-override.less | 1073 - dashboard/skins/less/quick.less | 41 - dashboard/skins/less/scaffolding.less | 42 - dashboard/skins/less/sidebar.less | 87 - dashboard/skins/less/table.less | 90 - dashboard/skins/less/ui-elements.less | 391 - dashboard/skins/less/variables.less | 243 - dashboard/skins/less/widgets.less | 352 - dashboard/skins/lobipanel.css | 603 - dashboard/skins/quick.css | 15193 -------------- dashboard/skins/resources.svg | 11 - dashboard/widgets/activity_feed.php | 4 - dashboard/widgets/bw_tables.php | 212 - dashboard/widgets/class.php | 42 - dashboard/widgets/cpu.php | 29 - dashboard/widgets/data.php | 37 - dashboard/widgets/disk_data.php | 162 - dashboard/widgets/disk_datah.php | 162 - dashboard/widgets/lang_select.php | 16 - dashboard/widgets/load.php | 32 - dashboard/widgets/package_data.php | 40 - dashboard/widgets/plugin_data.php | 71 - dashboard/widgets/ram_stats.php | 358 - dashboard/widgets/shout.sql | 8 - dashboard/widgets/stat.php | 10 - dashboard/widgets/sys_data.php | 21 - dashboard/widgets/up.php | 13 - dashboard/widgets/vnstat.php | 136 - 367 files changed, 140537 deletions(-) delete mode 100644 dashboard/.gitignore delete mode 100644 dashboard/.htaccess delete mode 100644 dashboard/custom/.gitignore delete mode 100644 dashboard/db/.gitignore delete mode 100644 dashboard/db/branding-l.php delete mode 100644 dashboard/db/branding-m.php delete mode 100644 dashboard/fileshare/.htaccess delete mode 100644 dashboard/fileshare/share.php delete mode 100644 dashboard/img/brands/btsync.png delete mode 100644 dashboard/img/brands/couchpotato.png delete mode 100644 dashboard/img/brands/csf.png delete mode 100644 dashboard/img/brands/deluge.png delete mode 100644 dashboard/img/brands/emby.png delete mode 100644 dashboard/img/brands/jackett.png delete mode 100644 dashboard/img/brands/nextcloud.png delete mode 100644 dashboard/img/brands/nzbhydra.png delete mode 100644 dashboard/img/brands/plex.png delete mode 100644 dashboard/img/brands/plexpy.png delete mode 100644 dashboard/img/brands/plexrequests-net.png delete mode 100644 dashboard/img/brands/pyload.png delete mode 100644 dashboard/img/brands/quickbox.png delete mode 100644 dashboard/img/brands/rapidleech.png delete mode 100644 dashboard/img/brands/rtorrent.png delete mode 100644 dashboard/img/brands/sabnzbd.png delete mode 100644 dashboard/img/brands/sickrage.png delete mode 100644 dashboard/img/brands/sonarr.png delete mode 100644 dashboard/img/brands/subsonic.png delete mode 100644 dashboard/img/brands/syncthing.png delete mode 100644 dashboard/img/brands/znc.png delete mode 100644 dashboard/img/favicon/android-chrome-192x192.png delete mode 100644 dashboard/img/favicon/android-chrome-512x512.png delete mode 100644 dashboard/img/favicon/apple-touch-icon.png delete mode 100644 dashboard/img/favicon/browserconfig.xml delete mode 100644 dashboard/img/favicon/favicon-16x16.png delete mode 100644 dashboard/img/favicon/favicon-32x32.png delete mode 100644 dashboard/img/favicon/favicon.ico delete mode 100644 dashboard/img/favicon/manifest.json delete mode 100644 dashboard/img/favicon/mstile-150x150.png delete mode 100644 dashboard/img/favicon/safari-pinned-tab.svg delete mode 100644 dashboard/img/logo-dark.png delete mode 100644 dashboard/img/logo-light.png delete mode 100644 dashboard/inc/config.php delete mode 100644 dashboard/inc/localize.php delete mode 100644 dashboard/inc/panel.end.php delete mode 100644 dashboard/inc/panel.header.php delete mode 100644 dashboard/inc/panel.menu.php delete mode 100644 dashboard/inc/panel.scripts.php delete mode 100644 dashboard/index.php delete mode 100644 dashboard/js/bootstrap.js delete mode 100644 dashboard/js/bootstrap.min.js delete mode 100644 dashboard/js/custom.js delete mode 100644 dashboard/js/github-activity.js delete mode 100644 dashboard/js/jquery-1.10.2.min.js delete mode 100644 dashboard/js/jquery-easing-1.3.js delete mode 100644 dashboard/js/jquery-migrate-1.1.0.min.js delete mode 100644 dashboard/js/jquery-ui-1.9.1.custom.min.js delete mode 100644 dashboard/js/jquery-ui.min.js delete mode 100644 dashboard/js/jquery.flexslider-min.js delete mode 100644 dashboard/js/jquery.form.js delete mode 100644 dashboard/js/jquery.isotope.js delete mode 100644 dashboard/js/jquery.localscroll-1.2.7-min.js delete mode 100644 dashboard/js/jquery.nav.js delete mode 100644 dashboard/js/jquery.scrollTo-1.4.3.1-min.js delete mode 100644 dashboard/js/jquery.scrollbar.js delete mode 100644 dashboard/js/jquery.sticky.js delete mode 100644 dashboard/js/jquery.tocify.js delete mode 100644 dashboard/js/jquery.tocify.min.js delete mode 100644 dashboard/js/jquery.tweet.js delete mode 100644 dashboard/js/lobipanel.js delete mode 100644 dashboard/js/modernizr.custom.js delete mode 100644 dashboard/js/nivo-lightbox.min.js delete mode 100644 dashboard/js/npm.js delete mode 100644 dashboard/js/quick.js delete mode 100644 dashboard/js/script.js delete mode 100644 dashboard/lang/flag_lang_de.png delete mode 100644 dashboard/lang/flag_lang_dk.png delete mode 100644 dashboard/lang/flag_lang_en.png delete mode 100644 dashboard/lang/flag_lang_fr.png delete mode 100644 dashboard/lang/lang_de delete mode 100644 dashboard/lang/lang_dk delete mode 100644 dashboard/lang/lang_en delete mode 100644 dashboard/lang/lang_fr delete mode 100644 dashboard/lang/locale_country-array delete mode 100644 dashboard/lib/Hover/hover.css delete mode 100644 dashboard/lib/animate.css/animate.css delete mode 100644 dashboard/lib/bootstrap/js/bootstrap.js delete mode 100644 dashboard/lib/datatables-plugins/.bower.json delete mode 100644 dashboard/lib/datatables-plugins/License.txt delete mode 100644 dashboard/lib/datatables-plugins/Readme.md delete mode 100644 dashboard/lib/datatables-plugins/api/average().js delete mode 100644 dashboard/lib/datatables-plugins/api/column().title().js delete mode 100644 dashboard/lib/datatables-plugins/api/columns().order().js delete mode 100644 dashboard/lib/datatables-plugins/api/fnAddDataAndDisplay.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnAddTr.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnColumnIndexToVisible.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnDataUpdate.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnDisplayRow.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnDisplayStart.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnFakeRowspan.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnFilterAll.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnFilterClear.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnFilterOnReturn.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnFindCellRowIndexes.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnFindCellRowNodes.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnGetAdjacentTr.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnGetColumnData.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnGetColumnIndex.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnGetHiddenNodes.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnGetTd.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnGetTds.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnLengthChange.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnMultiFilter.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnPagingInfo.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnProcessingIndicator.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnReloadAjax.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnSetFilteringDelay.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnSortNeutral.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnStandingRedraw.js delete mode 100644 dashboard/lib/datatables-plugins/api/fnVisibleToColumnIndex.js delete mode 100644 dashboard/lib/datatables-plugins/api/order.neutral().js delete mode 100644 dashboard/lib/datatables-plugins/api/page.jumpToData().js delete mode 100644 dashboard/lib/datatables-plugins/api/row().show().js delete mode 100644 dashboard/lib/datatables-plugins/api/sum().js delete mode 100644 dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.css delete mode 100644 dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.js delete mode 100644 dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.min.js delete mode 100644 dashboard/lib/datatables-plugins/features/conditionalPaging/dataTables.conditionalPaging.js delete mode 100644 dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.css delete mode 100644 dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.js delete mode 100644 dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.min.js delete mode 100644 dashboard/lib/datatables-plugins/features/pageResize/dataTables.pageResize.js delete mode 100644 dashboard/lib/datatables-plugins/features/pageResize/dataTables.pageResize.min.js delete mode 100644 dashboard/lib/datatables-plugins/features/pageResize/index.html delete mode 100644 dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.css delete mode 100644 dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.js delete mode 100644 dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.min.js delete mode 100644 dashboard/lib/datatables-plugins/filtering/row-based/TableTools.ShowSelectedOnly.js delete mode 100644 dashboard/lib/datatables-plugins/filtering/row-based/range_dates.js delete mode 100644 dashboard/lib/datatables-plugins/filtering/row-based/range_numbers.js delete mode 100644 dashboard/lib/datatables-plugins/filtering/type-based/accent-neutralise.js delete mode 100644 dashboard/lib/datatables-plugins/filtering/type-based/html.js delete mode 100644 dashboard/lib/datatables-plugins/filtering/type-based/phoneNumber.js delete mode 100644 dashboard/lib/datatables-plugins/i18n/Afrikaans.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Albanian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Arabic.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Armenian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Azerbaijan.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Bangla.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Basque.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Belarusian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Bulgarian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Catalan.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Chinese-traditional.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Chinese.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Croatian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Czech.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Danish.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Dutch.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/English.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Estonian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Filipino.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Finnish.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/French.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Galician.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Georgian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/German.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Greek.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Gujarati.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Hebrew.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Hindi.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Hungarian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Icelandic.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Indonesian-Alternative.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Indonesian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Irish.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Italian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Japanese.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Korean.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Kyrgyz.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Latvian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Lithuanian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Macedonian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Malay.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Mongolian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Nepali.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Norwegian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Persian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Polish.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Portuguese-Brasil.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Portuguese.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Romanian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Russian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Serbian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Sinhala.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Slovak.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Slovenian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Spanish.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Swahili.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Swedish.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Tamil.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Thai.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Turkish.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Ukranian.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Urdu.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Uzbek.lang delete mode 100644 dashboard/lib/datatables-plugins/i18n/Vietnamese.lang delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/1/dataTables.bootstrap.css delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/1/dataTables.bootstrap.js delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.css delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.js delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.min.js delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/2/index.html delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.css delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.js delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.min.js delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/3/index.html delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_asc.png delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_asc_disabled.png delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_both.png delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_desc.png delete mode 100644 dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_desc_disabled.png delete mode 100644 dashboard/lib/datatables-plugins/integration/font-awesome/bootstrap.html delete mode 100644 dashboard/lib/datatables-plugins/integration/font-awesome/dataTables.fontAwesome.css delete mode 100644 dashboard/lib/datatables-plugins/integration/font-awesome/datatables.html delete mode 100644 dashboard/lib/datatables-plugins/integration/font-awesome/foundation.html delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.css delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.js delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.min.js delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/images/sort_asc.png delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/images/sort_asc_disabled.png delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/images/sort_both.png delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/images/sort_desc.png delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/images/sort_desc_disabled.png delete mode 100644 dashboard/lib/datatables-plugins/integration/foundation/index.html delete mode 100644 dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.css delete mode 100644 dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.js delete mode 100644 dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.min.js delete mode 100644 dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.scss delete mode 100644 dashboard/lib/datatables-plugins/integration/jqueryui/index.html delete mode 100644 dashboard/lib/datatables-plugins/make.sh delete mode 100644 dashboard/lib/datatables-plugins/pagination/ellipses.js delete mode 100644 dashboard/lib/datatables-plugins/pagination/extjs.js delete mode 100644 dashboard/lib/datatables-plugins/pagination/four_button.js delete mode 100644 dashboard/lib/datatables-plugins/pagination/index.html delete mode 100644 dashboard/lib/datatables-plugins/pagination/input.js delete mode 100644 dashboard/lib/datatables-plugins/pagination/jPaginator/dataTables.jPaginator.js delete mode 100644 dashboard/lib/datatables-plugins/pagination/scrolling.js delete mode 100644 dashboard/lib/datatables-plugins/pagination/select.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/alt-string.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/anti-the.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/chinese-string.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/currency.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-checkbox.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-select.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-text.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/date-dd-MMM-yyyy.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/date-de.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/date-eu.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/date-euro.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/date-uk.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/datetime-moment.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/datetime-us.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/enum.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/file-size.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/formatted-numbers.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/ip-address.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/monthYear.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/natural.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/num-html.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/numeric-comma.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/percent.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/persian.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/scientific.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/signed-num.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/stringMonthYear.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/time.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/title-numeric.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/title-string.js delete mode 100644 dashboard/lib/datatables-plugins/sorting/turkish-string.js delete mode 100644 dashboard/lib/datatables-plugins/type-detection/currency.js delete mode 100644 dashboard/lib/datatables-plugins/type-detection/date-uk.js delete mode 100644 dashboard/lib/datatables-plugins/type-detection/file-size.js delete mode 100644 dashboard/lib/datatables-plugins/type-detection/formatted-num.js delete mode 100644 dashboard/lib/datatables-plugins/type-detection/ip-address.js delete mode 100644 dashboard/lib/datatables-plugins/type-detection/num-html.js delete mode 100644 dashboard/lib/datatables-plugins/type-detection/numeric-comma.js delete mode 100644 dashboard/lib/datatables/jquery.dataTables.css delete mode 100644 dashboard/lib/datatables/jquery.dataTables.js delete mode 100644 dashboard/lib/datatables/sort_asc.png delete mode 100644 dashboard/lib/datatables/sort_asc_disabled.png delete mode 100644 dashboard/lib/datatables/sort_both.png delete mode 100644 dashboard/lib/datatables/sort_desc.png delete mode 100644 dashboard/lib/datatables/sort_desc_disabled.png delete mode 100644 dashboard/lib/flot-spline/jquery.flot.spline.js delete mode 100644 dashboard/lib/flot/jquery.flot.axislabels.js delete mode 100644 dashboard/lib/flot/jquery.flot.canvas.js delete mode 100644 dashboard/lib/flot/jquery.flot.js delete mode 100644 dashboard/lib/flot/jquery.flot.resize.js delete mode 100644 dashboard/lib/flot/jquery.flot.time.js delete mode 100644 dashboard/lib/font-awesome/FontAwesome.otf delete mode 100644 dashboard/lib/font-awesome/font-awesome.css delete mode 100644 dashboard/lib/font-awesome/fontawesome-webfont.eot delete mode 100644 dashboard/lib/font-awesome/fontawesome-webfont.svg delete mode 100644 dashboard/lib/font-awesome/fontawesome-webfont.ttf delete mode 100644 dashboard/lib/font-awesome/fontawesome-webfont.woff delete mode 100644 dashboard/lib/font-awesome/fontawesome-webfont.woff2 delete mode 100644 dashboard/lib/ionicons/css/ionicons.css delete mode 100644 dashboard/lib/ionicons/fonts/ionicons.eot delete mode 100644 dashboard/lib/ionicons/fonts/ionicons.svg delete mode 100644 dashboard/lib/ionicons/fonts/ionicons.ttf delete mode 100644 dashboard/lib/ionicons/fonts/ionicons.woff delete mode 100644 dashboard/lib/jquery-knob/jquery.knob.js delete mode 100644 dashboard/lib/jquery-toggles/toggles-full.css delete mode 100644 dashboard/lib/jquery-toggles/toggles.js delete mode 100644 dashboard/lib/jquery-ui/jquery-ui.css delete mode 100644 dashboard/lib/jquery-ui/jquery-ui.js delete mode 100644 dashboard/lib/jquery.gritter/jquery.gritter.css delete mode 100644 dashboard/lib/jquery.gritter/jquery.gritter.js delete mode 100644 dashboard/lib/jquery.ui.touch-punch.min.js delete mode 100644 dashboard/lib/jquery/jquery.js delete mode 100644 dashboard/lib/modernizr/modernizr.js delete mode 100644 dashboard/lib/select2/select2.css delete mode 100644 dashboard/lib/select2/select2.js delete mode 100644 dashboard/skins/bootstrap.min.css delete mode 100644 dashboard/skins/css/github-activity.css delete mode 100644 dashboard/skins/css/quick.css delete mode 100644 dashboard/skins/filters.svg delete mode 100644 dashboard/skins/less/addons.less delete mode 100644 dashboard/skins/less/bootstrap-override.less delete mode 100644 dashboard/skins/less/demo.less delete mode 100644 dashboard/skins/less/headerpanel.less delete mode 100644 dashboard/skins/less/leftpanel.less delete mode 100644 dashboard/skins/less/loading-animation.less delete mode 100644 dashboard/skins/less/lobi-variables.less delete mode 100644 dashboard/skins/less/lobipanel.less delete mode 100644 dashboard/skins/less/main.less delete mode 100644 dashboard/skins/less/mainpanel.less delete mode 100644 dashboard/skins/less/mixins.less delete mode 100644 dashboard/skins/less/pages.less delete mode 100644 dashboard/skins/less/plugins-override.less delete mode 100644 dashboard/skins/less/quick.less delete mode 100644 dashboard/skins/less/scaffolding.less delete mode 100644 dashboard/skins/less/sidebar.less delete mode 100644 dashboard/skins/less/table.less delete mode 100644 dashboard/skins/less/ui-elements.less delete mode 100644 dashboard/skins/less/variables.less delete mode 100644 dashboard/skins/less/widgets.less delete mode 100644 dashboard/skins/lobipanel.css delete mode 100644 dashboard/skins/quick.css delete mode 100644 dashboard/skins/resources.svg delete mode 100644 dashboard/widgets/activity_feed.php delete mode 100644 dashboard/widgets/bw_tables.php delete mode 100644 dashboard/widgets/class.php delete mode 100644 dashboard/widgets/cpu.php delete mode 100644 dashboard/widgets/data.php delete mode 100644 dashboard/widgets/disk_data.php delete mode 100644 dashboard/widgets/disk_datah.php delete mode 100644 dashboard/widgets/lang_select.php delete mode 100644 dashboard/widgets/load.php delete mode 100644 dashboard/widgets/package_data.php delete mode 100644 dashboard/widgets/plugin_data.php delete mode 100644 dashboard/widgets/ram_stats.php delete mode 100644 dashboard/widgets/shout.sql delete mode 100644 dashboard/widgets/stat.php delete mode 100644 dashboard/widgets/sys_data.php delete mode 100644 dashboard/widgets/up.php delete mode 100644 dashboard/widgets/vnstat.php diff --git a/dashboard/.gitignore b/dashboard/.gitignore deleted file mode 100644 index cd2946ad..00000000 --- a/dashboard/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# ========================= -# Operating System Files -# ========================= - -# OSX -# ========================= - -.DS_Store -.AppleDouble -.LSOverride - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk diff --git a/dashboard/.htaccess b/dashboard/.htaccess deleted file mode 100644 index 536dce8a..00000000 --- a/dashboard/.htaccess +++ /dev/null @@ -1,3 +0,0 @@ -RewriteEngine On -RewriteCond %{HTTPS} !=on -RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] diff --git a/dashboard/custom/.gitignore b/dashboard/custom/.gitignore deleted file mode 100644 index a99203a2..00000000 --- a/dashboard/custom/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore -#!custom.menu.php -#!custom.css -#!url.override.php diff --git a/dashboard/db/.gitignore b/dashboard/db/.gitignore deleted file mode 100644 index 0db493a9..00000000 --- a/dashboard/db/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore -!branding-l.php -!branding-m.php -#!domain.list -!.defaulted.lock -#!interface.txt diff --git a/dashboard/db/branding-l.php b/dashboard/db/branding-l.php deleted file mode 100644 index 60b0ea2d..00000000 --- a/dashboard/db/branding-l.php +++ /dev/null @@ -1 +0,0 @@ -<a href="#"><img src="img/logo-light.png" alt="QuickBox Seedbox" class="logo-image" height="50" /></a> diff --git a/dashboard/db/branding-m.php b/dashboard/db/branding-m.php deleted file mode 100644 index a91dae47..00000000 --- a/dashboard/db/branding-m.php +++ /dev/null @@ -1,9 +0,0 @@ -<ul class="dropdown-menu pull-right"> - <li><span style="margin-top:5x"></span></li> - <li><a href="https://plaza.quickbox.io/categories" target="_blank" alt="View all QuickBox Community Categories"><i class="fa fa-fort-awesome" style="color:#e74c3c"></i> Plaza</a></li> - <li><a href="//quickbox.io/faq" target="_blank" alt="QuickBox FAQs"><i class="fa fa-question" style="color: #25aae2"></i> FAQs</a></li> - <li><a href="//quickbox.io/wiki" target="_blank" alt="QuickBox Wiki - How-to's, Tips and Tricks"><i class="fa fa-wikipedia-w" style="color:#6c9"></i> Wiki</a></li> - <li><a href="//quickbox.io/marketplace/" target="_blank" alt="QuickBox Marketplace"><i class="fa fa-shopping-cart" style="color: #f1c40f"></i> <?php echo T('MARKETPLACE'); ?></a></li> - <li><span style="margin-top:5x"></span></li> - <li style="border-top: 1px solid #444"><a href="https://plaza.quickbox.io/c/quickbox-support" target="_blank"><i class="fa fa-warning text-warning"></i> <?php echo T('ISSUE_REPORT'); ?></a></li> -</ul> diff --git a/dashboard/fileshare/.htaccess b/dashboard/fileshare/.htaccess deleted file mode 100644 index dc366edd..00000000 --- a/dashboard/fileshare/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Satisfy Any diff --git a/dashboard/fileshare/share.php b/dashboard/fileshare/share.php deleted file mode 100644 index 762b731b..00000000 --- a/dashboard/fileshare/share.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -if(!isset($_GET['uh'])) {die('Invalid link');} -$_SERVER['REMOTE_USER'] = base64_decode($_GET['uh']); -require_once( dirname(__FILE__)."/../../php/util.php" ); - -//if(getConfFile('config.php') === FALSE) {die('No such file');} -echo getConfFile(); -require_once( dirname(__FILE__)."/../filemanager/flm.class.php" ); -include( dirname(__FILE__).'/share.class.php'); - -$f = new FSHARE(); - -if(!isset($_GET['s']) || !isset($f->data[$_GET['s']]) || ($f->data[$_GET['s']]['expire'] < time())) {die('No such file or it expired');} - -function authenticate() { - header('WWW-Authenticate: Basic realm="LEAVE USERNAME EMPTY!! Password only!"'); - header('HTTP/1.0 401 Unauthorized'); - echo "Not permitted\n"; - exit; -} - - -if (!isset($_SERVER['PHP_AUTH_USER']) || ($_SERVER['PHP_AUTH_PW'] != $f->data[$_GET['s']]['password'])) {authenticate();} else { - - - -$f->workdir = ''; - -$f->send_file($f->data[$_GET['s']]['file']); - -} -?> diff --git a/dashboard/img/brands/btsync.png b/dashboard/img/brands/btsync.png deleted file mode 100644 index 627ed1234fe982d47ffef98009bc6ab6b886e9c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14457 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 LNkvXXu0mjf4=wkJ diff --git a/dashboard/img/brands/couchpotato.png b/dashboard/img/brands/couchpotato.png deleted file mode 100644 index ba9e5aa5b3467c96e7c1f657407fc6cba2d6dcf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10801 zcmZX4cQoA37xrh@F01dZ-n$SzY9cy`ULpihL-eu<LDaQ+L=cG<y-Or~^=`EgJxJ8B zL3CE{?CW>V`_FscKW6S<bLN?Qo_XfpJ2%!){~;wAGZ_E?lv<kVk8Ujbe*;E*Gj}Q4 z4FG`Psg}CRWB-}$U>6_O$ybgD7E&KsWjKq<Bkm&2*i^H3!Vgne%~RZU>SzZ(s2eq_ z|3ES%E$Y8vfnkJ{F`U3NE&#*%AD$&P3&(BrMMP{#_x%sv>a)QF)`VN>-FJJL49YVC zZT?I)1n+%rws@p#;hKGrbz7?W%a{3+)<AqSzHKtaW7d=+$GV%Diyv*q(+z>E=>ifr zCOnn+sVkp(t?3&R+o7r^Tnkpa(p_k{s=Of$P+VV*<}!~3pdEJMa+;hHpv(DB+R@#I z`OD2?ahD&{i`powg`5_$#y=!)YshKCQ?ag`?#Nzg&bN$>>_dv|40LAI<J4yagYPfe z6;>-pvW*uB9*&WO$@JPV8;7iYf^dnnc;YyRoRk;$RT<0t(VzX-v-=NQWME5mCmlso zzsu8rZzdpGx#iM%n>B*%un}CDD|gDviIwQ_>GmKEIvFHiJ@4ft4a{5;QpOohSLc3C z5V8aB?*48$amq12%^9x~zSQ^~PQG2k@=O$W@(8&8xUMmJkN}+d3+LPCjp!>u<Y23) zOz$bg14rpMT((a2;3lxIz5zB{9(l@n@^Yhn_(EkvjN$V6jExOJY3w`wwOT;WQ9FgO z+6i3ncMK`c6_z{j0>p`4(iBFPtLG*lquJ~V8Sdq4E*L0><^C##*kyu^YQhBqh<tZ? z9tU1ulo4Jg2OHn+VIh?OS*j%|J=pipe$lNIwh}Uo$VvB)eHPZ`AW|c6e6}@xrYK*~ z?KPsna2m*j`VK)+Y7k(YdtP_GB<e2syp+zTg*Lq#yjKZM9iJyB6Xi#{^%F>jUOf1Z zz;VYAc&Gv}!kRkb#Ho@2s?)7<Nf66343*;I4Q6H<<(cam7Tc*4mVaPv*6JaNXtr?J zt+zbGZfjIk8Q|kr1VQP9UX~kx_8?nRt&MP|qHAh#lH90}pIF{E&+cLPutuG)lya_6 zy1-;5aHl_L_D+A;;2l*#c`=#_9hd|J3i<{iC^ZidK8;L;DZRbflU~{Jb?)72;yxjg zF+-R&j{mLwFanBh#AJ40l|*Z^@Ml(3AbW5OH*uQx+=;cR0^E-kg7(A;>0&rH!@$@e z>|7FdAssV(LyEj<CD`?~lWDMWQE)+29H)5NpeqFQw#X_Uf01PX?}<4cy?Al0R4{fT zmVPTsINK?LhA5lE8<H3(Xy`3{8LA6dKLmP>J%`E<2{P4GnnXGAKR6>@!#=OWgkW&h z-!AP6coBldQE+O=i6llMze}15@!p8dEG4WuxK?U&mF^LvD#dAb`2&L2YP-_K{0$@x z5PH4W{x}x<Q+Jo34M<bef~AQYVpK>0OKsn{8_pAiBxP5?-|WZ}%~=>#Y~n?+lDeI? z&kQ9oB}BfaZa9V~ZV)&Px|b6kuwi3YM-^DE8qAnUn~33*$kpkfMfrXqI6bjP3h<)^ z_`|C7&qK=~*qGrvocRI`jINr1N0^GW50VC3n*vr$k>KdNn%ts?V+Dnm;m)>+1Scd3 z4cL_YpA^X({}u!dR(gd{ZBX)uq&qb67b{9raT~;M1p9(scFJS42r}rsp;`iP$KXsx z=uwBIQ`VlmGex*0#UnT`F&~<r&iL}FZ!JD0jl3aB1UQ@^F8?#&%8mJSUzH3K3$luR zBj`%hJ_hA{Vt;cU<<m#v8nDFI&@Zp)%0$qPQS@Pspkzi(n80mD(#yGl&jmNWTZ93a z_M02bVF+<*&ii#45F=2-*vBmZ`f#z(XhE85@D*qgUYUr<WdV$@477o-@208phk$E> zDlM0)^Y=-xZ@>%frC-{h&<znZ65}Fq>rFTqn@L6BaH>BeaQxm8!puVN!M2GbVz?i} zPVW(8TrPs1escs)*J}XNWm_RRu(M96w#fV%SHAr8Pf9joJ8>=nkPlQGai}u0QFCE0 zit|gGNH=EpzgsXt_%f)yu;3&E2}%34j?WBKd^LjM7z#NoZa)g$VgFCr+cOz2{p+GR zW==H9GfWgD2t$IKkS!~j+5|%FHMVKT^&Oz70Oq9m^lFU2NYzDK#&)B(nQdqVKY^q0 zxwx|SbV7JdXv>aL@%5i0!t>+Jxa+%L#r^K=8Xpoe9BLrhoElsaiIM=wwhSL?6aP^; z$ASSayyH$q!7UghP|}T7Wz;g+JX~po`pf>xmd|FkoG2S*fi^HknDjAe_Cywi(#)B4 zo<m@{K+q=NK!yqD=yP)|Yc#&KclRuT+-=gr_3yu{r{!B`de=51n+1K=5I=Jds)>a^ zm<h!M@z}h;{#Q7+^@||207!1#C(xXlfbyLEQ0MXG$@gAWMdWGVbIR{mZceXGw;N|< z{i5D4X}c?Rp+V;a%kJE7)D?f>;@iKL7Y(|vfy~S6x0^X^mMHs<Mrde5Z$~`zifM8i z&wto#D`)>R@AGsc3%>4s_Pkq>l8JMX$e#hjK0_pw3`*rtr0}9I<6!EA&{dw;Z{lmg zEBDV?<0@_^&5`M;g*+YM>~_fTI>^;<rfPt7f5q5I;ibm8-NJ6BeOSSC@0AdTS<bQg z-_@~{<BnEq&?RIyHNr^9ZQYO=`{u1;q}06)Z%IYuSuOpLEgkLPM*7Dq8+qJ_sF3Xm zx^^3S*zr2&U;Tv$2ev|7nGup%v{ZTC?hu&#(K(dkux32N#f!+D1oxWVRyG%?q^{&Z z!3;I!lq+1ec((Xx;k(SQe@JczoxYRy8?0fF3K#r-bT)NSRJPj6s-+-=8onWRc;}r% zQk_w?FzzO{hJ-Ci&_!_+I{1kPHl&7o$odtp?J9nM_W749-#<Kx&9@|&W<;1~B+YA0 zIPy~SqVrf5=S5X-<q?hQI}_D_6{XJBlrW~8cUM=tMjLD?af|dpNkzlbO-unmYlNbz zlI_@==o9{#5p&5c6SN1M!GmNAvJCPi+6O_=t>`OsctkK-;gCHDFWRXOwkD}KVYVf= z^=1Xy4#JLp)IrsUHYE-NwC=<2Gf1d2(vMc?NKlX=oUv}xYg7Tnb0e&B^*CvAMW=YI zrXBblzG!CT*LkiL4Z7Q3?z`H>J!k50nJ80b^4#=11d4b!=?6YCTM44@*(xaqA}bTA zugah%n@2KAzD7g=egH54%{Y~uD3(CVck;mLiKnunEe8(x%b5#DF&e5@{2RaUL+&2T zf@T5#)~^wIl6#C^?e}Cmu7k1`^c5d+Cw6;}MgJnp?!#eVw<4?^p-s+aWF1aa-6RJr zS7h{N(a~f<zG|X%_S}g~>|Y^gviTah>AOim*UGBDZK#FzmtqdPU9c>8ZXcQeSSvaN z3$q39-m@&Ag$0oHO;ahWN<6H}fhnm+aDZ5$tVFnrfwh(x^{VLZ%1?<5v=3U4Ju-5h zT6%`2e`B2-rv)88uO1sDDaD@}$rd7~+$<^72Du{;DpZanT#Q-N+<j29-IJ<q!OyM3 zoeG=B8_%~VyJjBe51{plhYWncwk{LZ)vN7y$=ZnZTE@p|te`l4jP=otoF8ASUr;Jj z(xCa<6E($%Kfu@jp~;l#aF9IAe0@ShS7hQtQ@iFW;yoM~i^RSliov}@=41i9!z`Tp z@!ci*c7xDI6c(^K=7tzfa&?qdGY^<IbUTVR5H@2^i>BWfuKi_xbV5tac+ParsN4B- zF*fS50gS|IZoIPMF(o@Y;(f*St=t#$gUm+)L}7@3xG$Cr=o4l0fmm%@+adzaUnuh- z-aRWLn&@(3hTYN>xX^-}aV_@>?bic|mq#J@hbwd1Wwj7V(8AU1<YmdRUMN3BMPy7E zsofMO7^zHe%aypZ`KoWkCOv<~0Vz(k9mnQyKSn)JmrKj;!wg)4g7KMLuX+I&l%{r_ zW5E1z09F2l3f(B5Aa`Tz3mWB;N}$!JYxOTP!;i~$kTd3BRSU?tEST6#x^z_*!SS}> zX-SJ?&!mICzJ=Iwhkn_(nmSMc(6zAuyhGOSCNe#{iR2R3j_ffgNQ+o1h(L9{5D^F0 z<;HSx#n>VaL&za^DtM)H%c?7?S5Z2n>{Fttpj3?J<Ly^r;$?}2;(3XT-HcrVD&!h* zJ#Hxm(BRaSg&I3plsk{|HJS`ptQ-3T<cy%WGahQBfGP!i6Ai>1m!Cj?7#McTBG>gM zF5LR0X&>Pi^x8s6HqSCHUui1Z9+mqCQZ|G!c<NVrxrXnZ@iu^Ywc#ARL3hBzED<<v zj61v|erj{iOPo-fz(1=Lw(3tZ^H&5r3%MVf%vK@ZGK|&ejJ(5#+(NyRtKr+5JLs(- zYz3?R-dfNvwfkhR7?2JWlH-bVNP>t|+VKLGPtme#Tp1IF;?_qqJcEZ%5~m;TzZ!X% zdsgA7f(zNddQE%il2b9%#!oQe<)|d9<VHUn2toA-&nECD+=U@4ezamyNn!1xk+yJ^ z;Yu3D`6)cb$u*3duyWxztrY3>nqdZj?u!0p>zv&>r6*$OVxgFMX-QA7POeJc;f=>r zEx*H=wG##ClyEJsDp=CY_rf^%X{1!NC*H6bYyXnnI&^&q?0r7*Znx13X^+wryLEz! z(I6PN&c`0tzsxac4WY!*VYRU@u{v6N$0vUqNB8F*E!7)~g$ptA7%RDOUcDz5CF5dL zPn6s+3uAdvPQ7#~Z`UyCy{h}`V8Kznou@B!R{8o9Cdh-d5D+zDvEfV&%(m?Dm!i*A z5b*;`8p<uZIXPON__ELK!F<qzSLXY7d3YnVI!o^u569>8$r1TSJwx-TzobjDQBk-O zPYOY6TzYoQKTxZnMpFADcEPymL;pY~voO4()c7!Q)k~Bq>OCR>Vsi|LLaK=S-=kqK zaZLxgy$b-i5_g23xY+it*G(e4TRVDxsR_n$kG6*NQ}RLsuOM;c_sMg+l)T)Pix5ky zgDpE(nU^6T_SdcwZ<C}M?ZR--JDUcGu;?EIHxO$Hd&1qY*6}F+y$6f&3fVC>#L8~r z1yq;Aw;nBS-%^3ti0)5US0n<WP4KIGYH|oml(5QhguMxU7+ocfkn;Fqd#_P)o1^2P z&1LN<sZTbYF!{^b^|Pd2`b8nUUFkbUWd!WJxBB*^jP>PQ&HRF3AIBjY!Q4+FQ7^95 zF_-L6MUD9TZy9|12iXUspj@7-ticg4+TxH}lEu9X_UKiM_sm{O#5@=hFRhx2Xh4KT z1C^9iP8zC))uTvd1uX;gXy6->kZs52fc8~CZ@a;=_j|qW0cFFSc7$pWH#AghV<uU} z8xL0+4!DA`@CVQ<OTuy=>T!0LNfk&DEP!yIzur+V1PrVxlE5QlL+e}=#Qq61VS$2` zLR^S7v)ngW5mm*r%Xo*4KLPj8&zu<dbVPU+hC^s~VYon-z2j$<V4LX=?jx^RAlShB zi3<2P<PD5zuoVpKTW=CH28$s)eX?d;*xDO#J&VXC4NXqJ61;&E8m98#-2NF%uKRRX z7(LDjWa_z^CX>giAbhG`1S^rBo|+x7UUY(v+q{LDq#nq=1)HftR*b~NxEE|z-h;|{ zpBSlsvtv06qQ#zQB!u4646;l-jRwVms6p4PbJ%cHi<07S8|fGS1?YIZgKPeR59msX zp~F&66hi(!c$zCTu#Fm~9*T!_c)j^+Ew}%?(l4Fzh=1A;-_kMRw)m=q^({Z55Nb#Q zb_Ri@RF~2qqrCygrE!fv>2ni$Ai;yoxC@Dna0Nu*j?Bh1iJ4601ZRY+DqX9oswv2d zi0tokB-XfpBKr80a}P}dED+D7Qh@;>RIjn*cBX8MZE(;4)DpHk--y;wR{W0Cyv`mH zyxr&>d08W~@Fc<|R9+SBm##@ox%0jl>UT%7Pej~+E|6YX8kUQIi~^Jss*<|fgO{7u z3P`DSW7$Ft@jlJTHM`${R|6GVVP8Xg#uil{4f|!@fehCe?Naxk^BFbMEr`(Lh138# zrIT)p|MiBF1S;U3qP=)~rcXNe*x?;cw}X6-sXNFlx$+nITe@;>c(`(F8$bb9!l$z& zy`8^)^gp)Y?G#Od`dhvI^QZSPR%KBv2Io09x^#DaY=6HoY~C4S2m(6;pouSM4iAAj z!sfh^zG94!_lL6!P|B@Qmt_#Wylt_UMEs9Q<HzlBy3O<|5~N`xu#~u<uwkZ&F(W5f zz48943$i2p?WvbV#;M$e8`F#9Kb+{<_7vw4C5}q(P=MP%F6mm7h(=YkW%a?@m0W@n zM^Nar_YY-%Fydd$58n76VnzueSw)=-D2W3Gv;LD7&7*hBgF$kOfo8KeK5SHSyX1xC zQZZM=HUc7O6`8L>MDJgmD{UW~eRv+tsK9AAC7DxX>q!&KnGl;Bqespl`Ngmw`H+tL z_2Y-;-86^u3d`)H(z&=Dq9C?dk~!$9BsPl^Q-Oiq1gO))X9#$IY-j>!1d7NE*t~jt zAz1)wez_;?91aOg+hF@1@#?<8&vPjE`JK3xf8skWoFNl@mGT3FK}ywC3ZgE7BVYk2 zXu?7=Ph!cW>OnKGO&A%YT$fM?jXCfczo})N^UtK;A#s+$H;<kg7#Ua@d;<b^Joz!5 z)Lao3+B~v`mF5~by=HcFl+boHdO!o^#5vqXbO3JLJ62_+U%8eWLUd5$U@&$qn5-(k zJ|xq1Aw<-6a!#J6PaF2at4mlh1KIh(Bu(o5Hz%T!lVdxC4P^{F{=s!Ly)q>X2ay_N zS^+l@IG!u+AP3a-#)zm{Afw-fRXK|Me+t_dwqeS#_p~?MO~Ue)ko%0j<jcm?3u@P) zV$Uf~B+2vtJR~KBEmWsJpp4Uk)Dw9Qy{&GK_z$~p?z?kA^_Nu}!ii>427ViiZz*kt zXA}6!eYGo}8W+zwq;i>mw_4Cdwe08~ylY6?x0WCo?^&^#F*{1g=5;IF+Hm2&45*57 zrYpFCNtzqqmi82l*w|*E1gGT^I2<DU#)dXxd4npok-)hV#cy%fPz?9!s({A@G9LeA z6!k)y^tnjvb2jsLl*_6z#_yfU8<V%CX8Q()_RY1@sTesxbLp&3q4ODbp;YRXyKfhU zubANP)YP~`I|5yfRngFjg<mW6Ct})=FEm~pdgSp2K5z4lh7DEdKgZ7elX?|FwwF$J zY;pHX#F(mLzoBlY;$Z&@nP6l{B8u}i=(Os)0UG!m_F?=P?Wj&SRW&0nf7jjuAW{YN zgv%!MywCjJ12RVDQz1<+tQo}rEo3FBwce(9p?fK4%K6gb2o2$zk(}VkDE&_lH$KoS z=o}=cFn>)3!;w?-PLrcbPwaV>ezmdhsYPEt+`QUQWd6?&id<JjVoqMYcV+Y$8Shvp zm5JzCoy%WjyG8!_4{Jr#ZF>(xyS~^p|B`n-3i{2?5q0rSpbuzhDKY3VNTQ^4^(AQ6 z2wRwEYp2?P_N?M`GDGlK(_Bepga(z;ABPr`73g=pF40l2e3CY!UO#hB#BfVRthieZ z?K~~ZP%?FJeUsfm978)2(3gZnM=_z3GOC}HcsHGFYx-W})yvoZdyWjGRFO97>aNe+ z!X5adV3~1ENu&+wbfNvKKYb;h<IRB{PP8^$nQzWkAy|v$6Uo}G9BF!1V*L?)%JB;+ z((MfuBt|yy!zGHSwZ!CcYyVj^6~kgPWo>i|y!Od5_jzZ_{KLs_TH23Kj=w5tSFXlG zx60eW`=Re0D?|=E0+E@k+AzA5)J5IxuE5yGJ}-W$Z<W~^=%M(UwG#h0a()WUasLzp zHtYYN=*dxmOA9`U_kapIxQ1!@rv!3yq}5r{yZPT-|4c1N-+Vrq^3TCa_-N}vX=W^| zL$8Vqk4r|i+$#98-BkRhrfgGr*F33RK?#~I8z%hpk+`k*mv$EM!4Joh3~wS9oeQ&J z9u5i_CtJV8c?Zzd4{H+KS#E>^4Ehib^yh(GHRHdk0^w1*x!E5Wi=wuiWM{Oy3tYN# zx9DmUxjs0Ls~s{GXYe&<j&h}Vu5?MnN+g-EFfbOmWoM>3bG&vp6<=d3l4xt0kLl~7 zj=PZSy;I1e&QDxjvfk3uv!5Qb^NP!&j*{WXum&tZ1p0sh^b=j~^nkiV<7HLjCvQOv zRl<fP9|L##0vdSd9zQ{u-cMxrPN*zk$y*|Jlm78uG`T|}U~O}?$1M1L{B#LYMytbN z1fnzjE-t<4MT(LNx2$3Q*SMkDhNBH@8PZ8F=hW(`A9n@)Z;lB0-*)f9fX{-R9*Aiy zh}-tD)Tw}R0EZ6O(rSVsaz&$d?nh(Pll{hZ_B$}!h(7~qmD)61E}LaiLbs9`jQbA` zxL?qmw{<7FWl|#y#%eY)Uo=rEZa%1eJKz#7swSdTA9W?Fa3$<Uo*luAST;}>LL=eW zn*u!F*^XoJqq|&ExA_HzC0^D7hU;ll9i-`MAEY-WAa;M*4}~Q?Ji(*5R<Aiu^Z_`T z%arqn03evX&YjV}vNy@!ePxRvQC#59@Jt1-#pA|FDE5XD;aG8RJtJ})0K*BuavA$R z=Vk`;u#oO58-CVXExT9;9j3Lbd<DO$&dI%9a4nwHFdI(A3=wx|h&E!7MJYla0eP$A zh}%H5yts{;MZOL@WOQ?Jlce+XJTGAYnhU%`15`xj|D^O4wvjL@Ql+4GdPFCchhoI& zld_L(`gpuAmkk-NTm|Ap*^w>v+J1b0*U=AUeYpGs?gw|>D0vEElILYsOqTM%ta2;l z&?|GqMb7o%B^$nXh<D&)(lp;_0~ablv<e_cal7Dg5fwyUozq`my(xU~(k~e>gcb3k zEgYFTDeVJz)Eo9YqAj0+>d~VPP=3`x-%`O;{3rNofYziL>O*27=R;_~>D%oFeMp#< z-EWg)MhrGgV799oAX5g0qbOd$VfQ3mj)bWa!#KsXaWqW#&U;T5(+Hjo)`C_gVSINp zEbo|mM16edIWVHDR*35ARY}bZvy5@MhnF4fKGHDzIY6TpELHP84@Jor!rV8s-<>eH zTiaBlRd~F1V1fJ&MK{01MN#lc1&wR58gmM4j+~nzRLQeAidsS?8k6tU%~y0Jo{^=t z%kt^yQu1lgQWZZIHCWFWYqqWsH11J2oRjM?(YkwaPa>G@UJjyBuh3a{`>#0=c*(Rx z^2=BFg>q(cy)QY0gtCXU^%-&Hrzo^v>E_)xN<a7o_2Z&Fj?wg7z;*6dL^tju);V(A z&P;4t@X<7zE-;`4P)dz0Cd;;{Ns+(*bM0Hr%xpx8oesZ66{ABz3VE*Wk2OS3b?wg& z9a?8PoM{^Z?{r*jmvcyysb0xbPj2doC$0L<Bc4-xB~&_r8C1n+l<8{Ku4>GOM&~)o zB>i2eN5E76M$%9+)-N5uXuB|1t4xp_Gv7A$$9t8qY;l9;zFEGp2W@B>mQb#=_wYDW z$R_<+`MK;Dq`M|{7%=XT=nMKq49c`~K8Ks`+9S}_OQx9_C8Bxj+H5f27&1HkkOa6g zO;$l-8!I>3@L(i3W8JPr(SetPEw%xrFnQSY#E0}|Iasd8GQSS^=?fG4pXcP2fk2#; z&Gz6wTBpaO_iHI2dI)hbE7w9EvUM4xG7pV%fy%l_)ZIhV)S;vn;^)?b-mB5PjY6FZ z`_c+zX2ZhhPXM!3H~u%5MORI%6Udziv=ude-!1Ak-#t|m!GJ#QC!|Mj><n)481_=8 zUAKOG0J;y8IwPbcz)Q6-^7(5Wp5A9xb}Q%2o$z@&eqy;U47SWjSv7{m`PudubH~5N zqw`WS)dpaHLdH{nWk>wut*l%YcN(zxN3QyDy+yUZ2$3HQYXP^+JTi?(ax^apyp^4> zYVj6<)<5=M1c6pXOFl!nnz2;_Bb7eH?bkxG<=&$oRgOCENHGZ)r*felgQtpo_ud-Q z)kQvjYo-DD5y^dL`e#Rf+o3wr;{C{HN>;YGM}2kZ<S(KAv3_)4LcbJUs<4?S26PHC zj8D_rl}@ladbOew)g-R7O3XdO)fT=ChvE(tbY3M!KBJ5%+iK19$TAkWXCUI1oSd)V zue@#!JPl@|k^k${Jo9y2a7>s>RsYQgRDFlA>%l@d|NF|-g;HPQSL^{KChPkzcdnl0 zD4PqEu@ptbuB1(=RnApD$ki6+Thi&*U2Rz#J50arTTV;Y((<PMgJI|G*VN-zi{6V( z5%D)=@vP4jii(AEt=LMJVoM$);hEJmJ35od)X%me=pkEBUDvt{r*KZ&p@3DXDFkCB zDj!{I7`a2ryz`f6BzjXpnYuN*GO52&)=2Qg^!Dm}G4uD1$6ejkRXeA+0N{_Ig=UZk z7DQ~#9~{HR^EbC)I3z6iFblfX5WO=pJ;j}!2)EqDJjV;B6!qgKe_j)}%vseBJy4r< zXV|Wa`yA&-k}y80y%nzw+(7AAcT=A74A5+ijH80gQgrA?uU%29)c=(li&wsWh0?S9 zctIgDXr}T7V`}t=!2FxBYA2NE%hl=;;WATp!mVb*%)S{*#jr&?#idv;;vc-)^t7kd z-EsBP)C2m8v4cfsm}O`sY*#~W@=HN>iOlQR-?z(ipW}t5Gh(Dwd0EtF-S5==G{xNT z7XY;ompsK0`ypQ6;hN|yN6+2)78#_kke;1f*!>Bo!q6#g1d%0b)7?C1)7m`RDdC%? z9#z$MPs9Hl+j;1mE-N$tXyzvJ;(d(~5qO;;6FKUiLZ2?o(}LaQmOl61Dm|h1kNQ?5 zo9h2a#PUUD#LlW+Q#*dF-@bM0QXYKjE{BL3xiI(NQ3B>vM-sv$>Y#1!3JT@dTTez8 zO}b@E<J&YQ$2<;KYc^j0=bY24esN!G1o;uD!>&6vlx3+~J9DPNh3W9(>Wu;aX^42U zG?bH@5TxtwJxLaQvZepDfi$O?2qiDg4fZCp;kNC%ip4T8T}QMUsD-A4u9*6MeM-kA zIT7d?zLfJB@3*t`#mDPpR3Y?JpP4SNFr7jG^k|;aeea89Ud_jVL)W_Lo&)u{M@>7= z&a=J7PeQCJ+`2_j>(^}*4MRm%_sMM)V78K(o*3$FPMb~|)mws<ZqkDp($K(mV@Q5< z!diXh-!_94Hxl!daAIer=E+JSM%l(sr=q#;;iV=MF+#9`AB8W4opz$dWXIe5gwAH} zH$@Y<XW219Ljypr1v>u?iVO8-IDEm_I0X{7h{}YgISg#Q_9(Kp9Pj*%m>3QIU<5bo zs~Z|BkXh)Q5x5O<$Bf6j;;+iG<lmSlc-oRb@OhS>?)fcj-gu~-cpjEfS6h>}WKF+* zkeBdOeZ)wRbMhyfpSe@7(!i6&ObUKGB!)E2RIPKMhVJHvHlvOAzK`@Sbmq3f6LKrK z&en6jpAn_PzOw`;tT;nK^rGHRDk39*1?QuXmOS|(V=+7|cjxDk1N5|^AxW2@RhN^% zu3%en&P-|>7vt#n-^cc#H5wO9Mo~XQ1&=ZlRdFXyr&)^#Y4TLAEnjm_`m)S{n)vL? z*#S}9Utc1>0aIV~PozP=WCNcmWPT$8xtl1ux-y8hrrNNXgVG^oB@ZU$16_WW^MJ}_ zDK6@mO!szt5#6BwoRpJDHjVgv5oP4&>UR}3r=FFzxlkL&jx+T%b!WpmN$W!-#=O93 zWag*Hmm^>^BCr`rNkymJD@hM*IZ+4Fb%NPdJ^So)$@gDn^N;F|Sk70QH31f@?^m-f z3$`wZW5(~t(P_Y3h*{?c+Iw8Sh`Z1GcxC<*&U?yd*s!3rMrJRqyQ|&sWN|j~>F??O zQb;9zs5_}JmY<B@htq7Z&gT~mV}Q92o8;9$^-HdE3gV}XKP&9*Cx_hMo@d1I^)bX| zYjO+7Y_Tq;SbQTF{g-W>+xaIvRd7|)o65S6LYC=yM!5LLujw&LORrux&|`1IvCMK- zl;A1NSn4eJ*wdyBw$`)rLz=<ER3uYCb;&;|G8`CH4VF*iOXQw%i=loqwE}x+Df3}p z6cds7zPwmqlTt~02t65FLPfOhf#~y!;itJtLnuos(7^BUN}&Yiw#4lfbH4p$6ZgPL zB)7WPDSG;=yddm@3vTGUzimHqnQ4XcxTzZwJzbj5`xgG0LNxE4#}00VKBI^CJ;N8c z%Xe|hNTcR~Y$A^+t#U_1f^=oP&_+H2s}08rp_-78%6Czy=F&atDh}UL+oz4L`vYY^ zj~aZ$k|NS&g~@)E4c6MJbN&G(khe5MbP=b*MP+dGd5$xEc1>=H|F*1eznm#wbEWUP zdSn(ipu5b}HLqOj9{v8t_1YhWhk*Rdcvc@(XQkO6)s}DnlRgXhy~!C&tkqdgPanBa zNS<>#g?ryV&(E)z|B76L;}PuE6ue5tVe{kYXEtML@4_+Zisv51Iblm(+meGV2b`HS zHavC3d&1~c6+q~5&zqu{8O`L|&FL%x#ovV)J~6UAKe!5r#)B=8@5<&(+#hvGUC_-l z>vHfdHxGhc>v45Ga}qLEPgkl`UcKt0ej?|MztwZCUUEOBJ~YiD+%cv5Z^Qw91=K)a z?lRNFZ2=OFj%%j?n{~aMnxow1@W1_hnZY=GGx)l8`a5Z?5+BGpO+DACPKL$tq>dC3 z5l4Oe-zhE;-i1g#^G-G?m7?G(dX9?}^fcvW&ZJk6|A2~LXEDsOl_tBd^I5*s3Dg1s z`!lsI^PxZ$SdvK^gnZ24)gamKvuK_z2E{}C*;XNdbSg$6o%m?5t`bMh^WsO%e7bGe zIB7ZCKK>@U^ayY2k5SnFOy6>IlX5dhAlc8^Jo($S;bL*d`ADqJMsL=CnBE_Y9*)U8 zfzw`>>k1oEXOR<Y=T8)+%ynFdy&4Bt>p$^{H%6>$Aa+!qN&Ut-r#&iP5?yx`go(aw zaw#D9O3e96H>qSdC2h4MY4&}tYA4r-6sKWQBd3NaT0&383@S|IMn(;hQope|n0b)0 zB*70TsMS9*!$?0f^;Cm!slTD*Che%9+)ff#u}`0ZRds5>i}$N&o)!K*t}kQ#Y5^A= zl27RBrw}#2$rh|{9!UUfMhrI7??%a1e$x9#|Hex2tipeX;=uvwXT!gy8B{5BVqfl? zg;Pe+zLewI+OPb$1>%a~4rg>IH*|%uH-1c%{Aj`f`beBS?8h!bH`>~27Gv)B=tgdc z!T#1)rArhV6GH0Wi*eVjdt6F~!mGO{m1oXbJHhI7PJ@PBDppxtJ=oP%y=RH4Q|`iq zH`Icgcg!JTs<`&Y!#$`8xSTe*(aIe@j~VcBL)@8+hvZX!GQ9-SF}<hX`#tOn;L7Kx z-Wz_wP6F>uC1fi<23WL}F8^D`Q_*|r9+?T}oZC0Bi_He4e6~(8dYwWWQA1UH+3_It zvO`8K6MI4?Lu%KqGwLrl==rbs_P<Br0{sz<zG~@V?)p*$cF)Cx$_wE;TMR**%%J;A zIxL|Nu8J2ZGzQ65h-Hjb9<qNbnjHw~cuGiH^5s^$^_smnprO~y<4<z=yOGDuz0kd? zN_cU6!DL_zlP~c@xG`PL*`oRKgk%M~C<TpdT7OMK(}({)aYCQZz%$g4B45&8_f(a9 zw!Mn`tK)dipMx1M39Do%-LuJy@-0W(J06%NejEw7o*1c<?{?<}1%bYmgf^@rZrfU_ zO8X>?6F;(mThfk1BO+^P|9*DjfhHS2|GlF&fTCB+H-vqsjE1I1a@W0=v#o3i)NmSf zdb)+r&!92@SH3LY3jErAl5JYMIgCGBOTtFwlB1ZTR~P>=;BC3FBf;UfF-OO{)X|U6 zULv}q&7zzrxcz_fg`mg<CL4J(WFA_^i7UM8lYJ|$`^}-<&Z-lX%G?(ob;2fIu7KO5 zuIU+Km>SZYOz|Wky`K+wR+rNX{Rjy7CcWg<?%ETKqW;LcVDP-JMfd6PT<<!**KGRm z8Q7X<w#wZts>t;(-q566UwZRN+5VFy(a*59PrI)$q6xm*g-#HiLOi)CgZw6?kKi#; zd5dMLduZw|T%q@5N<mS$f8=foWZ-LweHnI%_<qOCTC6zE!v%9G`dUnfaar>IV$p5J z>!Nev&AW2G7?B3BzpOCQ$~FK`vH8b5#rv)QA2&p7`$JS9F*R5dn7cn)wUg~;Zqp8W zhm;M4;Z}DuP}|MkO5C2Oe&2_33~|*Ov}m~MBZ?exe>!D~9Nqt~iSqyUQvScD>lQnK Zqptnh?*yX%@1_+L(9+OX|E6k-`9B-h1AhPj diff --git a/dashboard/img/brands/csf.png b/dashboard/img/brands/csf.png deleted file mode 100644 index 6efda3672a67c839651d7be2042c573e36c33a0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70165 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 diff --git a/dashboard/img/brands/deluge.png b/dashboard/img/brands/deluge.png deleted file mode 100644 index 973e2f772008cb92159434d9b4cd88bd29d5d15a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14951 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 diff --git a/dashboard/img/brands/emby.png b/dashboard/img/brands/emby.png deleted file mode 100644 index 4ca4de2472006fb005fc3ea0ec3ff4e6b681cd98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17642 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 UJtM40`EMlN9=`5H^VcT*2Z6&rFaQ7m diff --git a/dashboard/img/brands/jackett.png b/dashboard/img/brands/jackett.png deleted file mode 100644 index d2c6db03b54c95ad3b458474e608a47ca88e3937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22265 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 XtEX(43LF3SU&8dYjkQWNoWlMGJ{iU@ diff --git a/dashboard/img/brands/nextcloud.png b/dashboard/img/brands/nextcloud.png deleted file mode 100644 index 44b19e4c1719ae336262ff4c2d5af5330ed59293..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21677 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 diff --git a/dashboard/img/brands/nzbhydra.png b/dashboard/img/brands/nzbhydra.png deleted file mode 100644 index ff1943d1e132fdbe5badd59c01777444cfb873bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5941 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 diff --git a/dashboard/img/brands/plex.png b/dashboard/img/brands/plex.png deleted file mode 100644 index ea2a49b2043fd12eb749641cad209ac36bdb532e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27080 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 diff --git a/dashboard/img/brands/plexpy.png b/dashboard/img/brands/plexpy.png deleted file mode 100644 index 29d9246311efab53774f2a2c8877b23df5ee9ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9991 zcmV+iC-~TjP)<h;3K|Lk000e1NJLTq004jh004jp1^@s6!#-il00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>DCY(t`K~#8N<(+Ae zB*%4_U-wLR&-C20JA2<JcCm|tI0y;^u!JayAsJ?b>9D0AmLn)zlx2|)hr<d-_>ccO z7`7F*epsd;IuwfVAB99YL`xxpAV84N3LrsXfd%#$>@4=0*>jGbd;0Kunfa<-W@R0H z%<jPcX0r3;doQ!9-^;4Xs_xm%H4ylJgxTr4uslBn^_3Y|TbhBTg&CNixdr!bU4n99 z4JIzU59MMV`g*#cRLn!QT7~K9Sy-#qVP&-rODhd%boau(LnmOlR)nz~hhcDd3zP>o zL8)&9ihWz4e{?4d3=Ekqe){=TP5|2F<;4oDF3-Zk%oN<Y{vp)oufp=&RajfN4Y}Gp z<e&!iS`BhJe3MuhDX*-o!o7QQP_NgGhV9yk0@G;ZAm7!6s%|LsjzZ7ScIX?~3#FmG zux0mg7{m!dlcU@>sQP@`_*6}RrG*O2-nk45cPHSJk6wqa#S4(HEusYzt<t5*$t*jh zO#mXUf2h}6%i*NRl?I@D<Rl#Z%rC;=*dZ9*vL8ylW$pGUV8c&<)#U|Pn!f`dzyB&M zPo9SA(ru`%Ohb2$j_$NXMM;|g$$g_X*43aJ&je%8Gq@8r9eNQCJp3G#2RB2h)MsyW zgRvneK)qgr%FG>@y7U$--hL0Juf79?`YfJ~*UZT|Bq=FAq^T1VfUxyByjm0iileY) z-%~KO^GVoq?DNn+I12eZUP?9?8)^d3HM=r*2d<xg4Q`$LD`+fUfi74xR(}Gr>KJM2 z<QYIBRrOp6io*xtz?1(7_B`|g^r?xEH`WKwhL`}9_}f#L;r69B;M#|O4L!A+cpOzD zM?2vLJZn-IX=-KyG^3BGP?5_Qp<dnx2OfI~wjX%`HgDYxU9`A-z&!8?Fpo$4_?cH= z=Hg%C5q}->9XjIU6J`XY-3j2=89^ZZ8u=1*5AKKEkN!hAc=8ks;BDrE<bh3qT6GPk zF8>TJy!kTZDj#8FqKmrhLC>aR*z_PK0HNBs0^U6wgOe}*Htaa~By@KdjP?F<-zPx5 zR)wjnAHl@ie*&v_&p@tPL9N~eZ=f8q>WFx~uJ6YLNbZN1hT<Uf@BAzrf9^M6>&_#1 zskp!EgZnoDa5I(43|#%-yD)Y3JCIwRj0B6w66h>GgilAXx}6D-Ha3xUpK`f8<Ogtl z@Z_(--jlxsef{_EN#lK+05`9kh4IthhLu}y<75bL=duL06(7Q<BUqhv0%X@2!H}gN zw^b5wp*V8j=kaXtRoJ}!u+pzL>plV2R+r$D4_||czk3<FR%vx#GZsxVL6WrM!?3!O z6Tr8rs85D=t_yPgd*GqZe+~8?dmaj<USnM!)^!4`EY8CCJAVO_@BT65YKuXTocA3G z1Yzs&TA9)(eT)!Rujd4a+Ov$I+mw-9aR~N2_3Lo-sjom!dHpU4>oNgo$h)_1z~#68 z2xcz5V%^#iX~81W0+`k&d^&>F4{`!z8MA?xgt5cF1V^9$7cjbMTXZ8GpyLyOf_ZQ9 zBAk8gzrq@=@*CBdH){k#T0pV{EUnG3+MNLL{%PAWf*~>vHt`&08Xh|mJ7&HB<?T<y zqhI{jFuLu4w{JUicmg!w!kIVV>QBA}P#HJ6kY)qd={Cda`!xZYZyO;X2i>D5;mGsf zfc-~56Y+0{j@@+92RK*HzX_9X|2{P4qRH<BoxfN$PrJcysXun9O}`J9e)vt8yz~w< zFxH)-BNKp<KRNy;jKBV$V6Ac$H4U{6a8EALwh;_z{xq&6eSEin^E8_<=}&T6f7kB1 zt1*ncGJOF)`u=}}sfnMcn0JB>On?SlyKoxL|KLAEZSjU`ClO7O5e(~*#En8U+3Cr5 zS(&*6XTSGNxbg8%F*f1iwN=`h0Cer7YyPDl{T?QNQYEXE1iCIseKy*J@Z=~HY03AY z`!ry6?lPQv^_y_vy&neamsV+c0#G7owSVQU{{gF&E2Pl|#5W0~%9lisDj+(Z5fI;4 z_X{^^GO5u7$J<=U9`Ui7I0<Ga;PT&n3+~)F-&PD-o&a>8|G}%j2lcrN$=M5Vlh{t; z;>U_kmUgydla#pDZMrZ%U((sPk-F69&cpk!{1=#+zHKbc)6xW3UYv!A(=Ws7oij!g zg#w=z{3QE&CUU)Lbuy@|x_I3~CFNlJ%|C?Il?9_|j;1F7J=?$d)9=9D@xQ^WgirXg zCOj#zBuZ=2cxl_}1ZhXE7e_D0aL04UaEBy+`^fiP8X8r&bN;(<>Ak;#T6NVZv(xkh zxP0~paP6nxhFoJsCCnu$!Azo$<1TH!v9i!gzeu1HkiKrh;&4r_Z<g(o3;E?5t1$7m ze*o9U-!hi$WS;;S#HlME;OXXDkgM|P#(&hi8uDo-2`%KSsqtGOOG1*6{oSD=V@K>! zAKezZ)fxEcwf_e9Zhg{JEHY1kN@W_(|LA4NuSCDd5!oQNeMy(?B%4cIzqme0V-YFl zRNVI;AoO;^<2oR&4V%%ki0$JWkG@EhTe<=tzVR|FF3cHiI+-Q_eU0mrGk*z7Q>SAe zL#74Yhug<at`VBR?%%=yEx^g3S|%<IPrd`(F?@;k>x@vZ!u*w2;rd74SKqYGLZ%5Y zdF4a6_THai@~f&%vGv85g6>PI)VMxAe;;vu;{4YO8Gm0g2&uPaBN(jyNj8IDX9Pp8 zz5-X?{ZqJg18>hWkU9bA+q)M}|1rSQjmZ3_*!$uiNeZ@IT~ZRcO_emo^^rd7fiLh9 zJIQgf5fIY5V>Wx_Q`6(7{A!g67(e|dP|a{xkU9Y-C*Fajn?J)K*R7ySI+1|5v9qzx zGr)r{Nv%NR$g!e{_Dq(TO|u_;?QZGjPhjfOPgOgK#0fAzdmBFd;UD15f4Hc~Itj?n z^>uZ=He<_1K&0MB+!&o8F7QlTB4s}}nUZLt-L^fJ#Pw~g&A_=I{~=UnZW@iB*a<+3 zhzsw&0@ZtGv1JF60?S20O*iI#zxZ~%Yy^b$alSs%>~_LpqU?cvtv*s@83lLTq-{pq zMsOfM*OwqoefA?5KlA;>_Z~X|Zck3Y&9i@ok*hX+g7t0B-HD`~k~T{=_5H*f+_-EQ z_<AngWDhrK?s(C*5d`iS64vJ$HMn!`f5Y8d*HqhwcLLDSKY8Ibs4vi$I}l6)CBm1q zc)czX*H5<fIHrNvvT1m9?ilL@$65wG2((wHDuvHZkm%Z?cGD0@ABo$as4rfFo8xc9 zer)WW0Q4u?m(P3`XOR7EUP31-8fezLHfl<h>tnY`HlpXUqia=J$ngj{rfcgIz9hsY zhLLtHyX_F)P~;Q!(>hmAkgf}=aOr1%4ofi)hawYzzG`&k?DwItMqltSN)OEjHqAX8 zFFkpzUa#b~f=oalCL~4@Z5u(5WgLmL_0*=|`h_<zUeU8aWCF}h--fI2{{_wjI{I}o z;uGPw$Ln>`vcDh0vQH;T8lzn}h#bqX9R}A;LeNA(T6}#8dn{cfWcT%Pb&S`BXYv~# z{vTMV%o;^VWCGk6KMl3YCn!Y&tBX-M#0B1`mnzrp_YZX}yJK+i;nPc%FPKRIW>^ku zRVi2`n=YXrBioM2^pSQR$8kiGY(yUQEBDU9?W@u6Z&(vxWqBUvZoH#DUW_L>(Eea2 zC&0CHTaTwi%b)S-2;cUIIK3n;h|R!b*kjq_N}IdMX7(Y?m(AU<46~S9_vxTD0Tyxb zckA+7DzZBG@c~P+`)q!l5fIlN%B&CVuCI?QK3U)Zx`F04)g-!p(%+RsA6*z}V|+Ry zPEU|Jw1+--CQifZ68(D&A=U)A`0gu^Uz;{94F@tVm`Qe@-qn#PU8LQWWzA4impFTJ zyBRp(Zq4}Yepwd@+ZgH3u+G&pp)JO~dK<>yf8De+!30=bsKDISH*oP6fBL83B?U0f z?$bxxMo57BxHaRpB}uk4WWbYxA4ignaP4XSF65u7PkkBYul)#?m%{H41`}ZB_5`d} zrZ7+xEG$OvgM!J$N1V;obDMQkvDx)wLSMI5mBO_(3kNePrqV|SKh)bbp?z779?fo> z@c9vOdWrN=1$E1_SD<q5x^_U+1fW38-MR>COZSvgfw9XHKI$76=r~)Njz!sD$x4d$ z4}GK@`ndj#tCqnOqJo3SvaVI7@Y_QN*Vo0>QQPn5@6T|*IG?qJo3Jo_C5VZd0Q8h- z{LBxqp}+7EfIj3WOWdrW0lB#N^nt%=6Vgw*YrPVL-Sju@^}-D%%dBz(9ol6dBOvZr zTzqXwsE@b#`neRlYA|v3b-WDBtG1c|D@!v_pE;ZDh^K-tTzteON9qHU&@s{{REIvw zX6m3F$ZlKLgp`{_2AJa<w!;K)(R$lA)Q7S{`H42dJ`rC-l1)NpS(I-69G>m<qhU1x zD)(+cV-0T)MBuWL<{dv?R3GQ-ReO|f|8^2i_yQaR(b#keb&L=ly)COEj%qSXA4%XJ zV`uajy7*|U&cVX$l#<m1xOMd`YQrxPQsCSY3!2C*i%Z-%KD}()GMA`5EUdGAxnw~H zSl3J#cvhGi(SBi4sA50v=gJBpGTQDjAXeWP$R&dtrg{bL-Z-yheF>Po9JASwW`ap( zStM~|xH{RkWiH`3p<VkV5&EXXNt3}>ZIf`;hqbB{(#A3cncMWERNQ7CgVeh=hSaiT z0v+iqV^#A}f4(v|4a+n7A9ZMkW&#=K<{LxnOaqbjwC(YDuAkPKMn<9uVL{v2uI13~ z+8CubNhio8?TqXnhwf_{X_)bXLMo`kBHjti&fJ6i{Jm?iFoSCV5xiz%W%V<~2dQO| zMEly~`3sNbvvCRSJf;f=G7OTIU7c#@DS)iwVr-T!T9~lyZo~E?sOc-QpwS&K&V6-$ z3RWsNAy4=Iv?#DJLGu>ll7z3H3#o!aZLJRcWgpp=c3nv4({oYXEL|ELJS~UqJpGfd zGznBYOa|Mj$Tkya=Qcx4Sz<w>93v>koQbtL^*^uVR~G5nzjObega~AoU^0n)NQK2U zx&E>ptyQIJ677CQFvxKv7()vRDig}K69=DhW!Wa&HWQ<^G2>-%O@r0}t4p(xU#i^8 z{AWZyIGE9*6XC=4m8gDP0-fzE+jdb_Xw>!JFvJxXU($5ZZTcTRq>j%5wmw=ITTkt1 z389Ac7ezb7Lt~jA_3InM6#C}Z@&cX#W~Zmn*B`L<!2a%-#^Pf6U<uGe1VyQYkL+U? zZKE$jy0$o?LDD)m`Js#r(~oOcwspG15&9?lMIc|*2m30)w3QG~9)nxK+~@C1er!}x ztl$}4TVx!MeO#nU`pB9@S%;HAxft0r1S;qhxF89fd~FM_{p84gejP(1mk7q!?URTa z%kIZN&C`IpH!nfHr)$M1QZRwbQZnJ`r;0HXUb{-HELzWrmUX>OHOsoq{!}z3kXYm* zFX{9yCxcydvbiu`Ut_aS{XD*0T1s>bI8<L@4f2=Hzh^X^Lk2mq7=H_&Ur?fB>!j+* z;3ilWo&?-xFs`Q7L8iphf96CrC0f^dGK4a>sgE9m3cc_+vPgXPptPD`wQao*-f=yJ z`1ryZ$QSa>|K(4|5D9XNAHR>(k(wuhJo0r3W$sT^m}s5UuwbIGrhrkK14oq+6+vK4 z+d}yoyX@2kG>jaRf7HgBptn$id~XRmslcsQ(LvVX&W?X9yQqYEbh?&BPlQ^nuKvU5 z8s7DgOnwx=t}Z(2^U&ShC60bm<h{R{7*_DpiZ3Z9S6=@NrP)OLpb^SF_+E?M>f?ZQ zgi^0(flQQLl)1Gtku?q$rLuK22`J%Qs@0mB2&AWkQsN7RZmhf21fa>F6Kya4=<C%o z5nLqH^!ZrD{5)uS3V4S5)Bo^rgWlx-4{!nqI=U(G^xlibf@R}+Ly%!tTHRYb7WAiq z8xeIRbHSH(3LfaeS%8jyx&#p2c(m85`cj~ed|mjuzadJ7A3X(HDL4V}{l|iF>sS(+ zE!M^};GXua608gAkjK;ez(5}i4-Y80ij!e_x&m`^3u<Ce(DijcERm$76cgJGPpyWR zz?D@Bjt;t8noYub5J_f}g^qlx>8S4SFT?1_AoTY3sL9Y!YXE({Us_s*yLV@CBFw9^ zgnZM@CKkP|3DIo-`^7TmKEJrq-aj|qENVVENlGelB>7o3{3(@+FoH+?;9#FR?b8{7 z?-nrsdJ^DKPrCW}MYwlw78Vwk%o%|ufF2jqXeHDwX`q+4Uo)jslZYa=u#C5Xjjr|m zf9WVUx|l>!X%TCj7^IC>^OW=vJnBoO5*leefM*3Y26@nn2`*pv@rUjZW@qQ&E>48S z#bq@yRP0lNFB3(jQ^}I3J#@C?D{9**+h3~}A;0(F!={-X3Z5=H8A(M4nM!lSj}^uC z(TV8kEn(t^U;t11bcCbPd1ioT0P-~f#r*5wnTbGD*QzixQ^7UD94s%ds>_Lrttd(G z*uIjMoOZ#jByOM1czX|>fc$c`s5+?d;)@JsTru9%t!;ecQ%NGpmu~H7fk&tO65ihF zNW00$K8-K~7!UOlxzEQR@}=a{B%rebtq<fj(akDZQKQo~JVovDePCg&0Qt>34w-<^ zo3ews9_UT^lb1$P9|~MwUoVV~4neuxqh`4BRDG0-kxd~h=~cYLz(-@RHFOzRSX{z| z;*44+&@H78HB5Anrr`Z)cbp{fTn1y?4nTfzWD6c0>$fGHurTmC>dg`M^;0Mm)KNb) z)UTfCac;4bs<}Vwco&RD<ya?<11}0YP*U)f&H!}F7%mi(Cjyn$arVU&vr}zBVdx*; z0{L?PCcGc+GV0b*apgdZ!nS7cjp0ICy0#Atlws2*ebiHM$lYvJ*W91SBT;J<6iXFU zlVBZWu1zt1{7S5@u7&G^rR0y)^?15;0@@>M|4b1(no7Q_8+!UiAz$hr#em>Z(;{J# zWLR5+hKWnKgx+j#Pe~=79_r9)pO9U(Y!Z%*z{G;^B`ALS#esv0MO$qj^}mneB%m__ zO^USrS9vm})8I7FKRCE9O6jGJIWP7OL%vuZgF^3!QO85?i<2!&yU-BfSn0u|Q#_sO zM@9yMXZX}j?h5Z0k8K1clO^1qjfxis&nQUZAM>jXMj~jeB|Hnze?vQqmxr}Ad!ZNy z?K&4RTn90G&hJT-uAX7&?!_}e|L9KW8QN|-XgEN!pjI0@Kr7?Y?OD06tQL8+*weRm zXuu*zP-9x-2X02tx**^b5c5N_uCz=QwFA9=(JJa|UKx6Dw15jly-?H-lFZgpQDf5B zrZ_`)obK`#DE5s(eqaEvpCfx!Tx8JJgI30;WRyw;ysaCAK|I~lZJr<X28=8aI+9c? zd<mhz>q?=LV9;Vj5!D+g@pF}Vbw*gki9mM{&7ww)4&4zNkXJb$7{p5eDM~{)0oG}2 zob*;E7JV|;-`|TXe0qLg!lPd7BMwI+@~AYtl4)D2(iWEO?UO9VVv%ahygJg=EB<Iv zX>=_WTp67NH$iKH*|~Z3VG}<{Y6dkbzHo6j(JGBxH*}SE;+Q!-0k-Zwj;Gl6?*t?q z_*UuZDdOoKkNUy>=uwZu+9QW8C2{hpmixeZ^_qYcaGi3c(=WPBkRaPaVrU<hmvMbC ztv_g5TWjKva2(X;XnWDkG)2A(W4rCJmg!{>*8#c0fKs$eaJ0$5HvxSshwka=sHa6< z1RC0i8rmL<(QO7A*T-=+Y1TnjlGa6!JZz|6ODS5mo}r_ko*U37j+M%S`NXkx+L;KA z?g1zdZB??q1oVwS_sB`5XcmeiCtW4JMQBl{pX3eVJ$-L*YZrh+)9}_7)HYc}S&O<> z&RWAZE?!hHDXOZ470dJzP6VYgf}R9M8CK?1OANQv`oKI$ny=_5iu@j0fhU40N}<$= z)ccM>v1drhD$3=)L3rrNUxZqd&jVD#+u3^qJ;|fnx}l)~b(<HN+1^cr3AY?L>88XJ zwFa9FqNyw0G{<~s60*_Q6+%+jlF+4q)(3RQ(8~J23vNnnk!n-i&9BzF;NZzq&{OVL z?cgvQ96Jo9{xQ>vhmUlX{5H|w&Y@d7`na~Jci06tLtC=9W|W3-SIm(v_APEdmDV*m z+YiqI29{NA8i5NNHAyWAO@x`5SuAs~f)jzhq|!;$mc{0a{oA25xYM-61Q^}2A9{v% zp%i-4u2B3snRJ3y^R%j`Z|BgHJX++bdvA%_xUMYJ4zZpD<DvFX38pD+N@2GNvq`yS zKGKygu%loUMy2YY#by>lHH%0nxzN$C9wgBxj(B;<@<g#2)P9)FclYnaHQx^1K!OQS z>Mg^jgD*l3SBL>>Cpxzy1TFGtWlsw|ebmPXCT`1t9tD=At}UG1kttUazHqIpKwv3C zsE_l|s81Xh7S(Mdtq<B=C`Rb&g@N7AL9rBm3CLP$9XjzmG>V(l?CazVB=jP$$1L)C z^piXvv{@|Ct&>up;uTVMB;I%RiZ4nh+Nn^UaAK--DcPisUsSC{7u`$v7{aEpCqUmw zs?5_wn1jWHPaK=2UfcrvkNuo!X{;=i2R6gj{ZE=!=b(ih9r1&MyvU0QfJl~&KD~!} z+k@w-Z_@fTQ7t7dIGQ7%-k8{fY9%X^X(<I)rfqbD5D~lOLhnU=;y6nWlJqx{+C3;o zcRz`%f4%r)tO-!+>4V{2PeCJBGMe_Fqny5pOP|`&gPoTD0L6XZ*bY@j3WCFJUAe@l z{X`}zw$-n$C9Y>2wqJTLN;-YwsJ@XjGvD(1V69Pt{%wy!SGTytBldY1-|*h!c#Rl2 zL=CNL0Xo8adgwcO`kT1wk1gVkdV<~$7Vq1_H*4!fi)^MDXoEHitaJiqw*+Pv<+*@r zEql%ns8G7VU=*yE4XsevO~)7me<O(|LIu|cSwC?k=rMm`<T#A&e$;3}A{XNR!BIH; z^sm~B!Hm%E@FI`CiA$3pG4X_X57D<m8jluLtPQP>WC9av5vviR_Kx<^>}HT=RvDX? z&5Qa~4WrYw7DGKru1;b%9b*i%Fr+7m{Eehc3&mVFY&-TV(Azg?6d{obkk5C)p5re- zqrA^(vY}4*=1Cqc_EJyxln|4YnA|9XWs@^r$nJsQ_R(#}sad=^)U7~=f~5%z0!L>z zeI5MJLXn;*s)eHY>UtcDUAtlXfv3F(V`KsleFLL#=!q{wBcHw&ph4;5+Tr1Tb-GVn z<S`-_(X^1pUGyPAA~m7R5_Pb8SSU-pIfQmSX7|-muYS2UNEwlGXrotSu^il{@JoRg zinFs7_4PFR(8+zGSc4+$edHzRDf>U`@lF6bns*#M1%=`LM&pN`*M}e1CfwRd%>Gdo z%?E0{2AO>F;TFk8Vv%ijWw2YRh<tfdf=b_|z|tFxI(QWdh0{drRucRmN&k(bvrz2a z4V(8p6MIm`W^8QhZrJykU&Z~1ej-PM(e<64-Sd;YOn8$LC1RHfl!K;}9pd!ak=Zda zt738!RXhEBI5xYP)G>;FkVFeb{UB+rnuF29zXBthwi%Bou@iv4DSYVUDJX8HzZ?p8 zq)_NmNvH4SWm@DBlns-S_{5+^{|ZQ9AN|rE$iW%G=(s8LgxyMp-<A9B_{i2Z7WEr? z1(G&tAyUz+Q4m5T?55+J0remWC&EI07wmcH*~A<rp0fvrx4>gx{Fjg~4XQ!t2_Bv9 z>E2#Hzc-E<iBAAp^skMpkZmWqKGHpG+|#y#Rh~C%Yp`V$Qm<v(AngH;GV0^)6-%x- z0>_{K8s<=c?jJ|$MSJI=r(t;Svnug))a!5J8e<kr7UGkE7X9m>HKE=<`XzzhOp1tK zhRGsP6Cv?EM(tjAQbt`BTIX1jn}~0uDD;)D;k}=ST}M7^H1VWPfbQ-BoILfLP#QS| zxh#u3hGLGzR556WsNL1OPG&MtVmY~3TP}h)eH!8EUZZM!3DTfsqfkmCYstYl34<1m zo)IG9SP{p;L(k@i;KU2Rp>mf-ri_klKLk5Yeg$V%`hbc|5l?VJlV!Eqwvk1lN+!iI zJ-kT7Nh<=iYsWUJEW2rhVqmpI##V7Jk7HLEjz072uw};qqev#x1fU~-`_UJnXZv&5 zNLlfFk`o0jWHgn9=Sa5NqEDnR5g3gS)VfLsgUWFg@l~RA?K84eIrvQp9i%PE%_4Nn z<qNR&;V;9UV=v&YW;<JFKBv>y#`Zn&Yfvri3}PBV#5ytFX!QGdPUCW8*5t7D3`@f5 z$8k_$^aS12v#4w5RsB*+%SNlQ)WR4Mje-y&5&F33zlki29EHbU{O8cym;DRAO<dFg zHg7)+d!G2G>RY7|QX|eJI7UqI*Y&L13*A`C*fGE#aw4#xAid&yXtZ5;C3W!FeD2-l zt?=kC{3{q3iNELf(bNPWb{_sY*nIpSLk-M&fZ}OlD#RGjs(&4HPh0OeT1UT4pl3mz zH97@H9WMh)j7wUeM}cHh1(=4V6KFlX3J;I7^q@!fhoAcz>^l6E(PXFT2~a5Z!v079 zJ`C(Rh4Bu*MVuaT^w7UiNbefrd<i)jSnxRuUF=vf@Et%R=o0v;DwK`nCol>xujnX6 zlgZ_~VaJJ=;OG-C;i|v+PjH)_07R)g2z#Ey+l)<*slcWO7d`Z^hxFd$<MmR?(85ww z(*$miog5^QWcS&$u89qJ7})g;Jp6^PL$RmNXquy?2|$c)-U^4F{cWg~j~GoHm<0Xn z!Dl0dlW^IvY@uxV8?x$}M&1o5(UUn;#V!a5OD8NsAKIdJ`jSV_mdD|VU;bSf8QrXv zEzt4=pgkGgx*zsD^IOn0cpxUQsEv(yjLoB#?KnB0Q`dhh=B5$NgCdYo2$F7)Hc@FT zon;9KwZe`Quy4z8IQE5az@}~4?)T$pV*=2A<Y4ci$6^2Hz7B-}`T~i36PO5-3xA@l zDxSE6rgjvtZ!>+6OzVIEk8hwdLc(y`<oA<Jy1(z=dIBE*<$n(cjy<Jv&<<@)0D^X4 z%brJJ|FgdX`TpIc!Ge)C!S=@7oW>)z$f-Zt4iR!>pe!`ki6?`V3{w+<jDplh+K6js zv}hDgC*92Bk$(an`_k{iw!J6YPCn801R&^1;n?oSVc+Mz0bK*TgFN{|92fZX<jZ#a zD26zP3`CB6Uz}y|1JMXrMb93gO;j4!l@WTn=F@5a(J%cw*t++z=02B6pfjT&^zRF7 z+y4Y?e&nA4^c{+ce?r>YNLYGT$HUj5m7@v!WbM_QpYTSJcDFS42pl=}Z(!TLM>>{# zBG+i;OXdmCKg4`@>LOft<M*L9^C50P{DTN)Q;`k2M>~;p2C!uHtMU1m7nYS2(P@HE zD4mvlIxQO_`{Me<w?(Ci=upD@{QjMvh0lEH-@@kY2Rm}wmvnpr5H#e>^d0!*?Qg^E z#P^^JR!Pgh4j#P>DiPN<%D^W4Wa8*WSF&FytC~d7Cm2b{w%s7Msr5lCa8kNJ4qu&0 zBO3ICZ`;Fv500PuowjcEl314sz^tw;z$YJk4{p5kGUV50tutGI3?Sp`tRQPiy&9#K zZGF(gl8t0uST<HP8%gP+vUdU?QGM9fRhr$VQKwIJ$KcSjzX?a4c&X)wJXu)R2|(1U zYcP4~Z5aRYe}}G>YxwT?l7O4lzc!pCCZTQZxoN0Zd<lat`m=0aSY~_L1dy`3?VzcA zj9{v0+sH(yR?tVfUBgG<k)QuM>^}Td<WIRe&ALwjX8P6@xOn=1!qVg$kgwA}t*Rm+ zL!ptuB%HR~U2D&!UyLjhOfRO2+7am+j1Z9x##g-t=D=#qfx$?jJur3k!q~Ad!y~7@ z3PYpzzumZA+_wopn^{_zgUJi8!Hp0892)bNQS1C!6Z+UYgDw55k#?y^thZtLg|bX4 zy_hO$N2G5sLPRzgU-cT81FO=>eqm)Axh^P<JOoFc`6saJ*z?dE^G6)(!F`(m4E?v| zw{Kj8iMRh3tloJCfYt^<RAkst(!U|n?$}b3he&;3Q9cGSzIQyt9wVs8AY|5uPHtOO zxT4ROhGB5mv+(fqUxl$92XK|&xm&y}-1iB<RI96S^YYJN{BQpVpmHA9hgFJUhzuy9 z8onTF;*umsv6E*k%EutK=^YQT#|SDigffARK%-<vHyU_*R~$JGCtmz5*m>x)nZCfe z9z3uKz*J^#!le&hg_(=rh5F)k$itd8L;`BJt-Y2u6zsr<jxu?+k0HxA5jn&PrSv0= zZzETP!q9%$`N%&||612zli%R!G!J|N5VQ+-Z(W01mwpVF-}?@f>r;5Gpt}VbKr5Wo z43Rbz!UV<XUD=S?Ka@p<g56(K80l`P_8x#EPk#k=9C;2#H*fFwL!DOG5EFo*zinGu zn1ve`e*}{s{WYvipMwG{t0;=lns$iw7OW)L36Y7jWkY6vBNM7^ko^g4RC7JhxAi3K zfBY-3>*(jy0`Gob=abk_6M&)r(QBbH3wN%)4|9|6z@3THkXyM8jruaK6?DYqPB%XR zT)iRIpDU#_&Cq5f6v!io2YVTEy<1`HfzQFn?k8aTfhVBcx3Ln>Y{&^9so`RAWvK$= zXMO<l*WZMd*{iTNKLy=g;Vq<m3vseelxeF(8I;~&{MD<{8%t1yZ83ssuQs}&cW@_^ zNA|<$!7spp<Ih5=w;#F-o%#2c){6~40VK;y3sAXt9TuiPfr+!PLk{mA>Z`L*udS#x zLk{%+2Fhfb0EDtpt+iUFU)>HXw&RhE*YtdM5psoL$d8<WqmO?P%EP;1X!9;8iGPQ0 zqw}en01WN&^3pu4EzQCF>=fL+aSp1Lt5CT+0ju*j@xnWYZ>**sL#s;$75uH^4}ovm zq!Q64Ee4^`i!(Z%lZyU>r3N11`Q8yI^lgE`u>(-(-veVik3#?OHYk>d?(4&wPV%Xo z06yq#&?k_q3%8-ZJcE~w8Ca^^gSqJ`xHI)Jl)G19{M@_HQ>a0?l!sCw2VHqRJ!*J0 zSzfIH{Xfc8D8asiCt$H!R3E?6pI4U$Mxj*3<d-)=v40B;4UKGw6@2>u{9lP37-&`o RPd@+v002ovPDHLkV1iRKe5e2b diff --git a/dashboard/img/brands/plexrequests-net.png b/dashboard/img/brands/plexrequests-net.png deleted file mode 100644 index 0259bc871f475f37e3a7ec0bf15e2216543ee0ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5691 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 diff --git a/dashboard/img/brands/pyload.png b/dashboard/img/brands/pyload.png deleted file mode 100644 index 5254821c7b92f7c4be8935fe93f9de4185ff137d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22760 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 P{~}gZ(oigvw+#9pgYDhC diff --git a/dashboard/img/brands/quickbox.png b/dashboard/img/brands/quickbox.png deleted file mode 100644 index e5f3276e6b7eca82a4c03131400b58c989d17856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1707 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^+km7#f-x7=Hc-(k~epN(~qoUL`OvSj}Ky5YL|!f7FeEfhjt`C&U$~Cp;qJ-u(xw zR<FK$?>>-CHxv;Tu06LL**c(zZ$`Y_#s-<KO(^2w;UO_m%ByOnw>KlC!a+{en^_7M zj0g|6ugwH;w>3qEh8s*Rfk*+_aMOT#0uy7D*3=<%g@t?OC&_MZl->q19LRtx25Acm zw`tA>8VI)+XhK*-xctg$g;h0Su;2;}3rkH+J#pmt+?liE;^V`@p*8}=Bcq~r?cVd? z;iLNx9<E%qYR%fUlc!7p8;o!jP(4uPoVjy>YJhP8Bv-6lxq8hSAgXU@K)45N9Z+R$ zUHzTA_aLzbR0A|NCpQ;p2*jN87cK%#0LCUTPJyxu7cB}24TXyU#UThN3qf!Zh!#w7 zG!cmN;Cg}106GB31-cU$N)SW-|Nno#<G4RCc^xSU@(Tviz!WFUB2jU+TdC_DZ_KH` z|8C@ooMv_2^5gfB5H7RX@4v3KV=jAACvPzK!?)GmNvGM|w*5IA?Z5d4U;K>%mznRS z!t9zJTUxICX63T=%i*}#gTM7w1{7ZXS0LN)_|*jO&gUtY@8?@s<oj$t5+^Dado=FM z^&-C&@mY&K3$II7-h1BZ+4C~9>{*-ZeMZfxkCynB-28Vn&ua;ra>%hizYqE<GtQf= zJ^$nTnQH7_dw%`g=E5qFarHtXpF&qyLW?X5CnxiVr(9h?Uoa+lySto_-4%Wc$l)yT zh%9Dc&{GCs#)_r(Wk5mp5>H=O_6O|DBD&&-E{jC~ea`CX;uvCaIyqs1a6(FIa=MFP zLVB_*hk;R1K~dpn10yAtii)2WmJ67Adj2pqIk~sEx*Szd>gh>Zq;$x=<p}E!N2VU3 zNkNy~9UR=k{N@RAJb9XudVuLt&?KQA9<DAg_XLMX*HB;IP*+L41xr>OSg@{;g>j0> z)-5JeC$N}Yk&M_{TC&i_wwBphS=pJn)^<h1x;``Q3xdbgmMOT;m>C@r6)A6<m7AKG zn8#Msw6fFi%2l&%F==Jr`1<_Z4<0yq@!-94J*Tg+y(@HcOBW9}|Gv23!MkU#9-Zls z3Hl>9FYX=(>%F*nc7Hq=)8D*)E-xS<BEvM1kCTs!=fn5UrfqF1*%}raQw|?eR$AOA z*W1;@#~;kb?xdk%Cy|`=c)`9de-9roKR+*@j&`miM~@j8Em^{)d`MN-R@qpa_n^3+ zZ{mq_6Wczg7JdH2&DEXqfa#LuO`e`VM^&8!o-R#&Dmpdvs_E8J0q0h)uAh#532X8* zSc+!PijKP7x3yg6{hL>Lc}!eiOs*Uba><YX-_ki*&EK+&XUT&fS28cBpXqu1{<SOD z%E-;n&&)07S@qz@$DiC{dPZ)Z%|6}JWvtr*3jX{EN=us(a{ADwoS$4RO;cBgE!Jev ziridwx2mIwSK2(+Z91FurqtJF6Pn&yml-8bWY@mAwfg+M+TVp9%~NG8Dqa}mWlAwJ z#B@k}*GmYJ0;Unw64!{5l*E!$tK_0oAjM#0U}&amV6JOm9Aac(WnyY&WUOsqWMyE$ zsxtW-iiX_$l+3hB+!{(MwY`8E!mC0eN`ey06$*;-(=u~X6-p`#QWY`_N|G5ED&{=? z#KTb-rlE1l|MVHpr$G$N%G`R%+``Jj-jhX`g%w;HOb(|oD{l@_IDO;Fi6du@$Q)rm f-QcmnOON4|xM0aAC)24wD;PXo{an^LB{Ts5>ZRE4 diff --git a/dashboard/img/brands/rapidleech.png b/dashboard/img/brands/rapidleech.png deleted file mode 100644 index a0999747ca1cb8326f65408cccd4abec99ea558f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20548 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 KQ=;X3=KlZ$S4`Xh diff --git a/dashboard/img/brands/rtorrent.png b/dashboard/img/brands/rtorrent.png deleted file mode 100644 index 9d456bf7bb25e1ff1a1c621f20deb127aa2c752d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20712 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 DWf--D diff --git a/dashboard/img/brands/sabnzbd.png b/dashboard/img/brands/sabnzbd.png deleted file mode 100644 index 5257b5fba2fb26a3b985bf925a6c3fc2afeb65b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24498 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 G4g4SG@M$*y diff --git a/dashboard/img/brands/sickrage.png b/dashboard/img/brands/sickrage.png deleted file mode 100644 index 4dd2dea1e3ac316ff9900c858a99cc9c0ed32c41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34872 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 RE2jVe002ovPDHLkV1gpFZ?FIW diff --git a/dashboard/img/brands/sonarr.png b/dashboard/img/brands/sonarr.png deleted file mode 100644 index eff693fad0f50f48533a923bf2a512124e3474eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16405 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 diff --git a/dashboard/img/brands/subsonic.png b/dashboard/img/brands/subsonic.png deleted file mode 100644 index 8db716c5fd1ce1ad0bb1ee52e4a91c74a82f9575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26797 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 diff --git a/dashboard/img/brands/syncthing.png b/dashboard/img/brands/syncthing.png deleted file mode 100644 index ddb5480ae62f86e169004bf221567a92be06d7a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22080 zcmeI3cT`hZ^zQ>mRY9all@8JpI)pAA=^#~sKtd;>gpL$Z5fG%QNS7iaAkqY>QMw2y z(u*LyOOsxHL1)y-%&=y?_j~L8!(A)M-DjWu-S>RX*(VpWZm71V@>wDpA^-qzR#ino z7yTJ{^di7Rzt>4aTG1bb&ML-k0043Q(F^MVH!&>$AiiX$Z-g|`PzPHfocJJ6ge8p6 z%gGtt8vu}$@p6V(Ilz#NmM|MTxD@l(%35YdJE#=1p|A!>!&x3?Yp3Gl3e)q^)VK0+ zuo8zd%SaPRdV$dbPB0{d(aXsZ?gsXfV*aiRMxP%w1DP4WcR@NxG0Pn#WHi#yW|T*` z!Wf15M0l<E`S}?|#rgP!#RLU}c^Cyi{K7zxIFKL23*ra!gTMkH#y<{bX(IHQq$|`K ztgE2(M>@16#cYd2I)i~gPft%iPeDF}s|}D}TwELo5&#Ma@S=P0x_QHq5HDW18_N%o zKXnvfZdR^#&PY21obgB(Vu^4^N-;AZCHi^%F)k<PpNZgZf3QPS1bRW7f&6?R;6DXH zt$xNhySqAmzci>75atMTg29n)=s5m=jB~a{AQ5i1h<{1>)BUfB(Q~4q@iX^7UaynW zKc;p=Dte$1{DJfzBi;19onb&-m>a^~)e5HQfgTFWKaCz~XZ>q({-Si``PXZQdD;C- z*pcT)*!QLIV}>NrV+G5*!XQY5t3CqZDE(uVY5$3kQC|N0s$%3cw1Yzto^F>UftVq` z=KGf#OaX#~Nu$@J2ro#K7bK=HAOIHR2Mdbxf`q{!&~G9?dSYm3AfR^E-ha^$5Y`8Y zg9SvuLVwZtttX}ix_+P#B;-G-{NDFB9jF!98sX{$K}y>>L2O_^XSj_d@K@t+J%6q$ zusp&M;flU2n6#iI@SmE0i~7FOz^ZUJBm`~+Q&o^gH}KinLBZBgK}&0h5R_L;TvVLb zQV@Lx0YOB0A>!iJmR9@_F)M!9cZeDqzlZ-#S^;6@epD@J=^q;l6k&yy|8-eb;)2!? z7*vo~SU^;em!BUd!YjrvEXWJ9vKADvwuA`_35frh=r^&yCDL-WL+^VK$KU!KjRkr% z7BNv_m@o{&YiT6};}zsT8kLx+7%zG#5HTUBh`6|@(4Q&(LFR9%RP5Z)tJV9rRg7NC z-*+}Wn9E;V|8zLoecz#+A+Bz)qxzF#{<8poZfQSvtfQFkbqt1B9qnz>R!8LlgGvJb z()#PNen$QgX7>-%`JWK{(Ely`-*b4{!r;f1*AJ=hz5ZRq4PlM+gt)@wY|ty@zf}GY z)xU;e%1Z)|z6%`f{vS+)8^q)PavJ_qRsEk%!$0g$|No}p*DAKMg}`lKP-)<w3;555 z|2A_!=JT(W^=GyIy%HslzMR15Dn_p;$oJ~umjwQ;?N{a>{f&;Q(b4^Te{m5I`as{p zppQR7e|KYs8Xq6}yBjm~SL9W=9a380k8BvtzeOE=gZ|jw_0TtaFliBCVL@R@AZ9aW zgtna*%+W}}4!sY%9qlLl0%CszVS4^C()eE^fAjni`D3zvyD|G-g+E%+w|(e4PT<d5 z&c7At&wcEF^W@i%{x?-Iv`&&>06E?~!F4<z4DSgp3?RpwC%BI1gW)~Fg#qMv^90xN zd@#HxxG;bmZ=T>fo)3oi1Q!O7<INLX$MeDPp5Vd&a=dwh>v%pG-V<CHK#n(0a2?MF z!+U}Y1IY2_39jS$V0ce(VE{SaJi&E59}MpaE({>Yn<u!A=Y!!r!G!_jc=H6;@q946 zC%7<x9B-cBI-U=P_XHOPkmJo0T*vdl@Sfnp0CK!}g6nub7~T_H7(k9UPjDU22g7@U z3j@gU<_WIj`CxcYaA5#B-aNr|JRc122`&sE$D1d(j^~5nJ;8+m<aqN0*YSKXyeGIY zfE;fgi;L*jL!2-;`pHdC^dp-17kWz3k9RU!spx6|06uK!$3%kxfbB!{=PUr=4gvt? zEC2v-JODt2h%s+a0sv^=t18Ipdkrikd;95k?{AI>x^WakM>cN+DRcp%v(k(dp=1pd z^H%#G(|L7GOI}bcu9bA<=NHVaadwYg=A|fPRB{Qn*L!mL)G1?ZLPAxQz=g*=#T`S_ z_o<&*E<vZ-)m85JtyKUoPqj-;r+l6E>+qBq$zZI1HWN&P#fhyJNXJOhjD0@PYcmU9 z$mT{j_Jttg&2C~LY<F2HXM$%hQcP`0vQ~6&0qWL*?3Ns25?3H{_U&_cm)Ty@_nAqR zz4Ral$hR!F36rAKEh2Z{Nj6;v6Z_57yfWzEUZBO54a{+Ni=d3h=fR%B8GsC26<n5n zN!)i$u;7Cv5g_2gq5rqrsOu;v*#!bJgX<`h(aD5u#a(5rQK?T9Oa1;bAQlB=KG7%% zY6{&x#tFc)t~y^%?M27QE|f#Gb@pYAwSTl5IRMV(Rj}h@0V5FfXJpJ1^U?U&xJCoO z{d)Bgb^sBR4$#KV$bUT{y?UAgK=dv*BakB~>&a;Na;$;{#d7mUTtz7+lE9m*bGWF} zvUnNm8ur)^>91?+GsFOzfima6P;SaFOqMG9;2N1#TBw^h0~im7SzzT!EZfsQ$Wks` zehAm8+c!a3^WX9{Nh>)!o!l)v&Yb4Xr!>;{U5vlZ!T{L*%3wT3xebvQ_Hlu5sih0w z3+>dtki#SojCx`in@0NKxnyloKT{{X@DsG;BeX>ClfxI4`?uxsPA3~QY2QQ<@#I!} zyq_Z_4BXRDemiu}{QN?67@?kvT};Ys=oj^Sy)k4Aba~yIrv1YZYg1F1)H0e`1{&Es zyocRpqK#lnKvdbRiqK2aa%Q89m`sZJWXd;HB`WNV^LMT#QUndtvx}t8OlFYXC`kyW zVLKo%uUV?#zXKr&tn!S60#eVN%8t~<8qp%Q(a}637*nTnmJFwp>9XP#nfbZO?Yyju zHqKplxhxEZ-|}nJQ3AZb((wUaVfP0a48h+;PBm@2K=0&+loAD0jWlwXCRYtx5Zt-k z4|tzvDz-865=Zv4L<kTdjn|3uO+7;G4T-DemMVlU)C8i?@9JbN0qjPuZtlQ&f^aVj zI=c_QEyNEw3s@Cl-~${`s7!Te+@E;j5(=H!PhF7`;n3I@Nw_Bh&iAOuBhDj^Hml@j zAiKm#sCVh^Sv^v!siF%4Z@U$89vt|3-V;fY{?LfuRvm=*X41WP7f85=C%e>GM~!+V z8@iu#7vyi4@V-l-I`1njy{3m}d|x-j()`imI=pa4TwYafkcdfLL!rsLF?TflCx$IJ z4OC7_48wz$Z<wRvw(%@>3g??dk_7=1a51{GexwAqwQ>U4Zo3Q_#yB_1jq{c!Ec$f~ zwKj3=pmpC;vhu3u>uXaMjL(%2SZ6E8OpF&n-NPh(pCxw-CkN@0=LY69!7n&maQ&`# zhnu7wp$ELmvAn>RqprE^-!quRd@*@uJbwr7Q9>P@<?VZFAx=T6Y@!|{!HZo=k~Z8A zpQr(9xptDD`?R8G(OyW~Xc9sL2q3%_YvZFU)}f`w#;!iuy<aWDf#`BCeEKR;WNo?m zgJu`eQ1r#RMejldpBz!7Dg9p6D(j%hF3uPa*rTpbBIFD}{P39x_Flt?*<mJU3VsvY zSlh&GnS}B6Pc6B^*Vp^#&M1fJ=5Fagc&-qQ6Hwvd-_*NhLtL_=>#oe0P+NS^IMywP zFWWBj{GIb;ed|Wqb8;esNG)p}`1`cYFx22TJpX{S2#?n0zS!tAQZI{Z%%YPDzQU;a zNcZBgTuQoh^Z9s+c!L0|l^1DPjMIzH2`qsA3g5caaC4tNb%WX0r)~CZn0R~js(QG` zUkKGl6V55pUuD5h<vx_`Z|Vdl>|eET2<qHP467z)+qM6+*K%=cUSF-}TEZ;FntA># zbm^fL%foFzC0PCau<JcT2QYs1=DRKebcayQ$wyzAM%pq^R{|Hxaw!2{cLdkW6I0%- zXFA{Cq|PJuH}k$3rni6Ve47g4^tP&<0!jJ;++opX<rRAX+nds}q7;wt&j9-8bJGKZ zo7Km4FIjYVA+58NeX72`eDgMDQA6n4Ac5jL0>fe-6FjR7VTP}}nXeyZnG21F;J+p; zPx~@8Cg*mh`hlp{m@@ImcvefWz~M;t&g+%pJ5excS-si_S{aAYkzkcF<Jo9QvxEhz zo*~IKb8Kj>`!n)BmR@L82IIp+L8gXrsjng%%dPLo`jVNaaR}9L1CrtzOO18V3BRT2 z<%till~I$%e{jCiVphu<NDy#dj;SJbruFK>wCTc?l<2CQH>hff>jMQzB1&U0x3Hng z;>Q|iQ>4o8M`%6ekpq^|-=4XBdB(-SrrLeR$0C?+tHD9v59yww9I)-%<h#{CT-#GY zs=<XTDaw}YAdtlt)OM*8;hC;;2{e$bPn+lWxwGkx4^DQK8{5bSuPZG|saR2^OHt>= z0^iGa%*|3?n}iG>rgt|lQbfp|9=b=a%S}<m&k~-aTB9hls2SbsP~o*9OS|uJfACCh zpi4x!T2c)kmS`*NfY+O!;j#Ik)g<4cMsgHmqTa*{CylO+Ey`BXIHHI5LdTOIi)Z?@ zKj!pU>+~gz`ZmRMdvIZm8W3s{)G;-A1y6BjQS-(2M0^L3Zf<?Q#M!Kp=gPyU*Lxi% zD|o+M$SjV_4LnVQ;3ch&0WgnAk`@}(Z>AnfG4)$1ECjtHqgyOwj66u%*10tLCOifj zV!g&(XJq_vEGNQ})FlOY1-0)A77*9z@FRKJHrQ0*U0Y~_tVpfynQG8JKW^Tgh-<8) zez(`VV$#0=5VgG-OvNl9AKA9zK(cY5nh|0CRl333YJS^!Sm#3goM?FXm}IFS%i33b z;JOm_5L@<2t{^it6?eoKMWyCP8@EW!&0@~$1y9A;LBa(u)Whj`%EtKa1DcI|wYkHF z*uzF!ZxfK1C9(F;WpnIoW#&+sr}|1?qpHVyF=~9vMAh0WK6?Y+itatHiv3<*N%#f# zCzeZhX~a-p&V3Q})r`<|zZ7B|xGBMED=7`^X&XOGh_%T%44)9%i5>H5>FDY8&~vyT zyv@1~!14$lNJ@8Td-POsWPK?m8bBQ&aSm(D&s;d3pC6(gy=>W^%-lh5OW(aJc`f^1 zP%>THe$ShMq_1P&jL*v=ADDmhma7mp_i6AdDCEejs|-r3PPSf1zniuk5NlwS+MTFw z$IEAi*x5MGDA3f4hnsbicGZ$qCSX>3*J5m@Dw{kxaQG7QDT`b;?;H2a#-*l(0C6_^ zA2||I&htI)s4b|g57J!Y43YY9l{&ggRDvY`-J#T7%8=$<<tj~J>KZRS<9-4DDrw8Q zJK@^IH&fG3!WH$t<x703qYtQ!%@!{%-%05oyqx=S$!YiTY=Bf$fHmQ{>!lkvm~ow9 zjVMx?O3tF!g*N&-B(nBdH%GKo$Di)S2THkFT^9w?&n>%GWn-1TL+mwi&`@PR7%Hw^ zgvtz4HgT49q$}j3?ih<>!K6`hb@Z<6gC&PtLFr<u?K?n4(?p+PzPCDH4YooPvs&iF zbvdpiBRXaT!=j~<{i)YFpPg!U%v{BG2X1_p;U|<;F)cPnxxWw7(w|}qp8SNOl)tco zbhjoy{MvbDJveVOpIstc#=!znNr($#(&;FPb9T*mtJ0bCT9Ws20#!}#=}W3;g>&aF zU2c@F6$r&9=7<oXQHqsnpHY>m1Vx9ivy#xvkBmSpSF$6Lga$NsVSU5)P|w_z_fnN` z8bON<E#q{v$k+6E<b>(>`cpH>RHBRyYaN9nxdO`PXr*?mk(5(sYd$~fr7idL6=d&t zeZ#Nc9xA7~?s<@sMxoM0Sh8b=NK*)%w-ru()+c{zex9`I5l}lWldKOU(ZM}+=wi-& zg*%eu-QJtVS4L*~{K~Sd9leN2MOB0oxXVtupgMr6ao%e&jHeS%XX8CFM{Aj|p8xyZ zIld4{v7Xg*A$_6UYvy1rl>4)EtvGt7d;vOPqjuA&j*if=?JI(K-xiVu2Fk}%BNjGw zOnhiewIo+$jc;;>5!U!~^ZJc`8(AV3|7asG*`Y3r`?5+X6u*h2CKZ9G3_aYok>XVv z3BR5+Q~Y`i4<~a!^Y&@iMkzUzd))I5hom^_aj}m00<t(s3901ys%IWWvqqwu{-5vl zGXaI$nZimE7I650x{}nl#$Z^C2F&xBZRFslxkg)k^(zsKq5}7fBEqCAW5=rvxJ)C2 zHY(l^kyj@O3l_g_b`#+PXf49OY!{gB8{8jY1)R%`J`EtPrt2b6xK6oy*AP(5T<7I{ zS)g}HiG<T0i_3J!JG&jV8Xl|C<ICU`JKRzfHtyGVE*`nX7YbGd%U!Zr_;zz^Sg!=1 zEhpllb%<E{cEE1Dn7;&@yEYqK*HtVwrVih{c-LvDu=I@$tfTlFquQ!MW1qt*@sSvH zGjV!2T@dnci*+eAitgp~qP=jDmxKK1BgKz6TF`sdC{7nAGo<X}!}}S-LuL7d^8|gH ze9b`-{Y(PdTq<E^8fN+z+@)BWsLtgWtW0#31ZuQ%cqES<E;-PzZaVXxO+N#;YqYFG z5@o`4h0J|#`YC@G4bR@Bg@gl%C-E-tXjw!k3m@S1HnGlxvMKFWIa9gsMJpkk>`~(d zP4T@lPDPMUVhee`&PrpqIO`cpw<%=@uQ}gYKfmituRkV09zUQcAma?{Uac#1!Ghe= zePU52agMUf|4Lx#r?IFt$&5f1e6s~Swa(Ly@rlaOByu4!V!Vk3Ez=d7^J1M8d#65L zhzL_i<`#IEX;^vCO~^WPN_XA<JQBObC&(+G(Qd4T4cA#!SL|XJ?aiG?U7bF@Vji+8 zc>p*NTgx+toX9Ns@i^I<mR^#<D8g{sxuKE92S!)?lqxRsR&HqTbCt7(WCau|9)hCA zUoGJ=ni?@?%Q;YA5U1+JYsuhi`K$&K%jX%JO8sa6i^0RC<*X@JV!jngq)<>d7VxQl ziC%2u8`sNXR4rhi&Fl9`c+vtc_3a_D#fcM^ASY*-sG0IoA(dE6UXLEY)gh;qvJX|m z-Hc=38QyMSTe%iZs#;~BnEA*C=bjK4b_UMqn1@d|^uZzelSc-i%e!LSH-|Ly)aWRC z10w-3?(@^GoK>uvG=QtCB44@)?{@iCSgEOrWlY@W5$^BrwI_PcQKFvy;gvjj&cjD{ z^?-m7$>C_~9AZK|cVoH|YNwJ5izSH*B?*otG>bF1Y_&-<wN%a;SCzHpzd+P*$Jqo5 z?;}knQZ&3&&OM>&wIhS*f>F*{(uuK@84(__$>?{H*krwZ5%7EB%~}u5jlmgEf1!`F z%A}G*c@3kIhfD=8vDr{BWf!P9v&&iNJgti7tMyj9K_dOri!!{W9C-u21f2AJHFN{? z($<w|)#O(QP-(YqMw@MR_r7oLu4l0nNH~Pypei&})u(9xgHD&4qIScfI>{u|GifIF z)5epHtgMYscO0_F0g)c~nuW6h5?e)Cspu;sjt!387a3?<GIl6(duN+*NJkzsS0q-x zvTxGU(aIt^Fg+v2PeTz<#S?tET`p~VBk2*X)aZ!fsJX@sR|aFk!(p0N^r3SWsiL^> zM;+tlLd8qY9CguiXDO|no>@<pAmP+x9N}`|VV1_8tjk|LUD8XCJI}jSvQ-U8BNvxP z%G*71DxX)r*T);(q6}`3^LE;NX+U1dOYFa4$MPs&=Kb8hQ<sNnjr$$BvW74G^}7>U z)KDe7&t288RR;79<&qtH*ET*)i33)E{@nynV&wEhoU;g!XMLWHVOL8qccU~yY+f!) z`&@?3M+Z0l01r)}fW%mC??Wn%o$^<EwkS=3?q_jyRpZz#oEH59Tyr-_YA=2*_x0-$ zWdq#x<D?K6@GeT7-Y9AI5ABHDTwSf%AT@4&^M(An!L8w|H|8^}@OlhX!?$znNO`I` zFIg;(7+qj#*^|mwLL(6G*k4{3teLGk_&`QxxFpt+i$8F~`k*$^XM3gT8`A^6gPB+C z_iHwlvom$ie+|G=!F|~!kJT<p+#>CQ1OV<jD%SJdrqQ{D&z(@dSv<bJb*|fYQ5Ii{ zQd#AJ=WH?fweOYS%y<$#E+co?t9f#y%)sMV+BPG?O+;;5i$r(PyXAP&ejn>liT&`| z;755CuVr{)QNwR{2h^+lUk0P6{w|0u6fDd|(w@%mVqzxK$KX1Mo4DgRbBaw*7vH0U zeYTrGjg3MepEC>FEIIi~y25JP-2S4UK9GCYR&Tnav4Gx|5K!;_S+?1taP949N^8V3 z_O;0y>gJwCy7g2|cCXzX>7E$P&d#FmRF}0MkEg7ts%xBn^libksZocAf0sVJ`HFcf zAL{jzsjNh6?n~-uKJyeC&%64iiC(S2HxB#agqXXZN7V&3@D(A^W3_vxj|w-mCVOJA zvp%F!8rJkwh2wdRdwJ|rhTJ4+Po^T{^MK?{br6ojWb=b;ZY@>zK=wIYhQtIl&dw*q zWVM4Xmsi*Fo`F*0mj)jv-q+Az(P6G^o+9_I(DhhZEQK>%Q31%3dmC%^uZ>F?nDqml z*!E`LDm=|px&>|7q^hxpRfbe=mp!N#l;9Z1wb4+G7*(cHL-hH>0wkJz^IUg#Ry{Mj zJom<AQeR$t7KKw_<B^i7mu`@cy|tF-n0^^V+kENmuqn+<v04*<O0B>Z-6s+nIuNb{ zNp91k6z%N(c0mcPcZ=4y6U#<CkY|zE@C~hjpo?1rH~aZIVICk3#3)L!L`e}|a>vu5 zLZ0}P6r~}7Pm01>*=my(7<KfuxMwzYcIU&J*j~N_Jq#yv=hXgS`?6^6xg&d)8po*Q zwT}vus{Qb7-}e`*^`$=4?-4ghmnm-)x)7!9-MRcUOIhV}@z|QR+1~R9+L^WOt+1MV zm!qy*hd>*FsEsLUO2=o>4w{BoRLFhHn==#ufMv>HHG!9&rh_*>jdX44h3a}f%WQ(O zxQj3c`I%%!$^x>j4yOjzS)50zuoCgt>up?f6CqQG#e;@=cN`P07;{qN`zjCU)}Fm+ zeOpJ-Bn1{XOHFKQ$etg({h=FD;?~jA7<hB;OW1gqyYa+E4pH>Cn5w9qG~aCnj+d9= z*&||oZyN1qGdk+J)kLlt%BtSvo5(~xw8AsNMrt=U&hdQ~>-*BdVo>fqOA8oc?7ORS zd#K;J;~^fgXS`HctH$ZmmqL4Q$B~zNJJPj$IRIk04^uAncaCbAb5%Uj8k+eyxu7WX zkVSB?&DL!-c+~_fNv^8WbvkZDTg8|lEA@~^wiIt8X|9P=Mo|;FMqCT{aN}!zHFI9f z>9^qE+k>BT*Wyvs1!P`d8!t~yHQn>VilU%sEU!oLI2cYSJc+ufeXaW_z#j*-$l!NM z$1!H!f8gU#>ljI-cOFF=Mcm$Ef+Ryi(oM@#mAFm2g(0hsVV{Uz#H`e8W)SN5)hCKn zVF!MxDPpjAECXDFIEl7Ozu1iD$^tMvPH5b@jT=+5{6+K9m!M&lSn90kwNe;71s4wh zKNrWc8YZ*qa^ot8CowZ2;KjSpDVZ{JR8mzuX&K%rAKD1DFK!pj_=gM)mKN7;40Q0k zbtSdmr_KnVo1F-F&`WGWFQEfmo+{n05|OzdNAT_L8&pdTDkZkB6S0}KZ}RbUgO&)u z$KSXoWPV1cR`b@@vvyQcS>y+MI=`2clnq6`D`HEDam>bPu42&~#l40C{mFE*>lKY@ z6h;$M(VOQRdo_)vy|-^!_gv2o#674Q%8{l`d|nx!K&ongYua5<J!^C|j}w0J5&DlT z*OzVU`F{IfWWjPR$yuS2o>xUkvBJFk^&LhRxe7!R_DZG?iZ*XJ$#29^d<(fAfc0=| zH^xM+MR25JA~L)RX!03SRP2MGEx0jE=^Q=Jou%~5*iVP~iW*sHFRp=0a#>A+Q&aW3 zOV@_o0{W9(2cpgfHje~Q-{G#_3X`o`C{-+!l;KV^x~TR_Tp^m*T`I3&ZnSP-iD}UA z!V3cd4w*ZN;p4BlfJ6_NmnEKwUiDn5TQxzz_sQcw?V{Lvm~aDWPklsDH51U1D71XB zKM)fP$Gu%B9ncH)TrIf6@QO}w`D>$@J-7|4Rlxvo+r@;hHEiPfkS$+FB++we-9gw? zSZT=h2ep!V6rj@0pett%s%ZUhGUD{%LGjhsDe9NIHU(QEdz$@~vRm3y^!Dj&1$DY1 z>2EBae6+|Ku6yO0pT;W35k*0-<WX{G%!_{fyt}#zA%~`@kbkKBB0IcKTYha+F_k88 zwwmNx=LE2P|7o*L4G-V|Hxu8UQHTq-^<B(sge#X$0_th>V@FLM;uZD&ie?Z6%>(RY z@XO+grm@iuUz6s@9%nbzs-`!u#1+j3KD~SA)b@GnFfpjr_hQwAEn}vsEa%u`Ao~Be z#H<9U2THH<cpg`Bu#@FeQ*YnG3lFC9EL(p2g7VA~3v$g;cyILPDZY-dOh(Oclbp1X zsR`$h&<+|OuXzg&j-4u##>Al9U52U&3&tH9?M1e+S>Wlw{Ge;Z?VM&1wWV@UbgHI0 zv#63F4|PD^;M-KsvLfpM+Wnq1&djr@_cbAVsoQc`=vkpgaRlj}!Jk{cx4`M|rGvdj zWXbxe{Z80D5st+B9&5b?gE_VYbD^_WQF-Vf)3sn?02KjOMo>hM0I8I?x%H%?U;*gi z<JUT@b0JUDjT1jM_E<?dzL*`01qU03NbjhoV)t%J3ALQNM@T^)=Jj0Qj2F|nc4mY* z^jb{HrCCz-w!0JQP<mV!lUgTa2&Zewr}w?Q>@~J?FlD!k_;)tEhPqKjH6a|v!NTx2 z?g^4tU)P_##RMdKP7z05Z{HG0%))IV?|LgiEMK-tQ#MOK=~AV&%Uv5HIb_0O$$G!7 zkdZCONPGZBY$Pmjv4x0dKESJU&O$3`)VDn)j|Zm*Yx`b|VGW~&&LK;z2X5sPrjKbu zKwY9Lfp>#)vlMAa&UhK<`BBr((a?9eOKeP5alIqy>=wp{1?&$<U>Vby#CZpy$vUW5 zRHs{a2t<MTC6QPCR&I-Y&DFUi;u^Fs3zZs3J$-47J8-hmT;sFv3owYsI`zO)q5$9E zJnQsFP$rkf?Uj!$v>ooscOtgB58>HIKiWv%3ev{i!!ttoA&cC^khXpKwG|H}C{U84 z2j@&^xB_JWi5lGOB)QjKLGlA<4VJ3T8IsNqE|1w(LX@tT&+%3}n(%ucIxkM#{eW`k z_Ou_?g^+?SejxtzA|YtgMZ8)h(Lh~<WV4Xog*|?$OoBP^F^X>Ufp=sjlFkr55rQ)K zWTm&G)ae!JMSE>`kbWB_v?)wznDxn`fj+Oi-ROD!Rrrm{?ZQi?EZ%#U+X*xF+la9^ zU2&N3n{kQ)PceSJF}uAK)K7`JJI~rpd=1}TWDIOj@VRZver;TD;favhVE~{JaO!iE Uv+^zUZ-4+*MNNelmo0Ao4^5E_ga7~l diff --git a/dashboard/img/brands/znc.png b/dashboard/img/brands/znc.png deleted file mode 100644 index 08c60ac6d587cc6a11d1d1e625e10e40d7e0b762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33758 zcmeFabyQW|_BVd$6p%c0N=ckU9=cOPLJ2`Q91eog4bt5y64EIKDF{e6f&v0k(k;^6 z@Ai4_eeUz+-s|{|@xH(D`^Pgt&f0UYxz_%yHRqbOhv9cMly2Zs;etS*8!F23+Q47G zpTF3cz`t#h@Lu2#j=i#h69|My^79u3l$H(#fkZZ~boHI})zw51b~Ze4b2~F6kGqXM za5o4fF6C|yM?66~GngSCS=mZ3ZGC8BVz4roVA2y*hp5}jAuX+xJspuco*KFc&nE~G zb0#TCTyb|%fPoFt8P4EtV{Pjs>Mp_b2VYU(`_Id~ObmbA;`~H{N#^H(4EpMK8RYC7 zkqm-7Lfi-_6v`kh!UGkA@$(6CG4Mg4g1itBUMPec0u_ZqMEM{L|M)OT;sW2q9nCF7 zwdEE6F&xm6V6t>}wio5)b#rs$apUK)b9}@L6%i5Ph4At6@o@upa65U}I>X($ZJn6^ zWb#iw@<=Cyqm{k0m7OiaPrh(7I~QjOCZ?YQ{q_0BbJ^JcHIS{-Kd=K(<aLMJ^Fnzb zy#J|_IpVKA_AZXre@x9B!Hcv;+8}M6oq&GO|Jcvo($3k=$<pq>4EY!NzYYwniMsk< zWB<qb+SvTZp`Dx+TmcCF0qKA2>7?snkL1-xI@!56B9IEMz@sq#r>A$eviR5H{0~k) zDgSluNO!CM((NbZ&u)Kgg+EtF9C%hyIY%Vi+0Ied&dyr$&s}!+pAa(0$^Egb7})i! zY|ZW5oH)dJuXp*^djE?XQXcM%lmzyp5I01a8zQ6&<r9Spit@p@A%db1$lsX!dFM4A z>UQQ<79RhJhp;Gw|L;8hcIR~-fc%)lo#Fp0E`PuGZ+y%Vq84_JHgIQ2D;xMDB(J^g zBXQn;UHsdff9)z!IXi1RM_^h=Nq%wO|8)6pz5du~qAIpd&Tv}<Qbk@8xWHp&WiE>3 zgY)xQ2ncW^VS*yuf)D{=ZZn8Elp8KA#BXlS$0rCeNB#k#y87R{{~K$0JA}(mX#rUO zsaVYI5CHpsO-o2bKuACUV#Y1NFJjIOg(8KxMT8(i+;F4?gkKl|Lt2<Y|2fd#nEl&8 znvPb0-h*5J?Vg{{Vh#)@#3yJDMOavHn~T7p+~xuT2yQsU%#0g>v@o|Y6XA!8K>r%z zKd||?p_HwhfZgixw_ObE<v%o=4$|R&Ui~M*+UgGtWe<0BLjIIL38sGv;9n~3FOBuH z&mVFu3P=3ZZIXze;(;_5=lvg7|23_@dj6xE)xR(2{|<sb`Two^e;>om5^4J@@%oe1 zA9wwCCQf!1&Teo=q|75=hx~6O|4**}v)gs{;=Di40&A=P4;I1+?)rbX4F5Z+`oCO; zziX)f|CZrjyBJ{!w|#^(m*oBD2L9)T|J};{xt{-1vi_+M{#_Eqe;!VvfD{8e3jT-m z0HXbG*Zwu~pZDwkltycpKkgUig8(1EgaJPP==yi^^{xiL?)rD~^{)TwdC%6$S(5J` zqg}iFw_ZO_&_C6?4q)sdC4~e9`31#!uV232<F1uE(pq2M3edw&KlKTe5B85v*D3$8 zr@?>i`8Ucxdj7dse>2SfkitK&0%jjzaq|9Ua{ilu{-wwMUw--5BmKYRdX3lbL9PMv z>*jB`evQvH>TkHN0rKnSZ@7Mq&o%0AxUK>6>*jB`evQvH>TkHN0rKnSZ@7Mq&o%0A zxUK>6>*jB`evQvH>TkHN0rKnSZ@7Mq&o%0AxUK>6>*jB`evQvH>TkHN0rKnSZ@7Mq z&o%0AxUK>6>*jB`evQvH>TkHN0rKnSZ@7Mq&o%0AxUK>6>*jB`evQvH>TkHN0rKnS zZ@7Mq&o%0AxUK>6>*jB`evQvH>TkHN0rKnSZ@7Mq&o%0AxUK>6>*jB`evQvH>TkHN z0rKnSZ@7Mq&o%0AxUK>6>*jB`evQvH>TkHN0rKnSZ@7Mq&o%0AxUK>6>*jB`evQvH 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%0AuK$}9=?)@;==KJyKXk4ekBaTtkZ zhJESZnLQ%$e2w#iwft*5bh;82uZ$U3Xhm~AUb=;V(d;^nBh;@H9coty0q1CHYN~ng z*)i%CJ^?6ibRFU2Lq~tHssx`TsDA%GUbUbmRkvF(Vd7rUJDHn_)GtGyeqh_udU?y! zz{tiMznf%xOn03@ePZ#{tKD@f;X_*7ybnaiZq&|Dgen@SX2$3Q6D!IZgg5!5e+CEU ztaq>MHr<o-!zB8CfcdzxvIYoG0Ehq5)Gcc~KI14ASmxqs`O7ADt7Xr`g_`;|Pdq(= z3K+g0OeN24I(~SuzHbXlw~M0nr)VG1#E3`3Qz*zeoI|w6cLcz^Vc;MzW+E+t;zy5T zp2pAM1v2b>E5P^x{MVmOm=@P_abw!@Rt3{UzMRiW1>5m3D=q1+>bKbr@i|W2BS@wk zq54Obhe#-AT&{dqJ3b=az2I&($A%*v9kjcfNjzGnw;W2dj|RNhSwgzJvXZ@C_lOpq zoGczcfw<vy>7KS@5K~lr+kI4F?@K3reSPV?agcuiCQ&>-+!_OlmoApzn)NN6^Tj8# z!ux@RH^EM=jSAY5Sr}Xs+l_n{&EiP@5lHvUZF<f45>r__vnB!VB-LD?2CcWW9#wr5 zsF~D%9t}9ANlEv{Vxo84e=La~%O>FKs!3iNyJcWgkq}8fOtH)r7Yx?)*(HH_pOR92 zV&&D%S2^$rD+n68i4iHe#gO<Z*DyndFBLZ^#oU)c^(_IO2CG=qIdcgy4*QV>DTm#5 zfu3{e)_}}92#7J@0WWK~J4CVJ1BGTCAIr%W9X&KX7Di*+t_n)m-M)ED-@y#NyJRWQ z{^J|XM;#r@_mit0(UD%I&!FTaG!@{yX0sa#vm5*&YOL#47y4z^VzXUJ?FsTLabPpf zFLLhT4DUP(jxE$HR%_E^wqH&)3OClg3+w1mSlsi_e@<&oTw1?_2^hTbcr@>4cuKEq zY9zmgaR>#v*9=(-Xz^&y754km0U0MArv_uH<j`c5Ocs^E3guX1hnBJGaI^BT;x#K4 zVoXw@mqA-y23f~_&`5PEbv3T=BUfV}xTQ~?{M^Zyf>7d^$ko+VqJx{K;c)zgWaRp^ z6RlBajrF7$X;IVAs34ByJxq59SeE&QiMX3sVc|y_u86m<-N<fPlSz`B+2)j%`A${a zEIOXU23)4c#>xCC9dg+^Pr`JUln2URySG6PPJA*lO<pCb?Jh^hN*scHF83Y{uG3;p zbpmk<n-$x(17WX-BTnM8x`sf9v&jp$i#u+aD<dtrFh-I^ldzSB<mb=r-QB}p+dVu` z?N+hCR$wrbeHSen6Bo@``c16o;G$kq7Cy4^pgW5=(yoANU|5CWeRsg;Mh22c$2Aq? z<rKBnZ|qE6T*&AzyF-DB_gNSZ@Z!VWj8vJTp_V(m4M0ZjA);^QA<Y%_9tse&IKg93 zRly*{74EIz0`jM%cNFkX(T1sAR_n;kJIyz>-ifj5EcU0Up5fB)ePY(ymc@0rSr%@b zmP))58k%*x<!xeyUYCPuYQ6Z2P}P7klAFZ;CwU8o^ob-k);Dl?*u(5>4NJ$CVVf3` zsT39$7csXm2QXlNzs{|J>++6eF{#YAGoSyq@BzMb=Xu^TMl{#LPVpz8*XyHJt6_F- z7JIw97!F5pT*g_j5>_n4pDez~rKF7@)RXzgiSHPi9_3s<%Y_$=bn&1F$QvfAJd&eO zvd+L;te7UJaciW>AY>r>Mo6ZTxbnsoY;JDi#K|?3%VoHX9~FxWOStYm*Fn=Xj7MWh zDmTC}-j4eIcYqJTEdVGL(eYJ?EE*9;;}O#76xL3j<P9ATdoU7)oMaIyfJqfRjy2t? zTgJ_CI-L&My}F?U`2@Cd3^_EAY$3_)iy1@LbNGA?!z5lkhy|pPMx%jOFTaXwue%nt zS`DUY!m>E8;QAY`$NN9<epr@;ot>TF-kfXl4)FTlhPnX#jyvuQ3PYs2fEWbTCngxW zj^iheqtU2idut21Tvj;-L`{Ggf1Ht2h&t($hG8I?NMJY|24&RbmynYy^fnP>*W+YW zVs3BSR-nNb_9#9&j@G<J6zz5!Z@h5@<#H*IU9)W)j_YD+aS@hd<B^B|DQuKUn&c}@ zy8pkx^|5}(m+ra%l9fWGB4G-50e8fB6XIgAh)Sh`!C-`~tqqS^qseF>sbmilcH&zL zER&`oVI+`9CcK?yh3#MjGxe5nJ|HENBmqW{1X@jsqd8<w&_J+l2fI5vxP19C>icyR za(OH+FQHs6VSj%g5C7yLJpS0@A-EI}Y~Ou2fPTlF=PxjZ6vdd=aNZPUP{uGCjZvGO zMY&u;w{wVYw;SvdZf1mPToNW;jLRppK7!dJB4pAT=(^@joEhzF7$*e92x|R_%Un2? z1Ispf=XkY^D^a9hqRM?Cje;!Z>%Vv%uU>u??M?^XZWq~177zaDL0tUni|F-w&^@M* z%*#LG{=fa}WBSW)T<kEgB1IfPITIMi<!3HKp~$uRzW@F2quc37?c3uyhV&NQEaI;v z5(%{1ZPe=xxULiO1|?n?35Xm?W$3QM_4l}jzTbiCH~aB>9FK-WfHd54%gxx_+{BYl zK8cx`nP0YR$G_xHm;UmvE_Ohy7+=Z5qO7T)5ppPur0Y7E%kcN#`yRHpw=p#}CG!PY zxGN{a#sM6I_^zDXy7YQI?C<Zxb)BGGTMcj3&L&)o$AatHia5+~9%qYf^msK96X<pC zdK{pu#62vUKW8ie_C%5A;0*Uj6N!X@&wt_bSY2Jk_V$iaWGeK+1DgO)3H4}T3jK^p zS;Shc#>FhX1QMx}FX#z5jxDrUp(vL`<(K@5`E~-=93Uc$%`t4Rf57hwAHWcIB!T3z zub?nf_=MP~i4hp_F4rT+L9JH9C;!za0RrB<autO_L29NDE7BZSek_G<VV4P?f|bwb zJweA7Mx&uXIhW5mf9Ho-0!dJZDA@cP*WVL3Of2;ucxUVT-wu5M&7a6v!zlFXV^U7t zJ9~*qo^HKf$I{XgZoKhEEG*1(gw3`hgic~{usw_Q-Wg;a08Tk~P%MR%bH<p=Szz#F zTlmfwtDWNNn|^2W`ELgwK!oHZ6>tBvjL~$G`1ZnNk_VJzGFjYu+ifToOP*qu8(mlv zc75D$Ra&>}0=8wNSS+AYsqmr<;i&M*8jj;iV33$Hrr(i#{X2bKlV#v#(nPSc6!x{R zB_vnsgsaOmO=v{8<<^@~tJQGOI*93BIa%45y_LWth1S4VIX49PHPbYM&nbXjl&zqM zVKL>*{Ga{0CTadjZOc5JFR@Bk@Zr@M+ed)OgK{0$MWIl@r>_4LPMto5dZQr_Nsbb7 zoXjFpfBdv<E|){4QVA-P9oLOCRfy#MA$LLjUCrnJrq>O_(BU||JI3T4D8jAb@gPL@ z63`PUdmkQRVPOFu|HQ}PI6mb($xZfzegrH=QZ+6UC{oVB7}D7cip3&K)53T>g3@3( z;(StUPGQ1n^gr?6wav{<jK^axx+pYF@IB*zGRTzTP$8QaQoQ8v(TLD!G*GM6@R`qi z2Gwd6j_bm4>_CE!iOCzaNL36yMV63IiQu{}Ov}P}JVvQhLbY1)ym2Ps4U@WS#Bm3H zpRViUv3;Rdn@!El&+)!=E<!00gl*#aoXc=A6M{>%Wx5zKSf+_&inm@_zq*cgyNz@z zDSHG&GFKp60g`H#q$R{0*tX+&`n>!*olYZ>NMPV|_W>!v6$^F0OY`-=6+S>Vo4-)6 zH&Vr75vwaJJcS8SvV}<rB2uVWs=6#G$A-w>O&AHRuCAilY~t#h>nIcou{u&D!n>j* zt5E9gI1Vh!j%jbpVdGRPh2bzppMaF;BG3|e_vPz<D|~>N*|`g?Ml;oEw~@}IF*i5I zCDB~jOIIhEvH0K1d*6!|C~Sr_U75!8^fZQ}5jHos0=ZQA-V6%YOiESzT77<a>C?vi zP**1n$y5@CC%|M{7Ek;rEnP^#0p4}_`rig0V19n_0+E)g*Xw9BnwXlNLZMJV!Y~2{ zOB}c``7!}>mgGaC2hyNF!2H4js+9_wjVAj2z9gI+%lu+u)vnEVzRMypK8c-17(*_b zgQjUb3FJ6JV@ky00Pn(l{X5SGsLjk>&~!be>pFV99yT{NQJbw{YHCVy9;EOgZt_)D z7Dc4My%z6;ey@*QK99AvHC(xJ1;gPm(otJR1bMjUlQ@EjC&f_63Bdp-&^2Dv8Rrww zyPLQF&hr6kwS@~Hr2K@2X`0yF+QRhoG!_?^U|M5^a6yReTpXt_D^kK01ya{>Kp>nx za~eC_JJ{LTK{lI>MT8hbxQhkqmJ;b9PF#~qzbBAPCIe<skS~BLe(|o$*T3U@0KGOl z&vgR5-#d<jZs!mO2M5SzvRFR095z6RIgfpaEjVK+W<?MbLP*F7$YwK`o0~(g*T>a2 z-$X8#6WYgcfeFj9y%wzy^nBPv_*m5))HE&VFy<G1Xd+YRcZkRTHvfIB*JkG~0F(;N zBiFO7*X!tZyU6A8s8pt*X*wK%mxq{eFYe5jCSNc|zT;+^CT3@6Q7jkH@Ac7WHa${_ z4#(k*lU>J^l(k5Kb4hVYC<6C-VwRpDv}IecOiNKOdspV`-|6dPy*9gWfw532l)Ta~ zP1DdmXk%}07nMqdJBA4(z7M^pDJxR3Rf4G0FNne(g1%2MGc$wv`FZT_>|oFzcqB^( z7Bo~+Om-k;8@|+}>nsqYV#s--OF^a(@|pR2hXd4R=PocHMT|*3fHX}5fiM~kv9Z36 zx!GCF)M{QUb7in88vOZyF&AzmDJ9E-7VBZJz43UAR4RqFwUc=L_1DpCHjzjsBg$K1 zOFa>!I_kRUU;1rg5=J5vdhnm+_Yw!F&0Qc+N*J*abRpg|XgC;PcXtn^QVFZ8D;W87 zXC>Vd+v*fiq=@2>9~KfmR##V1uQ#x9bshOaK7@q{Vi9w+QROdt-2;n~9$4fz#|$`+ zzfU+oZD#%gBcw>sh7)%Md7U;IjRv}%4zk%S=I7^ms@Qc9SM0}pYM<(wtEYp2D!CqA z+i@IBO--R%tza-1Vtw7CoNFO_jleh?DK4?|OI&9jjVqZ-Ael%8E$Mx&zuzw$V0P~R zmJZNBb1O{pYnld)G}IdnG@C6H3VEb686*;h0NgN01*VZ59#ePd%gMMd9LEim$A`lq z78VvTJ<atA#-_=A0ioYrBo!^;0B?02K?~cA=M(sgFZgFfzYjP-imrRl`!@g-!$b>{ z;{Fip=Rgc&47FMf=gytO;?jagvvvjEp5mG#<`@uy1yOf^6t-=lP(ZKO!?(ZvHy8~1 zNF`HI;0dut=vTUK7zR3>Hum@Hyv#dp5FwyO(K^)M)$85=e*lg@efEp`HO&A3002ov JPDHLkV1fW{+C%^V diff --git a/dashboard/img/favicon/android-chrome-192x192.png b/dashboard/img/favicon/android-chrome-192x192.png deleted file mode 100644 index 05599c92ff4b256b29eaed3e5cbac8db0ec3de80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5277 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 TG!)W77r+f|W36%xr<nf%2wD)+ diff --git a/dashboard/img/favicon/android-chrome-512x512.png b/dashboard/img/favicon/android-chrome-512x512.png deleted file mode 100644 index 0835087843744224fc987ff49706d8429428a6e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17038 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 diff --git a/dashboard/img/favicon/apple-touch-icon.png b/dashboard/img/favicon/apple-touch-icon.png deleted file mode 100644 index fa62f0ed28aa2d6882734ead633f3999b027e9da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3200 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 R;R)0QVrT7Sb&2Ym{%;LwI;#Kx diff --git a/dashboard/img/favicon/browserconfig.xml b/dashboard/img/favicon/browserconfig.xml deleted file mode 100644 index ffbd3429..00000000 --- a/dashboard/img/favicon/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<browserconfig> - <msapplication> - <tile> - <square150x150logo src="/mstile-150x150.png"/> - <TileColor>#222222</TileColor> - </tile> - </msapplication> -</browserconfig> diff --git a/dashboard/img/favicon/favicon-16x16.png b/dashboard/img/favicon/favicon-16x16.png deleted file mode 100644 index 6ce66812f75171a28d2cb174dbb3397753a9fe3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 775 zcmZ`%dq|UU6#dOd6XzpaU`63~HaEA~*5{mB!%A&S*PN|wHZv*L_Brk4Twj@nIql)2 z&>*6RR{mw9L=Z=XLQol03WWt`L}+29MUfRzRO|E4{^*Z;4(DDD=U%ui=7QYl$R&}4 zkZ41m&cgBhxrzwoP^OHvaunvyHf0mi*Dm<w2<J5A%(IvXsg)AqJ4(n;uH}12$bOoT znNmWu=Lm`SbPjCF<OZYWe4CyE1rfkuLIPIOu&;+)iX;h+yWy{gHU$)gLLCB4IJ6xS zF;*yWo<(;Zv}#ZZD7WB73*4KKnTjiiadsaP#i%QVbsfYa<gY>BF&ryHQX*7xRF~ky zPSD9*9+H!AYA<>kkduMlBN#l1{^QWE!ZstWH>0Wut2MaUik?Pfr6Wy+t{PlE2#pfb zL>Sj#OD;@nv9A~<8=z64Z8sEB$RxpFFy_v7?oz^IEd|yO)5QnU=EM$Tu1??9@3(V; z&l*g6{$vP0R+iW~9=3>UT{P&jZHt~1K6)F|m=#4PcE#D5X8%Oiy@po7_m`i7`7_H} za)W{2qup{R6|Pu5e&s0}q8=~VHcwGL0Nw@tHP^7Y*B19Dt8Hs4<If04dGyz)_SnGl zWx<XuH^#>J5w|^>m}&l`OWPrQEGnKgUH6W4C@1&UuM{;s`QiO`dr)7!K**D)Pu#7& z6~cS<X6t^l?en1D{Gy&*{wSCV|9HvEEh=I4MXbxgGFqpX;fSc|lnf=UR?-=^lr*h| z)~2Q>(<xe-{__33`5(icN>@c$&HoLJSFIm7!{WIFYh@W*?eH=r+f})Pp$vN*ZpOkm zTs2h>n7P-n*V>9$i=&$Icq_{)b~6-P<6)=@59=i4VCU=EsEDe~GTFn8!y|?%3kekq zR8E0VEHs{87%HT6KFwWMsJP!o4L^H&e`sWA=@5U|m)EsHMP}mT*x8)4Gh75Q=nHhc IIi-z%0WWg;DF6Tf diff --git a/dashboard/img/favicon/favicon-32x32.png b/dashboard/img/favicon/favicon-32x32.png deleted file mode 100644 index 863e0fd887360d4842d955de79685a08999996f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1075 zcmZ`&c}$ac82(|o?*${r=J+1UQ9$4;Hx(Q$tx(EQ$~g(6m3}Zrkpe|1$}FYI;kDo~ z76BF5%#g9ksg7kv*)oo>8C?cjVqnJ1p-YDR;RI**k^Qwl_RIUePu}Cn^X5%{?edId zCwnh@LWq+zMXX?v+HzYC8^r@1-?Cs?CQKI+a_zLkOO@4Dvm`~4PDrCaAqEp68*It& zn2<V}kX0oif-XYbwcR(f;t8=xmZ#-NcD}ij0`;%K2V0NpgIzrMalr+YY3M$Ph9U$7 zY)y${akUvYk7MK*Bm&CY8v%Z3EyIltT<^e@_YudZC~xFSFnSD=?WisQDA2*^szq-- zB12K0jqz3#r6N88pETj522CnlZ^v*8QWKE&7Ctwju^7HS2oAsp2QY9Lf^Zb4VZ05c zS%?b5#Ri<KL1-Xq_hIBH6iE=rp@o6JFIeeMk3blMq*$mk!N?(vN1g;#`G}!$xe+&x zW6*$z5RA5BUkcd$$68S+g=`N_R3OkF!$$0h!ca5x@4%Of7Bx%^N;1%Y2or5MTaA!F zd|^VC2(@pcryiBL2;rH{X4iF(RQA>!ogyRq%I3xi)lepzTI`o4i#78W^lmn>(Mi)K zHY?j~TzJ0SOO_sNTOkz-b7JR?-Yd)A#&@+|Zjog;tF0_+jnj*-_w_ny3S3=-`+V}A z{$W1y{MMTNLhokCnX>2$`ZB*6?w4niJEtteQrq%7*A9JrCz)}-w87~Sx|5>I+JW62 zEd?(38XwwiPb}`N_&aFB<l&*#yj!rWG_Bv|QyzvjyOZhGf%b>9cSZGB8!fs%O1~D@ zqckjp(UsM9ax&++FltmL4h@A*Oq}A>CCMH|H!I16$m^E}@Hb3lEjy|v$qwH6k)^Lj z4n!};h+_Xrm{I)t=i@H^L4{?ZZF2`LjBJ{{kee_niv5~gO&U8t){<xYVcmN+r=0iN z{+zqywM2f3QT6+bPkG+{EKd8xz5d6|z5Q#h6;3}muJE0m6HSA>+3)Y)zPOU<C+xnp zL-dX9$_pzSd4tn$4>T?>XZl{fTKk<FYFI56lyfTQWIf3xdUK(<>h6o^>3ECDAok#X zI!S>}t<o`qk{X5u5>E4DLg?@iIwpr7C5WU25z)akUqI9A&!5QuL#V7$mzV1QpI{u! ze##O&w-mCgN_F+B8iokfRr?uATB#~y6pTu(ubyGpZ$|PPa|(0{RXwGxsVXhkFqBTO zWvFtku7r?=?uXADZL9NmyxGjTdFdks;cy*7OB~#|Zn87mIc}8L5P3(<;g04|bBp)C ko1UM3W7=lUka8(Cl&reHrh6ueI>$;7sU$-@EK(Z(0XrUUasU7T diff --git a/dashboard/img/favicon/favicon.ico b/dashboard/img/favicon/favicon.ico deleted file mode 100644 index 81a752dfab02d1e2c48761b752b369a6c68f73b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmeI3=W-NB5XYCYAAqm83ho9GM3#sWCL<ALlMDz92%DS?0&J22k&(eJCmhN-l)>2s zXFrOo`~*A!d>Hp{XXkEiZ}+r!>`ALCt7^0tcBlUxr)Rp)^M-hjc}-28T=U+Y(VjQc z^SpdMct6zh{*}*$%9Zc;KJIx}<%UMNM;`IE%iweWZ<M*X|A##>Z0(5Lh=1}buLsir zv&F7PDm@s7mHS}C4rXgFspD5l=khXg(5Rno>wzD<W5+AKaJACQpH;fKRq)q|ht%;4 z&M|`h`SVI&`$g$j{!selCrZy;D0&cmq^;+)@nbV{S15h;p3=R7z4v#eZ~Ue7zFy(0 zF?~JM1OJ@mg8#0;4t@r@Sh^{F9i)vPJ8zt*^x-$fcK$5#!0Q)3P<rCjbp1IBKmHdt zlGrbHzF?Komwyucferb3kk{)ErRxJx_{UFCddkf5F`-%Mk)x8?aKmWv;d3D!2>x?- zl%6p^Jv(yok8DtSWtY+?J{CH+%g5=@mEL$*>CyOMAL}(bm_AqOvtOAQWc>g;+HpbY zQDgd^qc0kKZ}CG9x%7N1@j_@2_sWKRjvp>wmrQ=x;JW=qAFwub<!7@tq!CXoe%8q) z8$+~$*kNVI72eQ6658OO(4_S7_d|9ha~yd~>2Z^g-=pcl#lLKGGW?s4Cd2RRSM-Wp z{Pn<*$MxToUbQp(_~8M6*?T>t1F=v1sk!CRc&NAhtqxk-mA)Xpg-=;~#Fw|8l$a)Q zgZpY3F8-yR#knnw@D=;->`rb!1x$i*^YIXV;pO7@N<X=*hWP@1Eq?s5wN2?uKbGp* z#cySYpOEJiuqBWke#)A1>eJHs(ZT*3k{gYa`D*ZGiythkIU8hs?D@v5oy0jiSWA%= zc_sNlO|*pPj_pcc|Fu-l#AIZWB&LOB=Hj<JOr33Xfz1|%=!W$OU#vCe@f^Ir@J6`~ zUiwh!Nz<yIJB%M5po1);MwtI<-!td@r=oMC4YICOJzsF<Q0;S%azA$ZTtsek{%hIi zEHH9QI)9Y>lRjJPedr)AH`;lry4+|W@WVGYT9zBh`b@l7v^Kd81`>Z<Zq$8Ca-+$H z$G&ttQ22cvh#f82P@Wt0N^Z1zSN8G4LtJij<_pP<B#z@Nm2@zW^0zvO%Z;|34)%M( zXB-a$jo-%=ksGmZzVw6AoMlwfK^E{6i{f&l1FxF%u(*6B3;3-a#pOoJx5VopGx*7k zCP;4ddU<Yi;v>n8rbox4tl+mgh{}z~+dGd$`*4=<!$Vwd)FZjktVQK^lr{X7a--ds zB{v#ds)wxM_w6VyH@aJX_LNopak<gaca-LQlbCCGH8n?GXK7$Zk-3rNsB89QA3w76 zbE9jacq*}obE7FU3=dhfA8QBbfHRTsxe@#S#j;1p$@f{t@AE-!bgWbd;HNe?81Un# z)NBsPy3AP==cb%Ra`sD3lzI7!ANV{pOZ}`<>9%J|&#eaoe(VSyuos4no#yjw#!u_R zeO-}1JrI4}m(}mx9u#X!gXL<m_s|S9#O(<B|8;*zpa&u%clxyQG8V`v^l3>iSNL!E zh~c-zwjRom7|^fdVL<yq&3+i<d$m3<{62u^s-G9S)XW=Yz4B}45=*O|!;inU#aZeq zn`HfG4@>U=`>Xz<PyRG(p*gFk2j+_G9~P~V^+P_d7K637YMx`AqNYLr5OpR-_uHlG zZ_@c(`u_SSc@=d-JKQzVos-YqbCFu>zLtK2*b=oS&e?a#e$tMocSyb++FODH`eU7Q z4bB4mv&q)#^Z@-_F0W_IlYIC))6;}b?Vw+1-b#}nxcvJVMBno}#15pk$hjPP*mkNq zf3WnSaqV7d{ms@W{ko*|A%yAk-al738`yzhxR~H<(4EJnAFkymp^wc^n^Wv3K?VnI zCa-&1`t+97!oRNvv4wT}in60_Nq=AxfAs0+^SWu4?B6~MdQ^l5>sQoVTNYQI3tMDg ze(b&Cb4lxt&}YC0bm*N}v)c@61)TFHiLdb5?$jLc2l`Q5T}Qok=`%+zG?K{B&WoS! z3HHU%r|w6btTcy9-_BF(6*}&|79H-Acv7jSDNXu5?uKArD*O`@SR2?=$H^dV`q(08 z5boM=^j3V`EN%M80A4$~O8W`0X|RQLTMzo|pTldz%U>!@|3O#}b)g@~AiOqooi6v~ zdeKMD?%H7MM#NcH2KA&5o$%UlQ0hMPaHAvNR-E`3wv9C2V{;{IgPakq*jki9J^45M zm9Gu-aZV2EF7>AGV-P*GuP@f4{kloF$X{Yrf6xa*cx|AMmHz#lti51JL)Vq&z!qED z%$X;-9eLgCcA+o1Uw_c|v5CCNnaK_4&%+P;Oa4|i<n{DQ`THgDjevgb`%lrWojdV0 z@O|zV`VR(r{~bOL=<oNOQ*bPimr*#Ukl&hx|3p^zqhw5s^MB7HHXikTAm_+u`Hp%9 zy}ZQgs5QDUC-x#Vpp^?~aX+z)e)5B_Rj%oihq2G$_ZHN1ZOssy<Sd^(<cbP4b$YXi z8^o`RvRAV`Wj+SUdFa6;?}@8vQ)i`j;^yBb7SbPL*Fvr<w;2rdu@-oC?3>=BEhkK0 zXV)1M*9-CzIoO<oePnb^*X*nDJ$Me&0K>cv)2p@nN>M)H`zpO>AH7}ngVprYyYqno zJ3!9I-Yu;uy7yIjjZD_=HTyBQrdR11_dA}amPvm+c17N1?ajTf(rfr=lQj=HpesM# xIl8R$to_bkv#!cM=8oxkvY#it!bek!@h#4);{3PLe9U2ftCznYjtAAg{}1DgHRAvP diff --git a/dashboard/img/favicon/manifest.json b/dashboard/img/favicon/manifest.json deleted file mode 100644 index 8177a629..00000000 --- a/dashboard/img/favicon/manifest.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "QuickBox", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} \ No newline at end of file diff --git a/dashboard/img/favicon/mstile-150x150.png b/dashboard/img/favicon/mstile-150x150.png deleted file mode 100644 index 022320f75b5c98c6ce4537b0e394d2d486e50227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2688 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 O3TFp~{S{l^BmV><LQuj0 diff --git a/dashboard/img/favicon/safari-pinned-tab.svg b/dashboard/img/favicon/safari-pinned-tab.svg deleted file mode 100644 index 91e285f2..00000000 --- a/dashboard/img/favicon/safari-pinned-tab.svg +++ /dev/null @@ -1,24 +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="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000" - preserveAspectRatio="xMidYMid meet"> -<metadata> -Created by potrace 1.11, written by Peter Selinger 2001-2013 -</metadata> -<g transform="translate(0.000000,16.000000) scale(0.002667,-0.002667)" -fill="#000000" stroke="none"> -<path d="M174 5976 c-65 -30 -120 -85 -150 -150 l-24 -51 0 -2775 0 -2775 24 --51 c30 -65 85 -120 150 -150 l51 -24 2775 0 2775 0 51 24 c65 30 120 85 150 -150 l24 51 0 2775 0 2775 -24 51 c-30 65 -85 120 -150 150 l-51 24 -2775 0 --2775 0 -51 -24z m5335 -591 c59 -32 112 -90 137 -151 25 -59 21 -173 -8 -254 --19 -50 -2301 -3974 -2452 -4215 -44 -71 -103 -133 -151 -158 -59 -32 -201 --31 -267 1 -99 49 -166 142 -175 241 -7 81 21 158 115 313 44 73 591 1011 -1217 2083 625 1073 1152 1974 1171 2003 46 71 107 130 157 153 64 30 184 23 -256 -16z m-4114 -2900 c40 -21 72 -47 97 -80 66 -86 69 -111 66 -482 l-3 -328 --27 -51 c-36 -68 -115 -138 -172 -153 -29 -7 -173 -11 -414 -11 -421 0 -432 2 --506 76 -90 90 -105 156 -105 489 -1 225 10 348 35 397 47 94 121 152 213 168 -25 5 206 8 402 7 l355 -2 59 -30z"/> -</g> -</svg> diff --git a/dashboard/img/logo-dark.png b/dashboard/img/logo-dark.png deleted file mode 100644 index 4063950db94e0692cb83031ebc6bd1a35a585442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21111 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 diff --git a/dashboard/img/logo-light.png b/dashboard/img/logo-light.png deleted file mode 100644 index d00fb80d54ae1aa7391a72a518bdadff5b009a2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21057 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 diff --git a/dashboard/inc/config.php b/dashboard/inc/config.php deleted file mode 100644 index db0d8a52..00000000 --- a/dashboard/inc/config.php +++ /dev/null @@ -1,557 +0,0 @@ -<?php -session_destroy(); -include '/srv/rutorrent/php/util.php'; -include ($_SERVER['DOCUMENT_ROOT'].'/widgets/class.php'); -$version = "v2.5.0"; -error_reporting(E_ERROR); -$master = file_get_contents('/srv/rutorrent/home/db/master.txt'); -$master=preg_replace('/\s+/', '', $master); -$username = getUser(); - -require_once ($_SERVER['DOCUMENT_ROOT'].'/inc/localize.php'); - -// Network Interface -$interface = INETFACE; -$iface_list = array('INETFACE'); -$iface_title['INETFACE'] = 'External'; -$vnstat_bin = '/usr/bin/vnstat'; -$data_dir = './dumps'; -$byte_notation = null; - -$dconf = '/home/'.$username.'/.config/deluge/web.conf'; -if (file_exists($dconf)) { - $dconf_data = file_get_contents($dconf); - $dwport = search($dconf_data, '"port": ', ','); - $dwssl = search($dconf_data, '"https": ', ','); -} - -$szconf = '/home/'.$username.'/.sabnzbd/sabnzbd.ini'; -if (file_exists($szconf)) { - $szconf_data = file_get_contents($szconf); - $szport = search($szconf_data, 'port = ', "\n"); - $szssl = search($szconf_data, 'https_port = ', "\n"); -} - -$zconf = '/srv/rutorrent/home/db/znc.txt'; -if (file_exists($zconf)) { - $zconf_data = file_get_contents($zconf); - $zport = search($zconf_data, 'Port = ', "\n"); - $zssl = search($zconf_data, 'SSL = ', "\n"); -} - - -function search($data, $find, $end) { - $pos1 = strpos($data, $find) + strlen($find); - $pos2 = strpos($data, $end, $pos1); - return substr($data, $pos1, $pos2 - $pos1); -} - -define('HTTP_HOST', preg_replace('~^www\.~i', '', $_SERVER['HTTP_HOST'])); - -$panel = array( - 'name' => 'QuickBox Seedbox', - 'author' => 'Everyone that contributes to the open QuickBox project!', - 'robots' => 'noindex, nofollow', - 'title' => 'Quickbox Dashboard', - 'description' => 'QuickBox is an open-source seedbox project that is developed and maintained by anyone who so choses to provide time and energy. For more QuickBox, checkout https://plaza.quickbox.io', - 'active_page' => basename($_SERVER['PHP_SELF']), -); - -$time_start = microtime_float(); - -// Timing -function microtime_float() { - $mtime = microtime(); - $mtime = explode(' ', $mtime); - return $mtime[1] + $mtime[0]; -} - -//Unit Conversion -function formatsize($size) { - $danwei=array(' B ',' KB ',' MB ',' GB ',' TB '); - $allsize=array(); - $i=0; - for($i = 0; $i <5; $i++) { - if(floor($size/pow(1024,$i))==0){break;} - } - for($l = $i-1; $l >=0; $l--) { - $allsize1[$l]=floor($size/pow(1024,$l)); - $allsize[$l]=$allsize1[$l]-$allsize1[$l+1]*1024; - } - $len=count($allsize); - for($j = $len-1; $j >=0; $j--) { - $fsize=$fsize.$allsize[$j].$danwei[$j]; - } - return $fsize; -} - -function GetCoreInformation() {$data = file('/proc/stat');$cores = array();foreach( $data as $line ) {if( preg_match('/^cpu[0-9]/', $line) ){$info = explode(' ', $line);$cores[]=array('user'=>$info[1],'nice'=>$info[2],'sys' => $info[3],'idle'=>$info[4],'iowait'=>$info[5],'irq' => $info[6],'softirq' => $info[7]);}}return $cores;} -function GetCpuPercentages($stat1, $stat2) {if(count($stat1)!==count($stat2)){return;}$cpus=array();for( $i = 0, $l = count($stat1); $i < $l; $i++) { $dif = array(); $dif['user'] = $stat2[$i]['user'] - $stat1[$i]['user'];$dif['nice'] = $stat2[$i]['nice'] - $stat1[$i]['nice']; $dif['sys'] = $stat2[$i]['sys'] - $stat1[$i]['sys'];$dif['idle'] = $stat2[$i]['idle'] - $stat1[$i]['idle'];$dif['iowait'] = $stat2[$i]['iowait'] - $stat1[$i]['iowait'];$dif['irq'] = $stat2[$i]['irq'] - $stat1[$i]['irq'];$dif['softirq'] = $stat2[$i]['softirq'] - $stat1[$i]['softirq'];$total = array_sum($dif);$cpu = array();foreach($dif as $x=>$y) $cpu[$x] = round($y / $total * 100, 2);$cpus['cpu' . $i] = $cpu;}return $cpus;} -$stat1 = GetCoreInformation();sleep(1);$stat2 = GetCoreInformation();$data = GetCpuPercentages($stat1, $stat2); -$cpu_show = $data['cpu0']['user']."%us, ".$data['cpu0']['idle']."%id, "; - -// Information obtained depending on the system CPU -switch(PHP_OS) -{ - case "Linux": - $sysReShow = (false !== ($sysInfo = sys_linux()))?"show":"none"; - break; - - case "FreeBSD": - $sysReShow = (false !== ($sysInfo = sys_freebsd()))?"show":"none"; - break; - - default: - break; -} - -//linux system detects -function sys_linux() -{ - // CPU - if (false === ($str = @file("/proc/cpuinfo"))) return false; - $str = implode("", $str); - @preg_match_all("/model\s+name\s{0,}\:+\s{0,}([^\:]+)([\r\n]+)/s", $str, $model); - @preg_match_all("/cpu\s+MHz\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $mhz); - @preg_match_all("/cache\s+size\s{0,}\:+\s{0,}([\d\.]+\s{0,}[A-Z]+[\r\n]+)/", $str, $cache); - if (false !== is_array($model[1])) - { - $res['cpu']['num'] = sizeof($model[1]); - - if($res['cpu']['num']==1) - $x1 = ''; - else - $x1 = ' ×'.$res['cpu']['num']; - $mhz[1][0] = ' <span style="color:#111;font-weight:600">Frequency:</span> '.$mhz[1][0]; - $cache[1][0] = ' <br /> <span style="color:#111;font-weight:600">Secondary cache:</span> '.$cache[1][0]; - $res['cpu']['model'][] = '<h4>'.$model[1][0].'</h4>'.$mhz[1][0].$cache[1][0].$x1; - if (false !== is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("<br />", $res['cpu']['model']); - if (false !== is_array($res['cpu']['mhz'])) $res['cpu']['mhz'] = implode("<br />", $res['cpu']['mhz']); - if (false !== is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("<br />", $res['cpu']['cache']); - } - - return $res; -} - -//FreeBSD system detects -function sys_freebsd() -{ - //CPU - if (false === ($res['cpu']['num'] = get_key("hw.ncpu"))) return false; - $res['cpu']['model'] = get_key("hw.model"); - return $res; -} - -//Obtain the parameter values FreeBSD -function get_key($keyName) -{ - return do_command('sysctl', "-n $keyName"); -} - -//Determining the location of the executable file FreeBSD -function find_command($commandName) -{ - $path = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin'); - foreach($path as $p) - { - if (@is_executable("$p/$commandName")) return "$p/$commandName"; - } - return false; -} - -//Order Execution System FreeBSD -function do_command($commandName, $args) -{ - $buffer = ""; - if (false === ($command = find_command($commandName))) return false; - if ($fp = @popen("$command $args", 'r')) - { - while (!@feof($fp)) - { - $buffer .= @fgets($fp, 4096); - } - return trim($buffer); - } - return false; -} - - -function GetWMI($wmi,$strClass, $strValue = array()) { - $arrData = array(); - - $objWEBM = $wmi->Get($strClass); - $arrProp = $objWEBM->Properties_; - $arrWEBMCol = $objWEBM->Instances_(); - foreach($arrWEBMCol as $objItem) { - @reset($arrProp); - $arrInstance = array(); - foreach($arrProp as $propItem) { - eval("\$value = \$objItem->" . $propItem->Name . ";"); - if (empty($strValue)) { - $arrInstance[$propItem->Name] = trim($value); - } else { - if (in_array($propItem->Name, $strValue)) { - $arrInstance[$propItem->Name] = trim($value); - } - } - } - $arrData[] = $arrInstance; - } - return $arrData; -} - -//NIC flow -$strs = @file("/proc/net/dev"); - -for ($i = 2; $i < count($strs); $i++ ) { - preg_match_all( "/([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/", $strs[$i], $info ); - $NetOutSpeed[$i] = $info[10][0]; - $NetInputSpeed[$i] = $info[2][0]; - $NetInput[$i] = formatsize($info[2][0]); - $NetOut[$i] = formatsize($info[10][0]); -} - -//Real-time refresh ajax calls -if ($_GET['act'] == "rt") { - $arr=array('NetOut2'=>"$NetOut[2]",'NetOut3'=>"$NetOut[3]",'NetOut4'=>"$NetOut[4]",'NetOut5'=>"$NetOut[5]",'NetOut6'=>"$NetOut[6]",'NetOut7'=>"$NetOut[7]",'NetOut8'=>"$NetOut[8]",'NetOut9'=>"$NetOut[9]",'NetOut10'=>"$NetOut[10]",'NetInput2'=>"$NetInput[2]",'NetInput3'=>"$NetInput[3]",'NetInput4'=>"$NetInput[4]",'NetInput5'=>"$NetInput[5]",'NetInput6'=>"$NetInput[6]",'NetInput7'=>"$NetInput[7]",'NetInput8'=>"$NetInput[8]",'NetInput9'=>"$NetInput[9]",'NetInput10'=>"$NetInput[10]",'NetOutSpeed2'=>"$NetOutSpeed[2]",'NetOutSpeed3'=>"$NetOutSpeed[3]",'NetOutSpeed4'=>"$NetOutSpeed[4]",'NetOutSpeed5'=>"$NetOutSpeed[5]",'NetInputSpeed2'=>"$NetInputSpeed[2]",'NetInputSpeed3'=>"$NetInputSpeed[3]",'NetInputSpeed4'=>"$NetInputSpeed[4]",'NetInputSpeed5'=>"$NetInputSpeed[5]"); - $jarr=json_encode($arr); - $_GET['callback'] = htmlspecialchars($_GET['callback']); - echo $_GET['callback'],'(',$jarr,')'; - exit; -} - -function session_start_timeout($timeout=5, $probability=100, $cookie_domain='/') { - ini_set("session.gc_maxlifetime", $timeout); - ini_set("session.cookie_lifetime", $timeout); - $seperator = strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN") ? "\\" : "/"; - $path = ini_get("session.save_path") . $seperator . "session_" . $timeout . "sec"; - if(!file_exists($path)) { - if(!mkdir($path, 600)) { - trigger_error("Failed to create session save path directory '$path'. Check permissions.", E_USER_ERROR); - } - } - ini_set("session.save_path", $path); - ini_set("session.gc_probability", $probability); - ini_set("session.gc_divisor", 100); - session_start(); - if(isset($_COOKIE[session_name()])) { - setcookie(session_name(), $_COOKIE[session_name()], time() + $timeout, $cookie_domain); - } -} - -session_start_timeout(5); -$MSGFILE = session_id(); - -function processExists($processName, $username) { - $exists= false; - exec("ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm,cmd|grep $username | grep -iE $processName | grep -v grep", $pids); - if (count($pids) > 0) { - $exists = true; - } - return $exists; -} - -$btsync = processExists("resilio-sync",rslsync); -$deluged = processExists("deluged",$username); -$delugedweb = processExists("deluge-web",$username); -$emby = processExists("emby-server",$username); -$irssi = processExists("irssi",$username); -$plex = processExists("Plex",plex); -$plexpy = processExists("plexpy",plexpy); -$ombi = processExists("ombi",$username); -$pyload = processExists("pyload",$username); -$rtorrent = processExists("rtorrent",$username); -$sabnzbd = processExists("sabnzbd",$username); -$sickrage = processExists("sickrage",$username); -$sonarr = processExists("nzbdrone",$username); -$subsonic = processExists("subsonic",$username); -$syncthing = processExists("syncthing",$username); -$jackett = processExists("jackett",$username); -$couchpotato = processExists("couchpotato",$username); -$quassel = processExists("quassel",$username); -$shellinabox = processExists("shellinabox",shellinabox); -$csf = processExists("lfd",root); -$znc = processExists("znc",$username); - -function isEnabled($process, $username){ - $service = $process; - if(file_exists('/etc/systemd/system/multi-user.target.wants/'.$process.'@'.$username.'.service') || file_exists('/etc/systemd/system/multi-user.target.wants/'.$process.'.service')){ - return " <div class=\"toggle-wrapper text-center\"> <div class=\"toggle-en toggle-light primary\" onclick=\"location.href='?id=77&servicedisable=$service'\"></div></div>"; - } else { - return " <div class=\"toggle-wrapper text-center\"> <div class=\"toggle-dis toggle-light primary\" onclick=\"location.href='?id=66&serviceenable=$service'\"></div></div>"; - } -} - -if(file_exists('/srv/rutorrent/home/custom/url.override.php')){ - // BEGIN CUSTOM URL OVERRIDES // - include ($_SERVER['DOCUMENT_ROOT'].'/custom/url.override.php'); - // END CUSTOM URL OVERRIDES //// -} else { - $btsyncURL = "https://" . $_SERVER['HTTP_HOST'] . ":8888/gui/"; - $cpURL = "https://" . $_SERVER['HTTP_HOST'] . "/couchpotato"; - $csfURL = "https://" . $_SERVER['HTTP_HOST'] . ":3443"; - if ($dwssl == "true") { $dwURL = "https://" . $_SERVER['HTTP_HOST'] . ":$dwport"; } - if ($dwssl == "false") { $dwURL = "http://" . $_SERVER['HTTP_HOST'] . ":$dwport"; } - $embyURL = "https://" . $_SERVER['HTTP_HOST'] . "/emby"; - $jackettURL = "https://" . $_SERVER['HTTP_HOST'] . "/jackett/Admin/Dashboard"; - $nextcloudURL = "https://" . $_SERVER['HTTP_HOST'] . "/nextcloud"; - $nzbhydraURL = "https://" . $_SERVER['HTTP_HOST'] . "/nzbhydra"; - $plexURL = "http://" . $_SERVER['HTTP_HOST'] . ":31400/web/"; - $plexpyURL = "https://" . $_SERVER['HTTP_HOST'] . "/plexpy"; - $ombiURL = "https://" . $_SERVER['HTTP_HOST'] . "/ombi"; - $pyloadURL = "http://" . $_SERVER['HTTP_HOST'] . ":8000"; - $rapidleechURL = "https://" . $_SERVER['HTTP_HOST'] . "/rapidleech"; - $sabnzbdURL = "https://" . $_SERVER['HTTP_HOST'] . "/sabnzbd"; - $sickrageURL = "https://" . $_SERVER['HTTP_HOST'] . "/sickrage"; - $sonarrURL = "https://" . $_SERVER['HTTP_HOST'] . "/sonarr"; - $subsonicURL = "https://" . $_SERVER['HTTP_HOST'] . "/subsonic"; - $syncthingURL = "https://" . $_SERVER['HTTP_HOST'] . "/syncthing/"; - if ($zssl == "true") { $zncURL = "https://" . $_SERVER['HTTP_HOST'] . ":$zport"; } - if ($zssl == "false") { $zncURL = "http://" . $_SERVER['HTTP_HOST'] . ":$zport"; } -} - - -$reload=''; -$service=''; -if ($rtorrent == "1") { $rval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $rval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($irssi == "1") { $ival = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $ival = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($deluged == "1") { $dval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $dval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($delugedweb == "1") { $dwval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $dwval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($shellinabox == "1") { $wcval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $wcval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($btsync == "1") { $bval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $bval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($couchpotato == "1") { $cpval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $cpval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($emby == "1") { $eval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $eval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($jackett == "1") { $jval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $jval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($plex == "1") { $pval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $pval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($plexpy == "1") { $ppval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $ppval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($ombi == "1") { $prval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $prval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($pyload == "1") { $plval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $plval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($quassel == "1") { $qval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $qval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if (file_exists('/install/.rapidleech.lock')) { $rlval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $rlval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($sabnzbd == "1") { $szval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $szval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($sickrage == "1") { $srval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $srval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($sonarr == "1") { $sval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $sval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($subsonic == "1") { $ssval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $ssval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($syncthing == "1") { $stval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $stval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($x2go == "1") { $xval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $xval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - -if ($znc == "1") { $zval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; -} else { $zval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; -} - - - -include ($_SERVER['DOCUMENT_ROOT'].'/widgets/lang_select.php'); -include ($_SERVER['DOCUMENT_ROOT'].'/widgets/plugin_data.php'); -include ($_SERVER['DOCUMENT_ROOT'].'/widgets/package_data.php'); -include ($_SERVER['DOCUMENT_ROOT'].'/widgets/sys_data.php'); -$base = 1024; -$location = "/home"; - -/* check for services */ -switch (intval($_GET['id'])) { -case 0: - $rtorrent = isEnabled("rtorrent", $username); - $cbodyr .= $rtorrent; - $irssi = isEnabled("irssi", $username); - $cbodyi .= $irssi; - $deluged = isEnabled("deluged", $username); - $cbodyd .= $deluged; - $delugedweb = isEnabled("deluge-web", $username); - $cbodydw .= $delugedweb; - $shellinabox = isEnabled("shellinabox",shellinabox); - $wcbodyb .= $shellinabox; - $btsync = isEnabled("resilio-sync",rslsync); - $cbodyb .= $btsync; - $couchpotato = isEnabled("couchpotato", $username); - $cbodycp .= $couchpotato; - $emby = isEnabled("emby-server", $username); - $cbodye .= $emby; - $jackett = isEnabled("jackett", $username); - $cbodyj .= $jackett; - $plex = isEnabled("plexmediaserver",plex); - $cbodyp .= $plex; - $plexpy = isEnabled("plexpy",plexpy); - $cbodypp .= $plexpy; - $ombi = isEnabled("ombi", $username); - $cbodypr .= $ombi; - $pyload = isEnabled("pyload", $username); - $cbodypl .= $pyload; - $quassel = isEnabled("quassel", $username); - $cbodyq .= $quassel; - $rapidleech = isEnabled("rapidleech", $username); - $cbodyrl .= $rapidleech; - $sabnzbd = isEnabled("sabnzbd", $username); - $cbodysz .= $sabnzbd; - $sickrage = isEnabled("sickrage", $username); - $cbodysr .= $sickrage; - $sonarr = isEnabled("sonarr", $username); - $cbodys .= $sonarr; - $subsonic = isEnabled("subsonic", root); - $cbodyss .= $subsonic; - $syncthing = isEnabled("syncthing", $username); - $cbodyst .= $syncthing; - $x2go = isEnabled("x2go", $username); - $cbodyx .= $x2go; - $znc = isEnabled("znc", $username); - $cbodyz .= $znc; - -break; - -/* enable & start services */ -case 66: - $process = $_GET['serviceenable']; - if ($process == "resilio-sync"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl start $process"); - } elseif ($process == "shellinabox"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl start $process"); - } elseif ($process == "emby-server"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl start $process"); - } elseif ($process == "plexmediaserver"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl start $process"); - } elseif ($process == "plexpy"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl start $process"); - } elseif ($process == "ombi"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl start $process"); - } elseif ($process == "subsonic"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl start $process"); - } else { - shell_exec("sudo systemctl enable $process@$username"); - shell_exec("sudo systemctl start $process@$username"); - } - header('Location: https://' . $_SERVER['HTTP_HOST'] . '/'); -break; - -/* disable & stop services */ -case 77: - $process = $_GET['servicedisable']; - if ($process == "resilio-sync"){ - shell_exec("sudo systemctl stop $process"); - shell_exec("sudo systemctl disable $process"); - } elseif ($process == "shellinabox"){ - shell_exec("sudo systemctl stop $process"); - shell_exec("sudo systemctl disable $process"); - } elseif ($process == "emby-server"){ - shell_exec("sudo systemctl stop $process"); - shell_exec("sudo systemctl disable $process"); - } elseif ($process == "plexmediaserver"){ - shell_exec("sudo systemctl stop $process"); - shell_exec("sudo systemctl disable $process"); - } elseif ($process == "plexpy"){ - shell_exec("sudo systemctl stop $process"); - shell_exec("sudo systemctl disable $process"); - } elseif ($process == "ombi"){ - shell_exec("sudo systemctl stop $process"); - shell_exec("sudo systemctl disable $process"); - } elseif ($process == "subsonic"){ - shell_exec("sudo systemctl stop $process"); - shell_exec("sudo systemctl disable $process"); - } else { - shell_exec("sudo systemctl stop $process@$username"); - shell_exec("sudo systemctl disable $process@$username"); - } - header('Location: https://' . $_SERVER['HTTP_HOST'] . '/'); -break; - -/* restart services */ -case 88: - $process = $_GET['servicestart']; - if ($process == "resilio-sync"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl restart $process"); - } elseif ($process == "shellinabox"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl restart $process"); - } elseif ($process == "emby-server"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl restart $process"); - } elseif ($process == "plexmediaserver"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl restart $process"); - } elseif ($process == "plexpy"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl restart $process"); - } elseif ($process == "ombi"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl restart $process"); - } elseif ($process == "subsonic"){ - shell_exec("sudo systemctl enable $process"); - shell_exec("sudo systemctl restart $process"); - } else { - shell_exec("sudo systemctl restart $process@$username"); - } - header('Location: https://' . $_SERVER['HTTP_HOST'] . '/'); -break; - -} - -?> diff --git a/dashboard/inc/localize.php b/dashboard/inc/localize.php deleted file mode 100644 index b47fe742..00000000 --- a/dashboard/inc/localize.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - $locale = 'en_GB.UTF-8'; - $language = 'lang_en'; - setlocale(LC_ALL, 'en_GB.UTF-8'); - require ($_SERVER['DOCUMENT_ROOT']."/lang/lang_en"); - - function T($str) - { - global $L; - if (isset($L[$str])) - return $L[$str]; - else - return $str; - } - -?> diff --git a/dashboard/inc/panel.end.php b/dashboard/inc/panel.end.php deleted file mode 100644 index eda73c35..00000000 --- a/dashboard/inc/panel.end.php +++ /dev/null @@ -1,4 +0,0 @@ - -</body> -</html> -<?php session_destroy(); ?> diff --git a/dashboard/inc/panel.header.php b/dashboard/inc/panel.header.php deleted file mode 100644 index 46171ea5..00000000 --- a/dashboard/inc/panel.header.php +++ /dev/null @@ -1,410 +0,0 @@ -<html lang="en"> -<head> - <!-- META --> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> - <meta name="description" content="<?php echo $panel['description'] ?>"> - <meta name="author" content="<?php echo $panel['author'] ?>"> - <title><?php echo $panel['title'] ?></title> - <meta name="robots" content="<?php echo $panel['robots'] ?>"> - <meta name="theme-color" content="#ffffff"> - <!-- FAVICON ASSETTS --> - <link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-touch-icon.png"> - <link rel="icon" type="image/png" href="img/favicon/favicon-32x32.png" sizes="32x32"> - <link rel="icon" type="image/png" href="img/favicon//favicon-16x16.png" sizes="16x16"> - <link rel="manifest" href="img/favicon/manifest.json"> - <link rel="mask-icon" href="img/favicon/safari-pinned-tab.svg" color="#5bbad5"> - <!-- CSS STYLESHEETS AND ASSETTS --> - <link rel="shortcut icon" href="/img/favicon.ico" type="image/ico"> - <link rel="stylesheet" href="lib/jquery-ui/jquery-ui.css"> - <link rel="stylesheet" href="lib/Hover/hover.css"> - <link rel="stylesheet" href="lib/jquery-toggles/toggles-full.css"> - <link rel="stylesheet" href="lib/jquery.gritter/jquery.gritter.css"> - <link rel="stylesheet" href="lib/animate.css/animate.css"> - <link rel="stylesheet" href="lib/font-awesome/font-awesome.css"> - <link rel="stylesheet" href="lib/ionicons/css/ionicons.css"> - <link rel="stylesheet" href="lib/select2/select2.css"> - <link rel="stylesheet" href="skins/quick.css"> - <link rel="stylesheet" href="skins/lobipanel.css"/> - <!-- JAVASCRIPT --> - <script src="lib/modernizr/modernizr.js"></script> - <script src="lib/jquery/jquery.js"></script> - <script type="text/javascript" src="lib/flot/jquery.flot.js"></script> - <script type="text/javascript" src="lib/flot/jquery.flot.time.js"></script> - <script type="text/javascript" src="lib/flot/jquery.flot.resize.js"></script> - <script type="text/javascript" src="lib/flot/jquery.flot.canvas.js"></script> - <script type="text/javascript" src="lib/flot-spline/jquery.flot.spline.js"></script> - <!--script type="text/javascript" src="lib/flot/jquery.flot.axislabels.js"></script--> - - <!--///// BANDWIDTH CHART /////--> - <script id="source" language="javascript" type="text/javascript"> - $(document).ready(function() { - var options = { - series: { - lines: { - show: false - }, - splines: { - show: true, - tension: 0.4, - lineWidth: 1, - fill: 0.4 - } - }, - points: { show: false }, - legend: { - show: true, - labelBoxBorderColor: '#ffffff', - position: 'ne', - margin: 10 - }, - grid: { - borderWidth: 0, - border: { show: false }, - color: '#dddddd', - labelMargin: 5, - backgroundColor: '#ffffff' - }, - xaxis: { - mode: "time", - tickSize: [60, "second"], - tickFormatter: function (v, axis) { - var date = new Date(v); - if (date.getSeconds() % 20 == 0) { - var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); - var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); - var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); - return hours + ":" + minutes + ":" + seconds; - } else { - return ""; - } - }, - axisLabel: "Time", - axisLabelUseCanvas: true, - axisLabelPadding: 1, - font: { - size: 9, - style: "normal", - color: "#999999", - weight: "light", - family: "open sans", - variant: "small-caps" - } - }, - yaxis: { - min: 0, - tickFormatter: function(val, axis) { return val < axis.max ? val.toFixed(2) : "MB/s"; }, - font: { - size: 11, - style: "normal", - color: "#999", - weight: "light", - family: "open sans", - variant: "small-caps" - } - }, - colors: ["#44BBFF", "#66CC99"], - border: { show: false }, - shadowSize: 0 - }; - window.onresize = function(event) { - var data = []; - var placeholder = $("#mainbw"); - $.plot(placeholder, data, options); - var iteration = 0; - function fetchData() { - ++iteration; - function onDataReceived(series) { - // we get all the data in one go, if we only got partial - // data, we could merge it with what we already got - data = series; - var updateInterval = 30; - var now = new Date().getTime(); - $.plot($("#mainbw"), data, options); - fetchData(); - } - $.ajax({ - url: "widgets/data.php", - method: 'GET', - dataType: 'json', - success: onDataReceived - }); - } - setTimeout(fetchData, 30); - } - }); - </script> - <!--///// CPU CHART /////--> - <script id="source" language="javascript" type="text/javascript"> - var cpu = []; - var dataset; - var totalPoints = 100; - var updateInterval = 1000; - var now = new Date().getTime(); - var options = { - series: { - lines: { - show: true, - lineWidth: 1.5, - fill: 0.4 - } - }, - points: { show: false }, - legend: { - show: true, - noColumns: 0, - labelBoxBorderColor: '#ffffff', - position: 'ne', - }, - grid: { - borderWidth: 0, - border: { show: false }, - color: '#dddddd', - labelMargin: 5, - backgroundColor: '#ffffff' - }, - xaxis: { - mode: "time", - tickSize: [60, "second"], - tickFormatter: function (v, axis) { - var date = new Date(v); - if (date.getSeconds() % 20 == 0) { - var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); - var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); - var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); - return hours + ":" + minutes + ":" + seconds; - } else { - return ""; - } - }, - axisLabel: "Time", - axisLabelUseCanvas: true, - axisLabelPadding: 1, - font: { - size: 9, - style: "normal", - color: "#999999", - weight: "light", - family: "open sans", - variant: "small-caps" - } - }, - yaxes: [ - { - min: 0, - max: 100, - tickSize: 5, - tickFormatter: function (v, axis) { - if (v % 10 == 0) { - return v + "%"; - } else { - return ""; - } - }, - axisLabel: "CPU loading", - axisLabelUseCanvas: true, - axisLabelFontSizePixels: 6, - //axisLabelFontSizePixels: 8, - //axisLabelFontFamily: 'open sans', - axisLabelPadding: 1, - font: { - size: 9, - style: "normal", - color: "#999999", - weight: "light", - family: "open sans", - variant: "small-caps" - } - } - ], - border: { show: false }, - shadowSize: 0 - }; - function initData() { - for (var i = 0; i < totalPoints; i++) { - var temp = [now += updateInterval, 0]; - cpu.push(temp) - } - } - function GetData() { - $.ajaxSetup({ cache: false }); - - $.ajax({ - url: "widgets/cpu.php", - dataType: 'json', - success: update, - error: function () { - setTimeout(GetData, updateInterval); - } - }); - } - var temp; - function update(_data) { - cpu.shift(); - now += updateInterval - temp = [now, _data.cpu]; - cpu.push(temp); - dataset = [ - { label: "CPU:" + _data.cpu + "%", data: cpu, lines: { fill: 0.2, lineWidth: 1.5 }, color: "#B0A4BE" } - ]; - $.plot($("#flot-placeholder1"), dataset, options); - setTimeout(GetData, updateInterval); - } - $(document).ready(function () { - initData(); - dataset = [ - { label: "CPU", data: cpu, lines:{fill:0.2, lineWidth:1}, color: "#B0A4BE" } - ]; - $.plot($("#flot-placeholder1"), dataset, options); - setTimeout(GetData, updateInterval); - }); - </script> - <script language="javascript" type="text/javascript"> - $(document).ready(function() { - function uptime() { - $.ajax({url: "widgets/up.php", cache:true, success: function (result) { - $('#uptime').html(result); - setTimeout(function(){uptime()}, 1000); - }}); - } - uptime(); - - function sload() { - $.ajax({url: "widgets/load.php", cache:true, success: function (result) { - $('#cpuload').html(result); - setTimeout(function(){sload()}, 1000); - }}); - } - sload(); - - function bwtables() { - $.ajax({url: "widgets/bw_tables.php", cache:false, success: function (result) { - $('#bw_tables').html(result); - setTimeout(function(){bwtables()}, 60000); - }}); - } - bwtables(); - - function diskstats() { - $.ajax({url: "widgets/disk_data.php", cache:false, success: function (result) { - $('#disk_data').html(result); - setTimeout(function(){diskstats()}, 15000); - }}); - } - diskstats(); - - function ramstats() { - $.ajax({url: "widgets/ram_stats.php", cache:false, success: function (result) { - $('#meterram').html(result); - setTimeout(function(){ramstats()}, 1000); - }}); - } - ramstats(); - - function activefeed() { - $.ajax({url: "widgets/activity_feed.php", cache:false, success: function (result) { - $('#activityfeed').html(result); - setTimeout(function(){activefeed()}, 300000); - }}); - } - activefeed(); - - function msgoutput() { - $.ajax({url: "db/output.log", cache:false, success: function (result) { - $('#sshoutput').html(result); - setTimeout(function(){msgoutput()}, 1000); - }}); - jQuery( function(){ - var pre = jQuery("#sysPre"); - pre.scrollTop( pre.prop("scrollHeight") ); - }); - } - msgoutput(); - - }); - //success: function (result) -</script> - -<script type="text/javascript"> -$(document).ready(function(){getJSONData();}); -var OutSpeed2=<?php echo floor($NetOutSpeed[2]) ?>; -var OutSpeed3=<?php echo floor($NetOutSpeed[3]) ?>; -var OutSpeed4=<?php echo floor($NetOutSpeed[4]) ?>; -var OutSpeed5=<?php echo floor($NetOutSpeed[5]) ?>; -var InputSpeed2=<?php echo floor($NetInputSpeed[2]) ?>; -var InputSpeed3=<?php echo floor($NetInputSpeed[3]) ?>; -var InputSpeed4=<?php echo floor($NetInputSpeed[4]) ?>; -var InputSpeed5=<?php echo floor($NetInputSpeed[5]) ?>; -function getJSONData() -{ - setTimeout("getJSONData()", 1000); - $.getJSON('?act=rt&callback=?', displayData); -} -function ForDight(Dight,How) -{ - if (Dight<0){ - var Last=0+"B/s"; - }else if (Dight<1024){ - var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"B/s"; - }else if (Dight<1048576){ - Dight=Dight/1024; - var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"KB/s"; - }else{ - Dight=Dight/1048576; - var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"MB/s"; - } - return Last; -} -function displayData(dataJSON) { - $("#NetOut2").html(dataJSON.NetOut2); - $("#NetOut3").html(dataJSON.NetOut3); - $("#NetOut4").html(dataJSON.NetOut4); - $("#NetOut5").html(dataJSON.NetOut5); - $("#NetOut6").html(dataJSON.NetOut6); - $("#NetOut7").html(dataJSON.NetOut7); - $("#NetOut8").html(dataJSON.NetOut8); - $("#NetOut9").html(dataJSON.NetOut9); - $("#NetOut10").html(dataJSON.NetOut10); - $("#NetInput2").html(dataJSON.NetInput2); - $("#NetInput3").html(dataJSON.NetInput3); - $("#NetInput4").html(dataJSON.NetInput4); - $("#NetInput5").html(dataJSON.NetInput5); - $("#NetInput6").html(dataJSON.NetInput6); - $("#NetInput7").html(dataJSON.NetInput7); - $("#NetInput8").html(dataJSON.NetInput8); - $("#NetInput9").html(dataJSON.NetInput9); - $("#NetInput10").html(dataJSON.NetInput10); - $("#NetOutSpeed2").html(ForDight((dataJSON.NetOutSpeed2-OutSpeed2),3)); OutSpeed2=dataJSON.NetOutSpeed2; - $("#NetOutSpeed3").html(ForDight((dataJSON.NetOutSpeed3-OutSpeed3),3)); OutSpeed3=dataJSON.NetOutSpeed3; - $("#NetOutSpeed4").html(ForDight((dataJSON.NetOutSpeed4-OutSpeed4),3)); OutSpeed4=dataJSON.NetOutSpeed4; - $("#NetOutSpeed5").html(ForDight((dataJSON.NetOutSpeed5-OutSpeed5),3)); OutSpeed5=dataJSON.NetOutSpeed5; - $("#NetInputSpeed2").html(ForDight((dataJSON.NetInputSpeed2-InputSpeed2),3)); InputSpeed2=dataJSON.NetInputSpeed2; - $("#NetInputSpeed3").html(ForDight((dataJSON.NetInputSpeed3-InputSpeed3),3)); InputSpeed3=dataJSON.NetInputSpeed3; - $("#NetInputSpeed4").html(ForDight((dataJSON.NetInputSpeed4-InputSpeed4),3)); InputSpeed4=dataJSON.NetInputSpeed4; - $("#NetInputSpeed5").html(ForDight((dataJSON.NetInputSpeed5-InputSpeed5),3)); InputSpeed5=dataJSON.NetInputSpeed5; -} -</script> - - <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> - <!--[if lt IE 9]> - <script src="../lib/html5shiv/html5shiv.js"></script> - <script src="../lib/respond/respond.src.js"></script> - <![endif]--> - - <style> - #sysPre{ - max-height : 600px; - overflow-y: scroll; - } - .legend > table{ - background-color: transparent !important; - color: #acacac !important; - font-size: 11px !important; - } - </style> - - <style> - <?php include ('custom/custom.css'); ?> - </style> - -</head> diff --git a/dashboard/inc/panel.menu.php b/dashboard/inc/panel.menu.php deleted file mode 100644 index 68fba136..00000000 --- a/dashboard/inc/panel.menu.php +++ /dev/null @@ -1,279 +0,0 @@ -<?php - $current_vs = "<span id=\"version-result\"></span>"; -?> -<body class="body"> -<header> - <div class="headerpanel"> - <div class="logopanel"> - <h2><?php include("db/branding-l.php"); ?></h2> - </div><!-- logopanel --> - <div class="headerbar"> - <a id="menuToggle" class="menutoggle"><i class="fa fa-bars"></i></a> - <div class="header-right"> - <ul class="headermenu"> - <?php if ($username == "$master") { ?> - <?php if (file_exists('/install/.developer.lock')) { ?> - <li> - <div class="btn-group"> - <button type="button" class="btn btn-logged"> - <a href="#" class="label label-warning" style=""><?php echo T('DEV_REPO_TXT'); ?></a> - </button> - </div> - </li> - <?php } ?> - <li> - <div class="btn-group"> - <button type="button" class="btn btn-logged" data-toggle="dropdown"> - <a href="#" class="title" style="color:#8fa8f6">QuickBox +</a> - <span class="caret"></span> - </button> - <ul class="dropdown-menu pull-right" style="font-size: 13px"> - <li><a href="//quickbox.io/category/announcements/" target="_blank"><?php echo T('ANNOUNCEMENTS'); ?></a></li> - <li><a href="//plaza.quickbox.io/t/quickbox-changelog/45" target="_blank">CHANGELOG</a></li> - <li><a href="https://quickbox.io/readme-md/" target="_blank">README.md</a></li> - </ul> - </div> - </li> - <li> - <div class="btn-group"> - <button type="button" class="btn btn-logged" data-toggle="dropdown"> - <a href="#" style="color: #FFFFFF">#QuickBox</a> - <span class="caret"></span> - </button> - <ul class="dropdown-menu pull-right" style="font-size: 13px"> - <li style="border-bottom: 1px solid #444"> - <span class="title" style="color: #fff; font-weight: 300; font-size: 13px;"><?php echo T('JOIN_US_TXT'); ?></span> - </li> - <li> - <span style="padding: 6px 10px; color:#fff"><strong style="color: #4CD4B0">host:</strong> chat.quickbox.io</span><br/> - <span style="padding: 6px 10px; color:#fff"><strong style="color: #4CD4B0">chan:</strong> #QuickBox.io</span><br/> - </li> - <li style="border-top: 1px solid #444"> - <span class="chat-btn"><a href="https://chat.quickbox.io/channel/QuickBox.io" class="label label-success" target="_blank"><?php echo T('CHAT_CONNECT_TXT'); ?></a></span> - </li> - </ul> - </div> - </li> - <li> - <?php $language = array(); - $language[] = array('file' => 'lang_dk', 'title' =>'Danish'); - $language[] = array('file' => 'lang_en', 'title' =>'English'); - $language[] = array('file' => 'lang_fr', 'title' =>'Français'); - $language[] = array('file' => 'lang_de', 'title' =>'German'); { ?> - <div class="btn-group"> - <button type="button" class="btn btn-logged" data-toggle="dropdown"> - <?php echo T('LANG_SELECT'); ?> - <span class="caret"></span> - </button> - <ul class="dropdown-menu pull-right"> - <li><span style="margin-top:5x"></span></li> - <?php foreach($language as $lang) { ?> - <li><a href='?langSelect-<?php echo $lang['file'] ?>=true'><img class='lang-flag' src='lang/flag_<?php echo $lang['file'] ?>.png' /><?php echo $lang['title'] ?></a></li> - <?php } ?> - </ul> - </div> - <?php } ?> - </li> - <?php } ?> - <li> - <div class="btn-group"> - <button type="button" class="btn btn-logged" data-toggle="dropdown"> - <?php echo "$username"; ?> - <span class="caret"></span> - </button> - <?php include("db/branding-m.php"); ?> - </div> - </li> - </ul> - </div><!-- header-right --> - </div><!-- headerbar --> - </div><!-- header--> -</header> -<section> - <div class="leftpanel ps-container"> - <div class="leftpanelinner"> - <ul class="nav nav-tabs nav-justified nav-sidebar"> - <li class="tooltips active" data-toggle="tooltip" title="<?php echo T('MAIN_MENU'); ?>" data-placement="bottom"><a data-toggle="tab" data-target="#mainmenu"><i class="tooltips fa fa-ellipsis-h"></i></a></li> - <?php if ($username == "$master"){ ?> - <li class="tooltips" data-toggle="tooltip" title="<?php echo T('RPLUGIN_MENU'); ?>" data-placement="bottom"><a data-toggle="tab" data-target="#plugins"><i class="tooltips fa fa-puzzle-piece"></i></a></li> - <?php } ?> - <li class="tooltips" data-toggle="tooltip" title="<?php echo T('HELP_COMMANDS'); ?>" data-placement="bottom"><a data-toggle="tab" data-target="#help"><i class="tooltips fa fa-question-circle"></i></a></li> - </ul> - <div class="tab-content"> - <!-- ################# MAIN MENU ################### --> - <div class="tab-pane active" id="mainmenu"> - <h5 class="sidebar-title"><?php echo T('MAIN_MENU'); ?></h5> - <ul class="nav nav-pills nav-stacked nav-quirk"> - <!--li class="active"><a href="index.php"><i class="fa fa-home"></i> <span>Dashboard</span></a></li--> - <?php if (file_exists('/home/'.$username.'/.sessions/rtorrent.lock')) { ?> - <li><a class="grayscale" href="/rutorrent" target="_blank"><img src="img/brands/rtorrent.png" class="brand-ico"> <span>ruTorrent</span></a></li> - <?php } ?> - <?php if (processExists("deluge-web",$username) && file_exists('/install/.deluge.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$dwURL"; ?>" target="_blank"><img src="img/brands/deluge.png" class="brand-ico"> <span>Deluge Web</span></a></li> - <?php } ?> - <?php if ($username == "$master") { ?> - <?php if (processExists("resilio-sync",rslsync) && file_exists('/install/.btsync.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$btsyncURL"; ?>" target="_blank"><img src="img/brands/btsync.png" class="brand-ico"> <span>BTSync</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.couchpotato.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$cpURL"; ?>" target="_blank"><img src="img/brands/couchpotato.png" class="brand-ico"> <span>CouchPotato</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.csf.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$csfURL"; ?>" target="_blank"><img src="img/brands/csf.png" class="brand-ico"> <span>CSF (firewall)</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.emby.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$embyURL"; ?>" target="_blank"><img src="img/brands/emby.png" class="brand-ico"> <span>Emby</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.jackett.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$jackettURL"; ?>" target="_blank"><img src="img/brands/jackett.png" class="brand-ico"> <span>Jackett</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.nextcloud.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$nextcloudURL"; ?>" target="_blank"><img src="img/brands/nextcloud.png" class="brand-ico"> <span>NextCloud</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.nzbhydra.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$nzbhydraURL"; ?>" target="_blank"><img src="img/brands/nzbhydra.png" class="brand-ico"> <span>NZBHydra</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.plex.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$plexURL"; ?>" target="_blank"><img src="img/brands/plex.png" class="brand-ico"> <span>Plex</span></a></li> - <?php } ?> - <?php if (file_exists("/install/.plexpy.lock")) { ?> - <li><a class="grayscale" href="<?php echo "$plexpyURL"; ?>" target="_blank"><img src="img/brands/plexpy.png" class="brand-ico"> <span>PlexPy</span></a></li> - <?php } ?> - <?php if (file_exists("/install/.ombi.lock")) { ?> - <li><a class="grayscale" href="<?php echo "$ombiURL"; ?>" target="_blank"><img src="img/brands/plexrequests-net.png" class="brand-ico"> <span>Ombi</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.pyload.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$pyloadURL"; ?>" target="_blank"><img src="img/brands/pyload.png" class="brand-ico"> <span>pyLoad</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.rapidleech.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$rapidleechURL"; ?>" target="_blank"><img src="img/brands/rapidleech.png" class="brand-ico"> <span>Rapidleech</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.sabnzbd.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$sabnzbdURL"; ?>" target="_blank"><img src="img/brands/sabnzbd.png" class="brand-ico"> <span>SABnzbd</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.sickrage.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$sickrageURL"; ?>" target="_blank"><img src="img/brands/sickrage.png" class="brand-ico"> <span>SickRage</span></a></li> - <?php } ?> - <?php if (processExists("nzbdrone",$username) && file_exists('/install/.sonarr.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$sonarrURL"; ?>" target="_blank"><img src="img/brands/sonarr.png" class="brand-ico"> <span>Sonarr</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.subsonic.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$subsonicURL"; ?>" target="_blank"><img src="img/brands/subsonic.png" class="brand-ico"> <span>Subsonic</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.syncthing.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$syncthingURL"; ?>" target="_blank"><img src="img/brands/syncthing.png" class="brand-ico"> <span>Syncthing</span></a></li> - <?php } ?> - <?php if (file_exists('/install/.znc.lock')) { ?> - <li><a class="grayscale" href="<?php echo "$zncURL"; ?>" target="_blank"><img src="img/brands/znc.png" class="brand-ico"> <span>ZNC</span></a></li> - <?php } ?> - <?php } ?> - <li class="nav-parent"> - <a href=""><i class="fa fa-download"></i> <span><?php echo T('DOWNLOADS'); ?></span></a> - <ul class="children"> - <li><a href="/<?php echo "$username"; ?>.rtorrent.downloads" target="_blank">ruTorrent</a></a></li> - <?php if (file_exists('/install/.deluge.lock')) { ?> - <li><a href="/<?php echo "$username"; ?>.deluge.downloads" target="_blank">Deluge</a></li> - <?php } ?> - <?php if (file_exists('/home/'. $username .'/public_html/'. $username .'.zip')) { ?> - <li><a href="/~<?php echo "$username"; ?>/<?php echo "$username"; ?>.zip" target="_blank"> <span>OpenVPN Config</span></a></li> - <?php } ?> - </ul> - </li> - <?php if (processExists("shellinabox",shellinabox) && ($username == "$master")) { ?> - <li><a href="/<?php echo "$username"; ?>.console" target="_blank"><i class="fa fa-keyboard-o"></i> <span><?php echo T('WEB_CONSOLE'); ?></span></a></li> - <?php } ?> - <!-- /// BEGIN INSERT CUSTOM MENU /// --> - <?php include ($_SERVER['DOCUMENT_ROOT'].'/custom/custom.menu.php'); ?> - <!-- /// END INSERT CUSTOM MENU /// --> - </ul> - </div><!-- tab pane --> - - <!-- ######################## HELP MENU TAB ##################### --> - <div class="tab-pane" id="help"> - <h5 class="sidebar-title"><?php echo T('QUICK_SYSTEM_TIPS'); ?></h5> - <?php if ($username == "$master") { ?> - <ul class="nav nav-pills nav-stacked nav-quirk nav-mail"> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">disktest</span><br/> - <small><?php echo T('DISKTEST_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">fixhome</span><br/> - <small><?php echo T('FIXHOME_TXT'); ?></small> - </li> - </ul> - <h5 class="sidebar-title"><?php echo T('ADMIN_COMMANDS'); ?></h5> - <ul class="nav nav-pills nav-stacked nav-quirk nav-mail"> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">setdisk</span><br/> - <small><?php echo T('SETDISK_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">createSeedboxUser</span><br/> - <small><?php echo T('CREATESEEDBOXUSER_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">deleteSeedboxUser</span><br/> - <small><?php echo T('DELETESEEDBOXUSER_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">changeUserpass</span><br/> - <small><?php echo T('CHANGEUSERPASS_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">quickVPN</span><br/> - <small><?php echo T('QUICKVPN_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">showspace</span><br/> - <small><?php echo T('SHOWSPACE_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">upgradeBTSync</span><br/> - <small><?php echo T('UPGRADEBTSYNC_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">upgradeDeluge</span><br/> - <small><?php echo T('UPGRADEDELUGE_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">upgradeJackett</span><br/> - <small><?php echo T('UPGRADEJACKETT_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">upgradePlex</span><br/> - <small><?php echo T('UPGRADEPLEX_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">upgradepyLoad</span><br/> - <small><?php echo T('UPGRADEPYLOAD_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">setup-pyLoad</span><br/> - <small><?php echo T('SETUPPYLOAD_TXT'); ?></small> - </li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">clean_mem</span><br/> - <small><?php echo T('CLEAN_MEM_TXT'); ?></small> - </li> - </ul> - <?php } ?> - <h5 class="sidebar-title"><?php echo T('ESSENTIAL_USER_COMMANDS'); ?></h5> - <ul class="nav nav-pills nav-stacked nav-quirk nav-mail"> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">systemctl restart rtorrent@<?php echo $username ?>.service</span><br/> - <small><?php echo T('SCREEN_RTORRNENT_TXT'); ?></small></li> - <li style="padding: 7px"><span style="font-size: 12px; color:#eee">systemctl restart irssi@<?php echo $username ?>.service</span><br/> - <small><?php echo T('SCREEN_IRSSI_TXT'); ?></small></li> - </ul> - </div><!-- tab-pane --> - - <!-- ######################## RUTORRENT PLUGINS TAB ##################### --> - <div class="tab-pane" id="plugins"> - <h5 class="sidebar-title"><?php echo T('PLUGIN_MENU'); ?></h5> - <ul class="nav nav-pills nav-stacked nav-quirk"> - <li class="nav-parent nav-active"> - <a href=""><i class="fa fa-puzzle-piece"></i> <span><?php echo T('PLUGINS'); ?></span></a> - <ul class="children"> - <li class="info-quote"><p class="info-quote"><?php echo T('PMENU_NOTICE_TXT'); ?></p></li> - <?php foreach ($plugins as $plugin) { ?> - <li> - <?php if(file_exists('/srv/rutorrent/plugins/'.$plugin.'/plugin.info')) { - echo "<a href=\"javascript:void()\">$plugin</a> <div class=\"toggle-wrapper pull-right\" style=\"margin-right: -10px; margin-top: 5px;\"> <div class=\"toggle-pen toggle-modern\" onclick=\"location.href='?removeplugin-$plugin=true'\"></div></div>"; - } else { - echo "<a href=\"javascript:void()\">$plugin</a> <div class=\"toggle-wrapper pull-right\" style=\"margin-right: -10px; margin-top: 5px;\"> <div class=\"toggle-pdis toggle-modern\" onclick=\"location.href='?installplugin-$plugin=true'\"></div></div>"; - } ?> - </li> - <?php } ?> - </ul> - </li> - </ul> - </div><!-- tab-pane --> - - </div><!-- tab-content --> - </div><!-- leftpanelinner --> - </div><!-- leftpanel --> diff --git a/dashboard/inc/panel.scripts.php b/dashboard/inc/panel.scripts.php deleted file mode 100644 index 92059dd4..00000000 --- a/dashboard/inc/panel.scripts.php +++ /dev/null @@ -1,798 +0,0 @@ -</section> - -<!-- BTSYNC UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="btsyncRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="BTSyncRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="BTSyncRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> BTSync?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_BTSYNC_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-btsync=true" id="btsyncRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- CSF UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="csfRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="CSFRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="CSFRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Config Server Firewall?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_CSF_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-csf=true" id="csfRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- COUCHPOTATO UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="couchpotatoRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="CouchPotatoRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="CouchPotatoRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> CouchPotato?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_COUCHPOTATO_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-couchpotato=true" id="couchpotatoRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- DELUGE UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="delugeRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="DelugeRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="DelugeRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Deluge?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_DELUGE_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-deluge=true" id="delugeRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- EMBY UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="embyRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="EmbyRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="EmbyRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Emby-Server?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_EMBY_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-emby=true" id="embyRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- Jackett UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="jackettRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="JackettRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="JackettRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Jackett?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_JACKETT_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-jackett=true" id="jackettRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- NextCloud UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="nextcloudRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="NextCloudRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="NextCloudRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> NextCloud?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_NEXTCLOUD_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-nextcloud=true" id="nextcloudRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- NZBHydra UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="nzbhydraRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="NZBHydraRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="NZBHydraRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> NZBHydra?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_NZBHYDRA_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-nzbhydra=true" id="nzbhydraRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- PLEX UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="plexRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="PlexRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="PlexRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Plex?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_PLEX_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-plex=true" id="plexRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- PLEXPY UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="plexpyRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="PlexPyRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="PlexPyRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> PlexPy?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_PLEXPY_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-plexpy=true" id="plexpyRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- PLEX REQUESTS UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="ombiRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="OmbiRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="OmbiRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Ombi?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_PLEXREQUESTS_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-ombi=true" id="ombiRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- PYLOAD UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="pyloadRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="pyLoadRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="pyLoadRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> pyLoad?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_PYLOAD_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-pyload=true" id="pyloadRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- QUASSEL UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="quasselRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="quasselRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="quasselRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Quassel?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_QUASSEL_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-quassel=true" id="quasselRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- QUOTA UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="quotaRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="quotaRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="quotaRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Quotas?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_QUOTAS_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-quota=true" id="quotaRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- RAPIDLEECH UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="rapidleechRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="RapidleechRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="RapidleechRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Rapidleech?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_RAPIDLEECH_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-rapidleech=true" id="rapidleechRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- SABNZBD UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="sabnzbdRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="SABnzbdRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="SABnzbdRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> SABnzbd?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_SABNZBD_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-sabnzbd=true" id="sabnzbdRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- SICKRAGE UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="sickrageRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="SickRageRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="SickRageRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> SickRage?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_SICKRAGE_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-sickrage=true" id="sickrageRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- SONARR UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="sonarrRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="SonarrRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="SonarrRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Sonarr-NzbDrone?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_SONARR_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-sonarr=true" id="sonarrRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- SUBSONIC UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="subsonicRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="SubsonicRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="SubsonicRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Subsonic?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_SUBSONIC_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-subsonic=true" id="subsonicRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- SYNCTHING UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="syncthingRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="SyncthingRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="SyncthingRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Syncthing?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_SYNCTHING_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-syncthing=true" id="syncthingRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- X2GO UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="x2goRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="x2goRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="x2goRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> x2go?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_X2GO_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-x2go=true" id="x2goRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- ZNC UNINSTALL MODAL --> -<div class="modal bounceIn animated" id="zncRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="ZNCRemovalConfirm" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h4 class="modal-title" id="ZNCRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> ZNC?</h4> - </div> - <div class="modal-body"> - <?php echo T('UNINSTALL_ZNC_TXT'); ?> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> - <a href="?removepackage-znc=true" id="zncRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> -<!-- SYSTEM RESPONSE MODAL --> -<div class="modal bounceIn animated" id="sysResponse" tabindex="-1" role="dialog" aria-labelledby="sysResponse" aria-hidden="true"> - <div class="modal-dialog" style="width: 600px"> - <div class="modal-content" style="background:rgba(0, 0, 0, 0.6);border:2px solid rgba(0, 0, 0, 0.2)"> - <div class="modal-header" style="background:rgba(0, 0, 0, 0.4);border:0!important"> - <h4 class="modal-title" style="color:#fff"><?php echo T('SYSTEM_RESPONSE_TITLE'); ?></h4> - </div> - <div class="modal-body ps-container" style="background:rgba(0, 0, 0, 0.4); max-height:600px;" id="sysPre"> - <pre style="color: rgb(83, 223, 131) !important;" class="sysout ps-child"><span id="sshoutput"></span></pre> - </div> - <div class="modal-footer" style="background:rgba(0, 0, 0, 0.4);border:0!important"> - <a href="?clean_log=true" class="btn btn-xs btn-danger"><?php echo T('CLOSE_REFRESH'); ?></a> - </div> - </div><!-- modal-content --> - </div><!-- modal-dialog --> -</div><!-- modal --> - -<!--script src="js/script.js"></script--> -<script src="lib/jquery-ui/jquery-ui.js"></script> -<script src="lib/jquery.ui.touch-punch.min.js"></script> -<script src="lib/bootstrap/js/bootstrap.js"></script> -<script src="lib/jquery-toggles/toggles.js"></script> -<script src="lib/jquery-knob/jquery.knob.js"></script> -<script src="lib/jquery.gritter/jquery.gritter.js"></script> -<script src="js/quick.js"></script> -<script src="js/lobipanel.js"></script> -<script> - $(function(){ - //$('.lobipanel').lobiPanel(); - $('.panel').lobiPanel({ - reload: { - icon: 'fa fa-refresh' - }, - unpin: { - icon: 'fa fa-arrows' - }, - minimize: { - icon: 'fa fa-chevron-up', - icon2: 'fa fa-chevron-down' - }, - close: { - icon: 'fa fa-times-circle' - }, - expand: { - icon: 'fa fa-expand', - icon2: 'fa fa-compress' - }, - dropdown: { - icon: 'fa fa-cog' - }, - close: false, - save: true, - sortable: true, - stateful: true, - draggable: true, - reload: false, - resize: true, - editTitle: false, - expand: false - }); - }); -</script> - -<script> - $(function(){ - $('#rutorrent').on('loaded.lobiPanel', function (ev, lobiPanel) { - var $body = lobiPanel.$el.find('.panel-body'); - $body.html('<div>' + $body.html() + '</div>'); - }); -}); -</script> - -<script src="js/jquery.scrollbar.js"></script> -<script> -$(function() { - $('.leftpanel').perfectScrollbar(); - $('.leftpanel').perfectScrollbar({ wheelSpeed: 1, wheelPropagation: true, minScrollbarLength: 20 }); - $('.leftpanel').perfectScrollbar('update'); - //$('.body').perfectScrollbar(); - //$('.body').perfectScrollbar({ wheelSpeed: 1, wheelPropagation: true, swipePropagation: true, minScrollbarLength: 20 }); - //$('.body').perfectScrollbar('update'); - $('.modal-body').perfectScrollbar(); - $('.modal-body').perfectScrollbar({ wheelSpeed: 1, wheelPropagation: true, minScrollbarLength: 20 }); - $('.modal-body').perfectScrollbar('update'); - $('.sysout').perfectScrollbar(); - $('.sysout').perfectScrollbar({ wheelSpeed: 1, wheelPropagation: true, minScrollbarLength: 20 }); - $('.sysout').perfectScrollbar('update'); -}); -</script> -<script> -$(function() { - // Toggles - $('.toggle-en').toggles({ - on: true, - height: 26, - width: 100, - text: { - on: "<?php echo T('ENABLED') ?>" - } - }); - $('.toggle-dis').toggles({ - on: false, - height: 26, - width: 100, - text: { - off: "<?php echo T('DISABLED') ?>" - } - }); - $('.toggle-pen').toggles({ - on: true, - height: 16, - width: 90, - text: { - on: "<?php echo T('INSTALLED') ?>", - off: "<?php echo T('UNINSTALLING') ?>" - } - }); - $('.toggle-pdis').toggles({ - on: false, - height: 16, - width: 90, - text: { - off: "<?php echo T('UNINSTALLED') ?>", - on: "<?php echo T('INSTALLING') ?>" - } - }); -}); -</script> -<script> -$(document).ready(function() { - - 'use strict'; - - // BTSyncRemove - $('#btsyncRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> BTSync', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Bittorrent Sync <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // csfRemove - $('#csfRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> CSF', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Config Server Firewall <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // CouchPotatoRemove - $('#couchpotatoRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> CouchPotato', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> CouchPotato <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // DelugeRemove - $('#delugeRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Deluge', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Deluge <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // EmbyRemove - $('#embyRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Emby-Server', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Emby-Server <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // JackettRemove - $('#jackettRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Jackett', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Jackett <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // NextCloudRemove - $('#nextcloudRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> NextCloud', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> NextCloud <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // NZBHydraRemove - $('#nzbhydraRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> NZBHydra', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> NZBHydra <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // PlexRemove - $('#plexRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Plex', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Plex Media Server <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // PlexPYRemove - $('#plexpyRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> PlexPY', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> PlexPY <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // OmbiRemove - $('#ombiRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Ombi', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Ombi <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // pyLoadRemove - $('#pyloadRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> pyLoad', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> pyLoad <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // RapidleechRemove - $('#rapidleechRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Rapidleech', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Rapidleech <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // SABnzbdRemove - $('#sabnzbdRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> SABnzbd', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> SABnzbd <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // SickRageRemove - $('#sickrageRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> SickRage', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> SickRage <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // SonarrRemove - $('#sonarrRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Sonarr', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Sonarr-NzbDrone <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // SubsonicRemove - $('#subsonicRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Subsonic', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Subsonic <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // SyncthingRemove - $('#synctingRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Syncthing', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Sycthing <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // QuasselRemove - $('#quasselRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> Quassel-Core', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Quassel <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // QuotaRemove - $('#quotaRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> user quotas', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Quota <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // x2goRemove - $('#x2goRemove').click(function(){ - $.gritter.add({ - title: '<?php echo T('UNINSTALLING_TITLE'); ?> x2go', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> x2go <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - // ZNCRemove - $('#zncRemove').click(function(){ - $.gritter.add({ - title: 'Uninstalling ZNC', - text: '<?php echo T('UNINSTALLING_TXT_1'); ?> ZNC <?php echo T('UNINSTALLING_TXT_2'); ?>', - class_name: 'with-icon times-circle danger', - sticky: true - }); - }); - -}); -</script> - -<script> -$(document).ready(function() { - $('#sysResponse').on('hidden.bs.modal', function () { - location.reload(); - }); -}); -</script> - -<script src="lib/datatables/jquery.dataTables.js"></script> -<script src="lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.js"></script> -<script src="lib/select2/select2.js"></script> - -<script> -$(document).ready(function() { - - 'use strict'; - - $('#dataTable1').DataTable(); - - var exRowTable = $('#exRowTable').DataTable({ - responsive: true, - 'fnDrawCallback': function(oSettings) { - $('#exRowTable_paginate ul').addClass('pagination-active-success'); - }, - 'ajax': 'ajax/objects.txt', - 'columns': [{ - 'class': 'details-control', - 'orderable': false, - 'data': null, - 'defaultContent': '' - }, - { 'data': 'name' }, - { 'data': 'details' }, - { 'data': 'availability' } - ], - 'order': [[1, 'asc']] - }); - - // Add event listener for opening and closing details - $('#exRowTable tbody').on('click', 'td.details-control', function () { - var tr = $(this).closest('tr'); - var row = exRowTable.row( tr ); - - if ( row.child.isShown() ) { - // This row is already open - close it - row.child.hide(); - tr.removeClass('shown'); - } else { - // Open this row - row.child( format(row.data()) ).show(); - tr.addClass('shown'); - } - }); - - function format (d) { - // `d` is the original data object for the row - return '<h4>'+d.name+'<small>'+d.details+'</small></h4>'+ - '<p class="nomargin">Nothing to see here.</p>'; - } - - // Select2 - $('select').select2({ minimumResultsForSearch: Infinity }); - -}); -</script> diff --git a/dashboard/index.php b/dashboard/index.php deleted file mode 100644 index c7370d4b..00000000 --- a/dashboard/index.php +++ /dev/null @@ -1,574 +0,0 @@ -<?php - include ('inc/config.php'); - include ('inc/panel.header.php'); - include ('inc/panel.menu.php'); -?> - - <div class="mainpanel"> - <!--<div class="pageheader"> - <h2><i class="fa fa-home"></i> Dashboard</h2> - </div>--> - <div class="contentpanel"> - - <div class="row"> - - <div class="col-md-8"> - - <!--BANDWIDTH CHART & DATA--> - <div class="panel panel-main panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title"><?php echo T('BANDWIDTH_DATA'); ?></h4> - </div> - <div class="panel-body text-center" style="padding:0 0 0 5px; overflow: hidden !important"> - <div style="margin-right: -30px"> - <div id="mainbw" style="width:100%;height:350px;"></div> - </div> - </div> - <div class="row panel-footer panel-statistics" style="padding:0"> - <div class="col-md-12"> - <div class="table-responsive"> - <table class="table table-hover table-bordered nomargin"> - <thead> - <tr> - <th style="width:33%;padding: 4px 4px 4px 12px"><?php echo T('NETWORK'); ?></th> - <th style="width:33%;padding: 4px 4px 4px 12px"><?php echo T('UPLOAD'); ?></th> - <th style="width:33%;padding: 4px 4px 4px 12px"><?php echo T('DOWNLOAD'); ?></th> - </tr> - </thead> - <tbody> - <?php if (false !== ($strs = @file("/proc/net/dev"))) : ?> - <?php for ($i = 2; $i < count($strs); $i++ ) : ?> - <?php preg_match_all( "/([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/", $strs[$i], $info );?> - <tr> - <td style="font-size:14px;font-weight:bold;padding: 2px 2px 2px 12px"><?php echo $info[1][0]?></td> - <td style="font-size:11px;padding: 2px 2px 2px 12px"><span class="text-success"><span id="NetOutSpeed<?php echo $i?>">0B/s</span></span></td> - <td style="font-size:11px;padding: 2px 2px 2px 12px"><span class="text-primary"><span id="NetInputSpeed<?php echo $i?>">0B/s</span></span></td> - </tr> - <?php endfor; ?> - <?php endif; ?> - </tbody> - </table> - </div> - </div> - </div> - </div> - <div class="panel panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title"><?php echo T('VIEW_ADDITIONAL_BANDWIDTH_DETAILS'); ?></h4> - </div> - <div class="panel-body" style="padding:0"> - <div class="row" style="padding: 0; margin: 0"><div id="bw_tables" style="padding:0;margin:0;"></div></div> - </div> - </div> - - <!--SERVICE CONTROL CENTER--> - <div class="panel panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title"><?php echo T('SERVICE_CONTROL_CENTER'); ?></h4> - </div> - <div class="panel-body" style="padding: 0"> - <div class="table-responsive"> - <table class="table table-hover nomargin" style="font-size:14px"> - <thead> - <tr> - <th class="text-center"><?php echo T('SERVICE_STATUS'); ?></th> - <th class="text-center"><?php echo T('RESTART_SERVICES'); ?></th> - <th class="text-center"><?php echo T('ENABLE_DISABLE_SERVICES'); ?></th> - </tr> - </thead> - <tbody> - <?php if (file_exists("/install/.rtorrent.lock")) { ?> - <tr> - <?php - $rtorrentrc = '/home/'.$username.'/.rtorrent.rc'; - if (file_exists($rtorrentrc)) { - $rtorrentrc_data = file_get_contents($rtorrentrc); - $scgiport = search($rtorrentrc_data, 'localhost:', "\n"); - } - ?> - <td><?php echo "$rval"; ?> RTorrent <span class="tooltips" data-toggle="tooltip" title="scgi_port: <?php echo $scgiport; ?>" data-placement="right"><i class="tooltips fa fa-usb"></i><span></td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=rtorrent'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodyr"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.autodlirssi.lock")) { ?> - <tr> - <td><?php echo "$ival"; ?> iRSSi-AutoDL </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=irssi'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodyi"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.deluge.lock")) { ?> - <tr> - <td><?php echo "$dval"; ?> DelugeD </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=deluged'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodyd"; ?></td> - </tr> - <tr> - <td><?php echo "$dwval"; ?> Deluge Web </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=delugeweb'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodydw"; ?></td> - </tr> - <?php } ?> - - <?php if ($username == "$master") { ?> - - <tr> - <td><?php echo "$wcval"; ?> Web Console </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=shellinabox'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$wcbodyb"; ?></td> - </tr> - - <!-- - <//?php if (file_exists("/install/.csf.lock")) { ?> - <tr> - <td><//?php echo "$csfval"; ?> CSF (firewall) </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=csf'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <//?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><//?php echo "$cbodycf"; ?></td> - </tr> - <//?php } ?> - --> - - <?php if (file_exists("/install/.btsync.lock")) { ?> - <tr> - <td><?php echo "$bval"; ?> BTSync </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=btsync'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodyb"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.couchpotato.lock")) { ?> - <tr> - <td><?php echo "$cpval"; ?> CouchPotato </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=couchpotato'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodycp"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.emby.lock")) { ?> - <tr> - <td><?php echo "$eval"; ?> Emby </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=emby'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodye"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.jackett.lock")) { ?> - <tr> - <td><?php echo "$jval"; ?> Jackett </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=jackett'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodyj"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.plex.lock")) { ?> - <tr> - <td><?php echo "$pval"; ?> Plex </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=plex'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodyp"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.plexpy.lock")) { ?> - <tr> - <td><?php echo "$ppval"; ?> PlexPy </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=plexpy'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodypp"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.ombi.lock")) { ?> - <tr> - <td><?php echo "$prval"; ?> Ombi </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=ombi'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodypr"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.pyload.lock")) { ?> - <tr> - <td><?php echo "$plval"; ?> pyLoad </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=pyload'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodypl"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.sabnzbd.lock")) { ?> - <tr> - <td><?php echo "$srval"; ?> SABnzbd </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=sabnzbd'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodysz"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.sickrage.lock")) { ?> - <tr> - <td><?php echo "$srval"; ?> SickRage </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=sickrage'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodysr"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.sonarr.lock")) { ?> - <tr> - <td><?php echo "$sval"; ?> Sonarr </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=sonarr'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodys"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.subsonic.lock")) { ?> - <tr> - <td><?php echo "$ssval"; ?> Subsonic </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=subsonic'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodyss"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.syncthing.lock")) { ?> - <tr> - <td><?php echo "$stval"; ?> Syncthing </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=syncthing'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbodyst"; ?></td> - </tr> - <?php } ?> - - <?php if (file_exists("/install/.sample.lock")) { ?> - <tr> - <td><?php echo "$val"; ?> SAMPLE </td> - <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=sample'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> - <td class="text-center"><?php echo "$cbody"; ?></td> - </tr> - <?php } ?> - - <?php } ?> - </tbody> - </table> - </div><!-- table-responsive --> - </div> - </div><!-- panel --> - - <?php if ($username == "$master") { ?> - <!--PACKAGE MANAGEMENT CENTER--> - <div class="panel panel-main panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title"><?php echo T('PACKAGE_MANAGEMENT_CENTER'); ?></h4> - </div> - <div class="panel-body text-center" style="padding:0;"> - <div class="alert alert-danger"> - <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> - <?php echo T('PMC_NOTICE_TXT'); ?> - </div> - <div class="table-responsive ps-container"> - <table id="dataTable1" class="table table-bordered table-striped-col" style="font-size: 12px"> - <thead> - <tr> - <th><?php echo T('NAME'); ?></th> - <th><?php echo T('DETAILS'); ?></th> - <th><?php echo T('AVAILABILITY'); ?></th> - </tr> - </thead> - - <tbody> - <tr> - <td>BTSync</td> - <td><?php echo T('BTSYNC_DETAILS'); ?></td> - <?php if (file_exists("/install/.btsync.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#btsyncRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-btsync=true" data-toggle="modal" data-target="#sysResponse" id="btsyncInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>CouchPotato</td> - <td><?php echo T('COUCHPOTATO'); ?></td> - <?php if (file_exists("/install/.couchpotato.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#couchpotatoRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-couchpotato=true" data-toggle="modal" data-target="#sysResponse" id="couchpotatoInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>CSF (Firewall)</td> - <td><?php echo T('CSF'); ?></td> - <?php if (file_exists("/install/.csf.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#csfRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><button data-toggle="tooltip" title="<?php echo T('BOX_TOOLTIP_CSF'); ?>" data-placement="top" class="btn btn-xs btn-danger disabled tooltips"><?php echo T('BOX'); ?></button></td> - <?php } ?> - </tr> - <tr> - <td>Deluge</td> - <td><?php echo T('DELUGE'); ?></td> - <?php if (file_exists("/install/.deluge.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#delugeRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-deluge=true" data-toggle="modal" data-target="#sysResponse" id="delugeInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>Emby</td> - <td><?php echo T('EMBY'); ?></td> - <?php if (file_exists("/install/.emby.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#embyRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-emby=true" data-toggle="modal" data-target="#sysResponse" id="embyInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>Jackett</td> - <td><?php echo T('JACKETT'); ?></td> - <?php if (file_exists("/install/.jackett.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#jackettRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-jackett=true" data-toggle="modal" data-target="#sysResponse" id="jackettInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>NextCloud</td> - <td><?php echo T('NEXTCLOUD'); ?></td> - <?php if (file_exists("/install/.nextcloud.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#nextcloudRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><button data-toggle="tooltip" title="<?php echo T('BOX_TOOLTIP_NEXTCLOUD'); ?>" data-placement="top" class="btn btn-xs btn-danger disabled tooltips"><?php echo T('BOX'); ?></button></td> - <?php } ?> - </tr> - <tr> - <td>OpenVPN</td> - <td><?php echo T('OVPN'); ?></td> - <?php if (file_exists("/install/.vpn.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><button data-toggle="tooltip" title="<?php echo T('OVPN_TOOLTIP_U'); ?>" data-placement="top" class="btn btn-xs btn-success disabled tooltips"><?php echo T('CLI'); ?></button></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><button data-toggle="tooltip" title="<?php echo T('OVPN_TOOLTIP_I'); ?>" data-placement="top" class="btn btn-xs btn-danger disabled tooltips"><?php echo T('CLI'); ?></button></td> - <?php } ?> - </tr> - <tr> - <td>Plex</td> - <td><?php echo T('PLEX'); ?></td> - <?php if (file_exists("/install/.plex.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#plexRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-plex=true" data-toggle="modal" data-target="#sysResponse" id="plexInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>PlexPy</td> - <td><?php echo T('PLEXPY'); ?></td> - <?php if (file_exists("/install/.plexpy.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#plexpyRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-plexpy=true" data-toggle="modal" data-target="#sysResponse" id="plexpyInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>Ombi (formerly Plex Requests.NET)</td> - <td><?php echo T('PLEX_REQUESTS'); ?></td> - <?php if (file_exists("/install/.ombi.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#ombiRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-ombi=true" data-toggle="modal" data-target="#sysResponse" id="ombiInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>pyLoad</td> - <td><?php echo T('PYLOAD'); ?></td> - <?php if (file_exists("/install/.pyload.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#pyloadRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-pyload=true" data-toggle="modal" data-target="#sysResponse" id="pyloadInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>Quassel</td> - <td><?php echo T('QUASSEL'); ?></td> - <?php if (file_exists("/install/.quassel.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#quasselRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-quassel=true" data-toggle="modal" data-target="#sysResponse" id="quasselInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>Quotas</td> - <td><?php echo T('QUOTAS'); ?></td> - <?php if (file_exists("/install/.quota.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#quotaRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-quota=true" data-toggle="modal" data-target="#sysResponse" id="quotaInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>Rapidleech</td> - <td><?php echo T('RAPIDLEECH'); ?></td> - <?php if (file_exists("/install/.rapidleech.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#rapidleechRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-rapidleech=true" data-toggle="modal" data-target="#sysResponse" id="rapidleechInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>SABnzbd</td> - <td><?php echo T('SABNZBD'); ?></td> - <?php if (file_exists("/install/.sabnzbd.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#sabnzbdRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-sabnzbd=true" data-toggle="modal" data-target="#sysResponse" id="sabnzbdInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>SickRage</td> - <td><?php echo T('SICKRAGE'); ?></td> - <?php if (file_exists("/install/.sickrage.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#sickrageRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-sickrage=true" data-toggle="modal" data-target="#sysResponse" id="sickrageInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>Sonarr</td> - <td><?php echo T('SONARR'); ?></td> - <?php if (file_exists("/install/.sonarr.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#sonarrRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-sonarr=true" data-toggle="modal" data-target="#sysResponse" id="sonarrInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>Subsonic</td> - <td><?php echo T('SUBSONIC'); ?></td> - <?php if (file_exists("/install/.subsonic.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#subsonicRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-subsonic=true" data-toggle="modal" data-target="#sysResponse" id="subsonicInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <td>Syncthing</td> - <td><?php echo T('SYNCTHING'); ?></td> - <?php if (file_exists("/install/.syncthing.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#syncthingRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-syncthing=true" data-toggle="modal" data-target="#sysResponse" id="syncthingInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>x2Go</td> - <td><?php echo T('X2GO'); ?></td> - <?php if (file_exists("/install/.x2go.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#x2goRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-x2go=true" data-toggle="modal" data-target="#sysResponse" id="x2goInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> - <?php } ?> - </tr> - <tr> - <td>ZNC</td> - <td><?php echo T('ZNC'); ?></td> - <?php if (file_exists("/install/.znc.lock")) { ?> - <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#zncRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> - <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><button data-toggle="tooltip" title="<?php echo T('BOX_TOOLTIP_ZNC'); ?>" data-placement="top" class="btn btn-xs btn-danger disabled tooltips"><?php echo T('BOX'); ?></button></td> - <?php } ?> - </tr> - </tbody> - </table> - </div> - </div> - </div><!-- package center panel --> - <?php } ?> - </div> - - <div class="col-md-4 dash-right"> - <div class="row"> - <div class="col-sm-12"> - <div class="panel panel-side panel-inverse-full panel-updates"> - <div class="panel-heading"> - <h4 class="panel-title text-success"><?php echo T('SERVER_LOAD'); ?></h4> - </div> - <div class="panel-body"> - <div class="row"> - <div class="col-sm-9"> - <h4><span id="cpuload"></span></h4> - <p><?php echo T('SL_TXT'); ?></p> - </div> - <div class="col-sm-3 text-right"> - <i class="fa fa-heartbeat text-danger" style="font-size: 70px"></i> - </div> - <div class="row"> - <div class="col-sm-12 mt20 text-center"> - <strong><?php echo T('UPTIME'); ?>:</strong> <span id="uptime"></span> - </div> - </div> - </div> - </div> - </div><!-- panel --> - </div><!-- SERVER LOAD WIDGET --> - <div class="col-sm-12"> - <div class="panel panel-side panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title"><?php echo T('YOUR_DISK_STATUS'); ?></h4> - </div> - <div class="panel-body"> - <div id="disk_data"></div> - </div> - </div> - </div><!-- DISK WIDGET --> - <div class="col-sm-12"> - <div class="panel panel-side panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title"><?php echo T('SYSTEM_RAM_STATUS'); ?></h4> - </div> - <div class="panel-body"> - <div id="meterram"></div> - </div> - </div> - </div><!-- RAM WIDGET --> - <div class="col-sm-12"> - <div class="panel panel-side panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title"><?php echo T('CPU_STATUS'); ?></h4> - </div> - <div class="panel-body" style="overflow:hidden"> - <div style="padding:0;margin:-15px -30 -15px -15px"> - <div id="flot-placeholder1" style="width:100%;height:200px;"></div> - <!--div id="metercpu"></div--> - </div> - <hr /> - <span class="nomargin" style="font-size:14px"> - <?php echo $sysInfo['cpu']['model'];?><br/> - [<span style="color:#111;font-weight:600">x<?php echo $sysInfo['cpu']['num']; ?></span> core] - </span> - </div> - </div> - </div><!-- CPU WIDGET --> - <?php if ($username == "$master") { ?> - <div class="col-sm-12"> - <div id="project-commits" class="panel panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title text-success"><?php echo T('RECENT_UPDATES'); ?> - - <small><a href="https://github.com/QuickBox/QB/compare/<?php echo $version ?>...master" target="blank" title="Compare recent QuickBox versions to latest commits" data-placement="top" class="label label-primary tooltips" style="font-size:10px; padding-top:0; padding-bottom:0px; top: -2px; position: relative;" target='_blank'>QuickBox :: <span style="color: #fff;text-shadow: 0px 0px 6px #fff;"><?php echo "$version"; ?></span></a></small> - - </h4> - </div> - <div class="panel-body ps-container" style="max-height: 350px; padding: 0;"> - <div class="alert alert-default" style="margin-bottom: 4px; text-align: center" role="alert"> - <strong><?php echo T('RECENT_UPDATES_TXT'); ?></strong> - </div> - <div id="activityfeed"></div> - </div> - <div class="panel-footer"> - <a href="?updateQuickBox=true" data-toggle="modal" data-target="#sysResponse"><button class="btn btn-success btn-quirk btn-block"><i class="fa fa-bell text-success"></i> <?php echo T('UPDATE'); ?> </button></a> - </div> - </div> - </div><!-- QUICKBOX UPDATE WIDGET --> - <?php } ?> - </div><!-- row --> - </div> - </div> - </div><!-- contentpanel --> - </div><!-- mainpanel --> - - <?php - include ('inc/panel.scripts.php'); - include ('inc/panel.end.php'); - ?> diff --git a/dashboard/js/bootstrap.js b/dashboard/js/bootstrap.js deleted file mode 100644 index 5debfd7d..00000000 --- a/dashboard/js/bootstrap.js +++ /dev/null @@ -1,2363 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under the MIT license - */ - -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} - -+function ($) { - 'use strict'; - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') - } -}(jQuery); - -/* ======================================================================== - * Bootstrap: transition.js v3.3.5 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.5 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.5' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.5 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.5' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state += 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked')) changed = false - $parent.find('.active').removeClass('active') - this.$element.addClass('active') - } else if ($input.prop('type') == 'checkbox') { - if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false - this.$element.toggleClass('active') - } - $input.prop('checked', this.$element.hasClass('active')) - if (changed) $input.trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - this.$element.toggleClass('active') - } - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - Plugin.call($btn, 'toggle') - if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.5 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = null - this.sliding = null - this.interval = null - this.$active = null - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.5' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var activeIndex = this.getItemIndex(active) - var willWrap = (direction == 'prev' && activeIndex === 0) - || (direction == 'next' && activeIndex == (this.$items.length - 1)) - if (willWrap && !this.options.wrap) return active - var delta = direction == 'prev' ? -1 : 1 - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var that = this - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.5 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + - '[data-toggle="collapse"][data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.5' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.5 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.5' - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) - }) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $(document.createElement('div')) - .addClass('dropdown-backdrop') - .insertAfter($(this)) - .on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger('shown.bs.dropdown', relatedTarget) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if (!isActive && e.which != 27 || isActive && e.which == 27) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.disabled):visible a' - var $items = $parent.find('.dropdown-menu' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: modal.js v3.3.5 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$dialog = this.$element.find('.modal-dialog') - this.$backdrop = null - this.isShown = null - this.originalBodyPad = null - this.scrollbarWidth = 0 - this.ignoreBackdropClick = false - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.5' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.setScrollbar() - this.$body.addClass('modal-open') - - this.escape() - this.resize() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.$dialog.on('mousedown.dismiss.bs.modal', function () { - that.$element.one('mouseup.dismiss.bs.modal', function (e) { - if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true - }) - }) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - that.adjustDialog() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element.addClass('in') - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$dialog // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - this.resize() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .off('click.dismiss.bs.modal') - .off('mouseup.dismiss.bs.modal') - - this.$dialog.off('mousedown.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.resize = function () { - if (this.isShown) { - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) - } else { - $(window).off('resize.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetAdjustments() - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $(document.createElement('div')) - .addClass('modal-backdrop ' + animate) - .appendTo(this.$body) - - this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { - if (this.ignoreBackdropClick) { - this.ignoreBackdropClick = false - return - } - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus() - : this.hide() - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - // these following methods are used to handle overflowing modals - - Modal.prototype.handleUpdate = function () { - this.adjustDialog() - } - - Modal.prototype.adjustDialog = function () { - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight - - this.$element.css({ - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' - }) - } - - Modal.prototype.resetAdjustments = function () { - this.$element.css({ - paddingLeft: '', - paddingRight: '' - }) - } - - Modal.prototype.checkScrollbar = function () { - var fullWindowWidth = window.innerWidth - if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 - var documentElementRect = document.documentElement.getBoundingClientRect() - fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) - } - this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - this.originalBodyPad = document.body.style.paddingRight || '' - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', this.originalBodyPad) - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.5 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = null - this.options = null - this.enabled = null - this.timeout = null - this.hoverState = null - this.$element = null - this.inState = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.5' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) - this.inState = { click: false, hover: false, focus: false } - - if (this.$element[0] instanceof document.constructor && !this.options.selector) { - throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') - } - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true - } - - if (self.tip().hasClass('in') || self.hoverState == 'in') { - self.hoverState = 'in' - return - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.isInStateTrue = function () { - for (var key in this.inState) { - if (this.inState[key]) return true - } - - return false - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false - } - - if (self.isInStateTrue()) return - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - this.$element.trigger('inserted.bs.' + this.type) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var viewportDim = this.getPosition(this.$viewport) - - placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top += marginTop - offset.left += marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { - this.arrow() - .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isVertical ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = $(this.$tip) - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && $tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - if (!this.$tip) { - this.$tip = $(this.options.template) - if (this.$tip.length != 1) { - throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') - } - } - return this.$tip - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - if (e) { - self.inState.click = !self.inState.click - if (self.isInStateTrue()) self.enter(self) - else self.leave(self) - } else { - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - if (that.$tip) { - that.$tip.detach() - } - that.$tip = null - that.$arrow = null - that.$viewport = null - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: popover.js v3.3.5 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.5' - - Popover.DEFAULTS = $.extend({}, $.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>' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.5 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - this.$body = $(document.body) - this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.5' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var that = this - var offsetMethod = 'offset' - var offsetBase = 0 - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - that.offsets.push(this[0]) - that.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tab.js v3.3.5 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - // jscs:disable requireDollarBeforejQueryAssignment - this.element = $(element) - // jscs:enable requireDollarBeforejQueryAssignment - } - - Tab.VERSION = '3.3.5' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu').length) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: affix.js v3.3.5 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = null - this.unpin = null - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.5' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && scrollTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = Math.max($(document).height(), $(document.body).height()) - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); diff --git a/dashboard/js/bootstrap.min.js b/dashboard/js/bootstrap.min.js deleted file mode 100644 index 133aeecb..00000000 --- a/dashboard/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under the MIT license - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(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.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};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.3.5",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]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"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")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),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"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(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),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){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.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},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,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&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};var e=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(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.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 in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(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 c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}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.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&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",c).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,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",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.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,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 d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},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.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},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("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},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|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,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){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");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)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},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)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(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 d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):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+=g,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=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},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(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),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,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},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.right&&(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(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},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))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};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|hide/.test(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.3.5",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").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},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")};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){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}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.3.5",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=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.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 this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();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")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};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.3.5",c.TRANSITION_DURATION=150,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"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.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};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(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=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},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=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};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||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/dashboard/js/custom.js b/dashboard/js/custom.js deleted file mode 100644 index 34ff0928..00000000 --- a/dashboard/js/custom.js +++ /dev/null @@ -1,159 +0,0 @@ -$(document).ready(function() { - - -// FLEXSLIDER - CONTENT SLIDER - -// $('#slider').flexslider({ -// animation: 'slide', -// animationLoop: false, -// controlNav: false, -// prevText: '', -// nextText: '', -// }); - - -// FLEXSLIDER - IMAGE SLIDER - -// $('.slider-images').flexslider({ -// animation: 'fade', -// animationLoop: false, -// controlNav: false, -// prevText: '', -// nextText: '', -// }); - -//FLEXSLIDER NAVIGATION BUTTONS - -// var buttons = $('.featured .flex-direction-nav'); - -// $(".featured").hover( function() { -// $(buttons).stop().fadeIn('fast') -// }).mouseleave( function() { -// $(buttons).stop().fadeOut('fast') -// }); - -//REMOVES JAVASCRIPT FIX CLASSES - -// $('#portfolio-content').removeClass("js-off-overflow"); -// $('.portfolio-thumbs').removeClass("js-off-position"); - - -//INITIALIZES NIVO LIGHTBOX PLUGIN - -// $('a[data-nivo-rel^="nivoLightbox"]').nivoLightbox({ -// effect: 'fade' -// }); - - -//PREVENTING THE FLASH OF UNSTYLED CONTENT - - $('.no-fouc').removeClass('no-fouc'); - - -//INITIALIZES TWITTER FEED PLUGIN - - $('#twitter-feed').tweet({ - username: "myusername", //just enter your twitter username - //modpath: "./twitter/", - join_text: "auto", - avatar_size: null, - count: 2, //number of tweets showing - auto_join_text_default: "", - loading_text: "loading latest tweets..." //text displayed while loading tweets - }); - - -// REMOVES THE STICKY NAVIGATION FROM IE7 - - if($.browser.msie && parseInt($.browser.version, 10) <= 7) { - $('#navigation').removeClass('sticky-nav'); - } - - -//INITIALIZES THE PERSISTENT TOP NAVIGATION BAR ON SMALLER SCREENS - - $(window).load(function(){ - $("#left").sticky({ topSpacing: 0 }); - $(".sticky-wrapper").css({height : '0'}); - }); - - -//LOCAL LINK FUNCTION - - $('.local').click(function() { - var ele = $(this); - var location = $(ele).attr('href'); - - $('html, body').animate({ - scrollTop: $(location).offset().top - }, 1000); - }); - - -//NAVIGATION - - -// $('#nav-scroll .navigation').onePageNav({ -// currentClass: 'active' -// }); - - -//ISOTOPE SETUP - - // cache container -// var $container = $('.portfolio-thumbs'); -// var $filter_nav = $('.filters li a'); - // filter items when filter link is clicked - -// $filter_nav.click(function () { -// $filter_nav.removeClass('current'); -// $(this).addClass('current'); -// var selector = $(this).attr('data-filter'); -// $container.isotope({ -// filter: selector -// }); -// return false; -// }); - -// $(window).load(function () { -// $('.portfolio-thumbs').isotope({ -// filter: '*', -// layoutMode: 'fitRows' - -// }); -// }); - - -// PORTFOLIO HOVER EFFECT - -// $('ul.portfolio-thumbs li').hover(function(){ -// $(".overlay", this).stop().animate({top:'0px'},{queue:false,duration:300}); -// }, function() { -// $(".overlay", this).stop().animate({top:'190px'},{queue:false,duration:300}); -// }); - - -//TOGGLE PANELS - - $('.toggle-content').hide(); //hides the toggled content, if the javascript is disabled the content is visible - - $('.toggle-link').click(function () { - if ($(this).is('.toggle-close')) { - $(this).removeClass('toggle-close').addClass('toggle-open').parent().next('.toggle-content').slideToggle(300); - return false; - } - - else { - $(this).removeClass('toggle-open').addClass('toggle-close').parent().next('.toggle-content').slideToggle(300); - return false; - } - }); - - - -}); //END of jQuery - - - - - diff --git a/dashboard/js/github-activity.js b/dashboard/js/github-activity.js deleted file mode 100644 index 9897fac1..00000000 --- a/dashboard/js/github-activity.js +++ /dev/null @@ -1,379 +0,0 @@ -/*! - * GitHub Activity Stream - v0.1.3 - 10/7/2015 - * https://github.com/caseyscarborough/github-activity - * - * Copyright (c) 2015 Casey Scarborough - * MIT License - * http://opensource.org/licenses/MIT - */ - -var GitHubActivity = (function() { - 'use strict'; - - var obj = {}; - - var methods = { - renderLink: function(url, title, cssClass) { - if (!title) { title = url; } - if (typeof(cssClass) === 'undefined') cssClass = ""; - return Mustache.render('<a class="' + cssClass + '" href="{{url}}" target="_blank">{{{title}}}</a>', { url: url, title: title }); - }, - renderGitHubLink: function(url, title, cssClass) { - if (!title) { title = url; } - if (typeof(cssClass) === 'undefined') cssClass = ""; - return methods.renderLink('https://github.com/' + url, title, cssClass); - }, - getMessageFor: function(data) { - var p = data.payload; - data.repoLink = methods.renderGitHubLink(data.repo.name); - data.userGravatar = Mustache.render('<div class="gha-gravatar-user"><img src="{{url}}" class="gha-gravatar-small"></div>', { url: data.actor.avatar_url }); - - // Get the branch name if it exists. - if (p.ref) { - if (p.ref.substring(0, 11) === 'refs/heads/') { - data.branch = p.ref.substring(11); - } else { - data.branch = p.ref; - } - data.branchLink = methods.renderGitHubLink(data.repo.name + '/tree/' + data.branch, data.branch) + ' at '; - } - - // Only show the first 6 characters of the SHA of each commit if given. - if (p.commits) { - var shaDiff = p.before + '...' + p.head; - var length = p.commits.length; - if (length === 2) { - // If there are 2 commits, show message 'View comparison for these 2 commits >>' - data.commitsMessage = Mustache.render('<a href="https://github.com/{{repo}}/compare/{{shaDiff}}">View comparison for these 2 commits »</a>', { repo: data.repo.name, shaDiff: shaDiff }); - } else if (length > 2) { - // If there are more than two, show message '(numberOfCommits - 2) more commits >>' - data.commitsMessage = Mustache.render('<a href="https://github.com/{{repo}}/compare/{{shaDiff}}">{{length}} more ' + pluralize('commit', length - 2) + ' »</a>', { repo: data.repo.name, shaDiff: shaDiff, length: p.size - 2 }); - } - - p.commits.forEach(function(d, i) { - if (d.message.length > 66) { - d.message = d.message.substring(0, 66) + '...'; - } - if (i < 2) { - d.shaLink = methods.renderGitHubLink(data.repo.name + '/commit/' + d.sha, d.sha.substring(0, 6), 'gha-sha'); - d.committerGravatar = Mustache.render('<img class="gha-gravatar-commit" src="https://gravatar.com/avatar/{{hash}}?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png" width="16" />', { hash: md5(d.author.email) }); - } else { - // Delete the rest of the commits after the first 2, and then break out of the each loop. - p.commits.splice(2, p.size); - return false; - } - }); - } - - // Get the link if this is an IssueEvent. - if (p.issue) { - var title = data.repo.name + "#" + p.issue.number; - data.issueLink = methods.renderLink(p.issue.html_url, title); - data.issueType = "issue"; - if (p.issue.pull_request) { - data.issueType = "pull request"; - } - } - - // Retrieve the pull request link if this is a PullRequestEvent. - if (p.pull_request) { - var pr = p.pull_request; - data.pullRequestLink = methods.renderLink(pr.html_url, data.repo.name + "#" + pr.number); - data.mergeMessage = ""; - - // If this was a merge, set the merge message. - if (p.pull_request.merged) { - p.action = "merged"; - var message = '{{c}} ' + pluralize('commit', pr.commits) + ' with {{a}} ' + pluralize('addition', pr.additions) + ' and {{d}} ' + pluralize('deletion', pr.deletions); - data.mergeMessage = Mustache.render('<br><small class="gha-message-merge">' + message + '</small>', { c: pr.commits, a: pr.additions, d: pr.deletions }); - } - } - - // Get the link if this is a PullRequestReviewCommentEvent - if (p.comment && p.comment.pull_request_url) { - var title = data.repo.name + "#" + p.comment.pull_request_url.split('/').pop(); - data.pullRequestLink = methods.renderGitHubLink(p.comment.pull_request_url, title); - } - - // Get the comment if one exists, and trim it to 150 characters. - if (p.comment && p.comment.body) { - data.comment = p.comment.body; - if (data.comment.length > 150) { - data.comment = data.comment.substring(0, 150) + '...'; - } - if (p.comment.html_url && p.comment.commit_id) { - var title = data.repo.name + '@' + p.comment.commit_id.substring(0, 10); - data.commentLink = methods.renderLink(p.comment.html_url, title); - } - } - - if (data.type === 'ReleaseEvent') { - data.tagLink = methods.renderLink(p.release.html_url, p.release.tag_name); - data.zipLink = methods.renderLink(p.release.zipball_url, 'Download Source Code (zip)'); - } - - // Wiki event - if (data.type === 'GollumEvent') { - var page = p.pages[0]; - data.actionType = page.action; - data.message = data.actionType.charAt(0).toUpperCase() + data.actionType.slice(1) + ' '; - data.message += methods.renderGitHubLink(page.html_url, page.title); - } - - if (data.type === 'FollowEvent') data.targetLink = methods.renderGitHubLink(p.target.login); - if (data.type === 'ForkEvent') data.forkLink = methods.renderGitHubLink(p.forkee.full_name); - if (data.type === 'MemberEvent') data.memberLink = methods.renderGitHubLink(p.member.login); - - if (p.gist) { - data.actionType = p.action === 'fork' ? p.action + 'ed' : p.action + 'd'; - data.gistLink = methods.renderLink(p.gist.html_url, 'gist: ' + p.gist.id); - } - - var message = Mustache.render(templates[data.type], data); - var timeString = millisecondsToStr(new Date() - new Date(data.created_at)); - var icon; - - if (data.type == 'CreateEvent' && (['repository', 'branch', 'tag'].indexOf(p.ref_type) >= 0)) { - // Display separate icons depending on type of create event. - icon = icons[data.type + '_' + p.ref_type]; - } else { - icon = icons[data.type] - } - var activity = { message: message, icon: icon, timeString: timeString, userLink: methods.renderGitHubLink(data.actor.login) }; - - if (singleLineActivities.indexOf(data.type) > -1) { - return Mustache.render(templates.SingleLineActivity, activity); - } - return Mustache.render(templates.Activity, activity); - }, - getHeaderHTML: function(data) { - if (data.name) { - data.userNameLink = methods.renderLink(data.html_url, data.name); - } else { - data.withoutName = ' without-name'; - } - data.userLink = methods.renderLink(data.html_url, data.login); - data.gravatarLink = methods.renderLink(data.html_url, '<img src="' + data.avatar_url + '">'); - - return Mustache.render(templates.UserHeader, data); - }, - getActivityHTML: function(data, limit) { - var text = ''; - var dataLength = data.length; - if (limit && limit > dataLength) { - limit = dataLength; - } - limit = limit ? limit : dataLength; - - if (limit === 0) { - return Mustache.render(templates.NoActivity, {}); - } - for (var i = 0; i < limit; i++) { - text += methods.getMessageFor(data[i]); - } - - return text; - }, - getOutputFromRequest: function(url, callback) { - var request = new XMLHttpRequest(); - request.open('GET', url); - request.setRequestHeader('Accept', 'application/vnd.github.v3+json'); - - request.onreadystatechange = function() { - if (request.readyState === 4) { - if (request.status >= 200 && request.status < 300){ - var data = JSON.parse(request.responseText); - callback(undefined, data); - } else { - callback('request for ' + url + ' yielded status ' + request.status); - } - } - }; - - request.onerror = function() { callback('An error occurred connecting to ' + url); }; - request.send(); - }, - renderStream: function(output, div) { - div.innerHTML = Mustache.render(templates.Stream, { text: output, footer: templates.Footer }); - div.style.position = 'relative'; - }, - writeOutput: function(selector, content) { - var div = selector.charAt(0) === '#' ? document.getElementById(selector.substring(1)) : document.getElementsByClassName(selector.substring(1)); - if (div instanceof HTMLCollection) { - for (var i = 0; i < div.length; i++) { - methods.renderStream(content, div[i]); - } - } else { - methods.renderStream(content, div); - } - }, - renderIfReady: function(selector, header, activity) { - if (header && activity) { - methods.writeOutput(selector, header + activity); - } - } - }; - - obj.feed = function(options) { - if (!options.username || !options.selector) { - throw "You must specify the username and selector options for the activity stream."; - return false; - } - - var selector = options.selector, - userUrl = 'https://api.github.com/users/' + options.username, - eventsUrl = userUrl + '/events', - header, - activity; - - if (!!options.repository){ - eventsUrl = 'https://api.github.com/repos/' + options.username + '/' + options.repository + '/events'; - } - - if (options.clientId && options.clientSecret) { - var authString = '?client_id=' + options.clientId + '&client_secret=' + options.clientSecret; - userUrl += authString; - eventsUrl += authString; - } - - if (!!options.eventsUrl){ - eventsUrl = options.eventsUrl; - } - - // Allow templates override - if (typeof options.templates == 'object') { - for (var template in templates) { - if (typeof options.templates[template] == 'string') { - templates[template] = options.templates[template]; - } - } - } - - methods.getOutputFromRequest(userUrl, function(error, output) { - if (error) { - header = Mustache.render(templates.UserNotFound, { username: options.username }); - } else { - header = methods.getHeaderHTML(output) - } - methods.renderIfReady(selector, header, activity) - }); - - methods.getOutputFromRequest(eventsUrl, function(error, output) { - if (error) { - activity = Mustache.render(templates.EventsNotFound, { username: options.username }); - } else { - var limit = options.limit != 'undefined' ? parseInt(options.limit, 10) : null; - activity = methods.getActivityHTML(output, limit); - } - methods.renderIfReady(selector, header, activity); - }); - }; - - return obj; -}()); - -// Takes in milliseconds and converts it to a human readable time, -// such as 'about 3 hours ago' or '23 days ago' -function millisecondsToStr(milliseconds) { - 'use strict'; - - function numberEnding(number) { - return (number > 1) ? 's ago' : ' ago'; - } - var temp = Math.floor(milliseconds / 1000); - - var years = Math.floor(temp / 31536000); - if (years) return years + ' year' + numberEnding(years); - - var months = Math.floor((temp %= 31536000) / 2592000); - if (months) return months + ' month' + numberEnding(months); - - var days = Math.floor((temp %= 2592000) / 86400); - if (days) return days + ' day' + numberEnding(days); - - var hours = Math.floor((temp %= 86400) / 3600); - if (hours) return 'about ' + hours + ' hour' + numberEnding(hours); - - var minutes = Math.floor((temp %= 3600) / 60); - if (minutes) return minutes + ' minute' + numberEnding(minutes); - - var seconds = temp % 60; - if (seconds) return seconds + ' second' + numberEnding(seconds); - - return 'just now'; -} - -// Pluralizes a word, but only works when the word requires -// an 's' to be added for pluralization. -function pluralize(word, number) { - // Yeah I know, this sucks. - if (number !== 1) return word + 's'; - return word; -} - -/** MD5 methods written by Joseph Myers. http://www.myersdaily.org/joseph/javascript/md5-text.html */ -function md5cycle(f,h){var g=f[0],e=f[1],j=f[2],i=f[3];g=ff(g,e,j,i,h[0],7,-680876936);i=ff(i,g,e,j,h[1],12,-389564586);j=ff(j,i,g,e,h[2],17,606105819);e=ff(e,j,i,g,h[3],22,-1044525330);g=ff(g,e,j,i,h[4],7,-176418897);i=ff(i,g,e,j,h[5],12,1200080426);j=ff(j,i,g,e,h[6],17,-1473231341);e=ff(e,j,i,g,h[7],22,-45705983);g=ff(g,e,j,i,h[8],7,1770035416);i=ff(i,g,e,j,h[9],12,-1958414417);j=ff(j,i,g,e,h[10],17,-42063);e=ff(e,j,i,g,h[11],22,-1990404162);g=ff(g,e,j,i,h[12],7,1804603682);i=ff(i,g,e,j,h[13],12,-40341101);j=ff(j,i,g,e,h[14],17,-1502002290);e=ff(e,j,i,g,h[15],22,1236535329);g=gg(g,e,j,i,h[1],5,-165796510);i=gg(i,g,e,j,h[6],9,-1069501632);j=gg(j,i,g,e,h[11],14,643717713);e=gg(e,j,i,g,h[0],20,-373897302);g=gg(g,e,j,i,h[5],5,-701558691);i=gg(i,g,e,j,h[10],9,38016083);j=gg(j,i,g,e,h[15],14,-660478335);e=gg(e,j,i,g,h[4],20,-405537848);g=gg(g,e,j,i,h[9],5,568446438);i=gg(i,g,e,j,h[14],9,-1019803690);j=gg(j,i,g,e,h[3],14,-187363961);e=gg(e,j,i,g,h[8],20,1163531501);g=gg(g,e,j,i,h[13],5,-1444681467);i=gg(i,g,e,j,h[2],9,-51403784);j=gg(j,i,g,e,h[7],14,1735328473);e=gg(e,j,i,g,h[12],20,-1926607734);g=hh(g,e,j,i,h[5],4,-378558);i=hh(i,g,e,j,h[8],11,-2022574463);j=hh(j,i,g,e,h[11],16,1839030562);e=hh(e,j,i,g,h[14],23,-35309556);g=hh(g,e,j,i,h[1],4,-1530992060);i=hh(i,g,e,j,h[4],11,1272893353);j=hh(j,i,g,e,h[7],16,-155497632);e=hh(e,j,i,g,h[10],23,-1094730640);g=hh(g,e,j,i,h[13],4,681279174);i=hh(i,g,e,j,h[0],11,-358537222);j=hh(j,i,g,e,h[3],16,-722521979);e=hh(e,j,i,g,h[6],23,76029189);g=hh(g,e,j,i,h[9],4,-640364487);i=hh(i,g,e,j,h[12],11,-421815835);j=hh(j,i,g,e,h[15],16,530742520);e=hh(e,j,i,g,h[2],23,-995338651);g=ii(g,e,j,i,h[0],6,-198630844);i=ii(i,g,e,j,h[7],10,1126891415);j=ii(j,i,g,e,h[14],15,-1416354905);e=ii(e,j,i,g,h[5],21,-57434055);g=ii(g,e,j,i,h[12],6,1700485571);i=ii(i,g,e,j,h[3],10,-1894986606);j=ii(j,i,g,e,h[10],15,-1051523);e=ii(e,j,i,g,h[1],21,-2054922799);g=ii(g,e,j,i,h[8],6,1873313359);i=ii(i,g,e,j,h[15],10,-30611744);j=ii(j,i,g,e,h[6],15,-1560198380);e=ii(e,j,i,g,h[13],21,1309151649);g=ii(g,e,j,i,h[4],6,-145523070);i=ii(i,g,e,j,h[11],10,-1120210379);j=ii(j,i,g,e,h[2],15,718787259);e=ii(e,j,i,g,h[9],21,-343485551);f[0]=add32(g,f[0]);f[1]=add32(e,f[1]);f[2]=add32(j,f[2]);f[3]=add32(i,f[3])}function cmn(h,e,d,c,g,f){e=add32(add32(e,h),add32(c,f));return add32((e<<g)|(e>>>(32-g)),d)}function ff(g,f,k,j,e,i,h){return cmn((f&k)|((~f)&j),g,f,e,i,h)}function gg(g,f,k,j,e,i,h){return cmn((f&j)|(k&(~j)),g,f,e,i,h)}function hh(g,f,k,j,e,i,h){return cmn(f^k^j,g,f,e,i,h)}function ii(g,f,k,j,e,i,h){return cmn(k^(f|(~j)),g,f,e,i,h)}function md51(c){txt="";var e=c.length,d=[1732584193,-271733879,-1732584194,271733878],b;for(b=64;b<=c.length;b+=64){md5cycle(d,md5blk(c.substring(b-64,b)))}c=c.substring(b-64);var a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(b=0;b<c.length;b++){a[b>>2]|=c.charCodeAt(b)<<((b%4)<<3)}a[b>>2]|=128<<((b%4)<<3);if(b>55){md5cycle(d,a);for(b=0;b<16;b++){a[b]=0}}a[14]=e*8;md5cycle(d,a);return d}function md5blk(b){var c=[],a;for(a=0;a<64;a+=4){c[a>>2]=b.charCodeAt(a)+(b.charCodeAt(a+1)<<8)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+3)<<24)}return c}var hex_chr="0123456789abcdef".split("");function rhex(c){var b="",a=0;for(;a<4;a++){b+=hex_chr[(c>>(a*8+4))&15]+hex_chr[(c>>(a*8))&15]}return b}function hex(a){for(var b=0;b<a.length;b++){a[b]=rhex(a[b])}return a.join("")}function md5(a){return hex(md51(a))}function add32(d,c){return(d+c)&4294967295}if(md5("hello")!="5d41402abc4b2a76b9719d911017c592"){function add32(a,d){var c=(a&65535)+(d&65535),b=(a>>16)+(d>>16)+(c>>16);return(b<<16)|(c&65535)}}; - -var templates = { - Stream: '<div class="gha-feed">{{{text}}}<div class="gha-push-small"></div>{{{footer}}}</div>', - Activity: '<div id="{{id}}" class="gha-activity">\ - <div class="gha-activity-icon"><span class="octicon octicon-{{icon}}"></span></div>\ - <div class="gha-message"><div class="gha-time">{{{timeString}}}</div>{{{userLink}}} {{{message}}}</div>\ - <div class="gha-clear"></div>\ - </div>', - SingleLineActivity: '<div class="gha-activity gha-small">\ - <div class="gha-activity-icon"><span class="octicon octicon-{{icon}}"></span></div>\ - <div class="gha-message">{{{userLink}}} {{{message}}}</div><div class="gha-time">{{{timeString}}}</div>\ - <div class="gha-clear"></div>\ - </div>', - UserHeader: '<div class="gha-header" style="display:none">\ - <div class="gha-github-icon"><span class="octicon octicon-mark-github"></span></div>\ - <div class="gha-user-info{{withoutName}}">{{{userNameLink}}}<p>{{{userLink}}}</p></div>\ - <div class="gha-gravatar">{{{gravatarLink}}}</div>\ - </div><div class="gha-push" style="display:none"></div>', - Footer: '<div class="gha-footer">QuickBox Repository Public Activity', - NoActivity: '<div class="gha-info">This user does not have any public activity yet.</div>', - UserNotFound: '<div class="gha-info">User {{username}} wasn\'t found.</div>', - EventsNotFound: '<div class="gha-info">Events for user {{username}} not found.</div>', - CommitCommentEvent: 'commented on commit {{{commentLink}}}<br>{{{userGravatar}}}<small>{{comment}}</small>', - CreateEvent: 'created {{payload.ref_type}} {{{branchLink}}}{{{repoLink}}}', - DeleteEvent: 'deleted {{payload.ref_type}} {{payload.ref}} at {{{repoLink}}}', - FollowEvent: 'started following {{{targetLink}}}', - ForkEvent: 'forked {{{repoLink}}} to {{{forkLink}}}', - GistEvent: '{{actionType}} {{{gistLink}}}', - GollumEvent: '{{actionType}} the {{{repoLink}}} wiki<br>{{{userGravatar}}}<small>{{{message}}}</small>', - IssueCommentEvent: 'commented on {{issueType}} {{{issueLink}}}<br>{{{userGravatar}}}<small>{{comment}}</small>', - IssuesEvent: '{{payload.action}} issue {{{issueLink}}}<br>{{{userGravatar}}}<small>{{payload.issue.title}}</small>', - MemberEvent: 'added {{{memberLink}}} to {{{repoLink}}}', - PublicEvent: 'open sourced {{{repoLink}}}', - PullRequestEvent: '{{payload.action}} pull request {{{pullRequestLink}}}<br>{{{userGravatar}}}<small>{{payload.pull_request.title}}</small>{{{mergeMessage}}}', - PullRequestReviewCommentEvent: 'commented on pull request {{{pullRequestLink}}}<br>{{{userGravatar}}}<small>{{comment}}</small>', - PushEvent: 'pushed to {{{branchLink}}}{{{repoLink}}}<br>\ - <ul class="gha-commits">{{#payload.commits}}<li><small>{{{committerGravatar}}} {{{shaLink}}} {{message}}</small></li>{{/payload.commits}}</ul>\ - <small class="gha-message-commits">{{{commitsMessage}}}</small>', - ReleaseEvent: 'released {{{tagLink}}} at {{{repoLink}}}<br>{{{userGravatar}}}<small><span class="octicon octicon-cloud-download"></span> {{{zipLink}}}</small>', - WatchEvent: 'starred {{{repoLink}}}' -}, - -icons = { - CommitCommentEvent: 'comment-discussion', - CreateEvent_repository: 'repo-create', - CreateEvent_tag: 'tag-add', - CreateEvent_branch: 'git-branch-create', - DeleteEvent: 'repo-delete', - FollowEvent: 'person-follow', - ForkEvent: 'repo-forked', - GistEvent: 'gist', - GollumEvent: 'repo', - IssuesEvent: 'issue-opened', - IssueCommentEvent: 'comment-discussion', - MemberEvent: 'person', - PublicEvent: 'globe', - PullRequestEvent: 'git-pull-request', - PullRequestReviewCommentEvent: 'comment-discussion', - PushEvent: 'git-commit', - ReleaseEvent: 'tag-add', - WatchEvent: 'star' -}, - -singleLineActivities = [ 'CreateEvent', 'DeleteEvent', 'FollowEvent', 'ForkEvent', 'GistEvent', 'MemberEvent', 'WatchEvent' ]; diff --git a/dashboard/js/jquery-1.10.2.min.js b/dashboard/js/jquery-1.10.2.min.js deleted file mode 100644 index 76d21a46..00000000 --- a/dashboard/js/jquery-1.10.2.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery-1.10.2.min.map -*/ -(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.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%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t -}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},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(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={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:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); -u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.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(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,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":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window); \ No newline at end of file diff --git a/dashboard/js/jquery-easing-1.3.js b/dashboard/js/jquery-easing-1.3.js deleted file mode 100644 index eea539ec..00000000 --- a/dashboard/js/jquery-easing-1.3.js +++ /dev/null @@ -1,205 +0,0 @@ -/* - * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ - * - * Uses the built in easing capabilities added In jQuery 1.1 - * to offer multiple easing options - * - * TERMS OF USE - jQuery Easing - * - * Open source under the BSD License. - * - * Copyright © 2008 George McGinley Smith - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * -*/ - -// t: current time, b: begInnIng value, c: change In value, d: duration -jQuery.easing['jswing'] = jQuery.easing['swing']; - -jQuery.extend( jQuery.easing, -{ - def: 'easeOutQuad', - swing: function (x, t, b, c, d) { - //alert(jQuery.easing.default); - return jQuery.easing[jQuery.easing.def](x, t, b, c, d); - }, - easeInQuad: function (x, t, b, c, d) { - return c*(t/=d)*t + b; - }, - easeOutQuad: function (x, t, b, c, d) { - return -c *(t/=d)*(t-2) + b; - }, - easeInOutQuad: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t + b; - return -c/2 * ((--t)*(t-2) - 1) + b; - }, - easeInCubic: function (x, t, b, c, d) { - return c*(t/=d)*t*t + b; - }, - easeOutCubic: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t + 1) + b; - }, - easeInOutCubic: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t + b; - return c/2*((t-=2)*t*t + 2) + b; - }, - easeInQuart: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t + b; - }, - easeOutQuart: function (x, t, b, c, d) { - return -c * ((t=t/d-1)*t*t*t - 1) + b; - }, - easeInOutQuart: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t + b; - return -c/2 * ((t-=2)*t*t*t - 2) + b; - }, - easeInQuint: function (x, t, b, c, d) { - return c*(t/=d)*t*t*t*t + b; - }, - easeOutQuint: function (x, t, b, c, d) { - return c*((t=t/d-1)*t*t*t*t + 1) + b; - }, - easeInOutQuint: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; - return c/2*((t-=2)*t*t*t*t + 2) + b; - }, - easeInSine: function (x, t, b, c, d) { - return -c * Math.cos(t/d * (Math.PI/2)) + c + b; - }, - easeOutSine: function (x, t, b, c, d) { - return c * Math.sin(t/d * (Math.PI/2)) + b; - }, - easeInOutSine: function (x, t, b, c, d) { - return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; - }, - easeInExpo: function (x, t, b, c, d) { - return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; - }, - easeOutExpo: function (x, t, b, c, d) { - return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; - }, - easeInOutExpo: function (x, t, b, c, d) { - if (t==0) return b; - if (t==d) return b+c; - if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; - return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; - }, - easeInCirc: function (x, t, b, c, d) { - return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; - }, - easeOutCirc: function (x, t, b, c, d) { - return c * Math.sqrt(1 - (t=t/d-1)*t) + b; - }, - easeInOutCirc: function (x, t, b, c, d) { - if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; - return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; - }, - easeInElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; - }, - easeOutElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; - }, - easeInOutElastic: function (x, t, b, c, d) { - var s=1.70158;var p=0;var a=c; - if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); - if (a < Math.abs(c)) { a=c; var s=p/4; } - else var s = p/(2*Math.PI) * Math.asin (c/a); - if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; - return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; - }, - easeInBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c*(t/=d)*t*((s+1)*t - s) + b; - }, - easeOutBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; - }, - easeInOutBack: function (x, t, b, c, d, s) { - if (s == undefined) s = 1.70158; - if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; - return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; - }, - easeInBounce: function (x, t, b, c, d) { - return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; - }, - easeOutBounce: function (x, t, b, c, d) { - if ((t/=d) < (1/2.75)) { - return c*(7.5625*t*t) + b; - } else if (t < (2/2.75)) { - return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; - } else if (t < (2.5/2.75)) { - return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; - } else { - return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; - } - }, - easeInOutBounce: function (x, t, b, c, d) { - if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; - return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; - } -}); - -/* - * - * TERMS OF USE - EASING EQUATIONS - * - * Open source under the BSD License. - * - * Copyright © 2001 Robert Penner - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * Neither the name of the author nor the names of contributors may be used to endorse - * or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ \ No newline at end of file diff --git a/dashboard/js/jquery-migrate-1.1.0.min.js b/dashboard/js/jquery-migrate-1.1.0.min.js deleted file mode 100644 index b11c91e0..00000000 --- a/dashboard/js/jquery-migrate-1.1.0.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! jQuery Migrate v1.1.0 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */ -jQuery.migrateMute===void 0&&(jQuery.migrateMute=!0),function(e,t,n){"use strict";function r(n){o[n]||(o[n]=!0,e.migrateWarnings.push(n),t.console&&console.warn&&!e.migrateMute&&(console.warn("JQMIGRATE: "+n),e.migrateTrace&&console.trace&&console.trace()))}function a(t,a,o,i){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(i),o},set:function(e){r(i),o=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=o}var o={};e.migrateWarnings=[],!e.migrateMute&&t.console&&console.log&&console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){o={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQuery is not compatible with Quirks Mode");var i={},s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",i,"jQuery.attrFn is deprecated"),e.attr=function(t,a,o,i){var u=a.toLowerCase(),c=t&&t.nodeType;return i&&4>s.length&&(r("jQuery.fn.attr( props, pass ) is deprecated"),t&&!d.test(c)&&e.isFunction(e.fn[a]))?e(t)[a](o):("type"===a&&o!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[u]&&p.test(u)&&(e.attrHooks[u]={get:function(t,r){var a,o=e.prop(t,r);return o===!0||"boolean"!=typeof o&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(u)&&r("jQuery.fn.attr('"+u+"') may use property instead of attribute")),s.call(e,t,a,o))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQuery.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQuery.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^(?:[^<]*(<[\w\W]+>)[^>]*|#([\w\-]*))$/;e.fn.init=function(t,n,a){var o;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(o=y.exec(t))&&o[1]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(e.trim(t),n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQuery.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h,a(e,"browser",h,"jQuery.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQuery.sub() is deprecated"),t};var b=e.fn.data;e.fn.data=function(t){var a,o,i=this[0];return!i||"events"!==t||1!==arguments.length||(a=e.data(i,t),o=e._data(i,t),a!==n&&a!==o||o===n)?b.apply(this,arguments):(r("Use of jQuery.fn.data('events') is deprecated"),o)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,o,i){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQuery.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),o)for(c=function(e){return!e.type||j.test(e.type)?i?i.push(e.parentNode?e.parentNode.removeChild(e):e):o.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(o.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,C=e.fn.live,T=e.fn.die,M="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",S=RegExp("\\b(?:"+M+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,o){e!==document&&S.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,o)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQuery.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQuery.fn.toggle(handler, handler...) is deprecated");var a=arguments,o=t.guid||e.guid++,i=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%i;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=o;a.length>i;)a[i++].guid=o;return this.click(s)},e.fn.live=function(t,n,a){return r("jQuery.fn.live() is deprecated"),C?C.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQuery.fn.die() is deprecated"),T?T.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return!n&!S.test(e)&&r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(M.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQuery,window); -//@ sourceMappingURL=dist/jquery-migrate.min.map \ No newline at end of file diff --git a/dashboard/js/jquery-ui-1.9.1.custom.min.js b/dashboard/js/jquery-ui-1.9.1.custom.min.js deleted file mode 100644 index 267b7ee9..00000000 --- a/dashboard/js/jquery-ui-1.9.1.custom.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery UI - v1.9.1 - 2012-11-17 -* http://jqueryui.com -* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js -* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */ - -(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.9.1",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e(function(){var t=document.body,n=t.appendChild(n=document.createElement("div"));n.offsetHeight,e.extend(n.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=n.offsetHeight===100,e.support.selectstart="onselectstart"in n,t.removeChild(n).style.display="none"}),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=parseFloat(t[1],10)===6}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},contains:e.contains,hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)},isOverAxis:function(e,t,n){return e>t&&e<t+n},isOver:function(t,n,r,i,s,o){return e.ui.isOverAxis(t,r,s)&&e.ui.isOverAxis(n,i,o)}})})(jQuery);(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a=t.split(".")[0];t=t.split(".")[1],i=a+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[a]=e[a]||{},s=e[a][t],o=e[a][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,i){e.isFunction(i)&&(r[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},r=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=r,s=i.apply(this,arguments),this._super=t,this._superApply=n,s}}())}),o.prototype=e.widget.extend(u,{widgetEventPrefix:u.widgetEventPrefix||t},r,{constructor:o,namespace:a,widgetName:t,widgetBaseClass:i,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():new i(o,this)}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetName,this),e.data(r,this.widgetFullName,this),this._on(this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n){var r,i=this;n?(t=r=e(t),this.bindings=this.bindings.add(t)):(n=t,t=this.element,r=this.widget()),e.each(n,function(n,s){function o(){if(i.options.disabled===!0||e(this).hasClass("ui-state-disabled"))return;return(typeof s=="string"?i[s]:s).apply(i,arguments)}typeof s!="string"&&(o.guid=s.guid=s.guid||o.guid||e.guid++);var u=n.match(/^(\w+)\s*(.*)$/),a=u[1]+i.eventNamespace,f=u[2];f?r.delegate(f,a,o):t.bind(a,o)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&(e.effects.effect[u]||e.uiBackCompat!==!1&&e.effects[u])?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);(function(e,t){var n=!1;e(document).mouseup(function(e){n=!1}),e.widget("ui.mouse",{version:"1.9.1",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return!e.ui.ie||document.documentMode>=9||!!t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(e){return this.mouseDelayMet},_mouseStart:function(e){},_mouseDrag:function(e){},_mouseStop:function(e){},_mouseCapture:function(e){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,d,v,m,g=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),w=g[0],E=(t.collision||"flip").split(" "),S={};return w.nodeType===9?(l=g.width(),d=g.height(),v={top:0,left:0}):e.isWindow(w)?(l=g.width(),d=g.height(),v={top:g.scrollTop(),left:g.scrollLeft()}):w.preventDefault?(t.at="left top",l=d=0,v={top:w.pageY,left:w.pageX}):(l=g.outerWidth(),d=g.outerHeight(),v=g.offset()),m=e.extend({},v),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),S[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),E.length===1&&(E[1]=E[0]),t.at[0]==="right"?m.left+=l:t.at[0]==="center"&&(m.left+=l/2),t.at[1]==="bottom"?m.top+=d:t.at[1]==="center"&&(m.top+=d/2),n=h(S.at,l,d),m.left+=n[0],m.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),w=p(this,"marginLeft"),x=p(this,"marginTop"),T=f+w+p(this,"marginRight")+b.width,N=c+x+p(this,"marginBottom")+b.height,C=e.extend({},m),k=h(S.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:w,marginTop:x},e.each(["left","top"],function(r,i){e.ui.position[E[r]]&&e.ui.position[E[r]][i](C,{targetWidth:l,targetHeight:d,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:y,elem:a})}),e.fn.bgiframe&&a.bgiframe(),t.using&&(u=function(e){var n=v.left-C.left,s=n+l-f,o=v.top-C.top,u=o+d-c,h={target:{element:g,left:v.left,top:v.top,width:l,height:d},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),d<c&&i(o+u)<d&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var n=e.fn.position;e.fn.position=function(r){if(!r||!r.offset)return n.call(this,r);var i=r.offset.split(" "),s=r.at.split(" ");return i.length===1&&(i[1]=i[0]),/^\d/.test(i[0])&&(i[0]="+"+i[0]),/^\d/.test(i[1])&&(i[1]="+"+i[1]),s.length===1&&(/left|center|right/.test(s[0])?s[1]="center":(s[1]=s[0],s[0]="center")),n.call(this,e.extend(r,{at:s[0]+i[0]+" "+s[1]+i[1],offset:t}))}}(jQuery)})(jQuery);(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.9.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},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.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";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(n=e.ui.ddmanager.drop(this,t)),this.dropped&&(n=this.dropped,this.dropped=!1);var r=this.element[0],i=!1;while(r&&(r=r.parentNode))r==document&&(i=!0);if(!i&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!n||this.options.revert=="valid"&&n||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,n)){var s=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){s._trigger("stop",t)!==!1&&s._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo=="parent"?this.element[0].parentNode:n.appendTo),r[0]!=this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left: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 t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[t.containment=="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t.containment=="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(t.containment=="document"?0:e(window).scrollLeft())+e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(t.containment=="document"?0:e(window).scrollTop())+(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)&&t.containment.constructor!=Array){var n=e(t.containment),r=n[0];if(!r)return;var i=n.offset(),s=e(r).css("overflow")!="hidden";this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(s?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else t.containment.constructor==Array&&(this.containment=t.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName),s=t.pageX,o=t.pageY;if(this.originalPosition){var u;if(this.containment){if(this.relative_container){var a=this.relative_container.offset();u=[this.containment[0]+a.left,this.containment[1]+a.top,this.containment[2]+a.left,this.containment[3]+a.top]}else u=this.containment;t.pageX-this.offset.click.left<u[0]&&(s=u[0]+this.offset.click.left),t.pageY-this.offset.click.top<u[1]&&(o=u[1]+this.offset.click.top),t.pageX-this.offset.click.left>u[2]&&(s=u[2]+this.offset.click.left),t.pageY-this.offset.click.top>u[3]&&(o=u[3]+this.offset.click.top)}if(n.grid){var f=n.grid[1]?this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY;o=u?f-this.offset.click.top<u[1]||f-this.offset.click.top>u[3]?f-this.offset.click.top<u[1]?f+n.grid[1]:f-n.grid[1]:f:f;var l=n.grid[0]?this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0]:this.originalPageX;s=u?l-this.offset.click.left<u[0]||l-this.offset.click.left>u[2]?l-this.offset.click.left<u[0]?l+n.grid[0]:l-n.grid[0]:l:l}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(e){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("draggable"),i=this,s=function(t){var n=this.offset.click.top,r=this.offset.click.left,i=this.positionAbs.top,s=this.positionAbs.left,o=t.height,u=t.width,a=t.top,f=t.left;return e.ui.isOver(i+n,s+r,a,f,o,u)};e.each(r.sortables,function(s){var o=!1,u=this;this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(o=!0,e.each(r.sortables,function(){return this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this!=u&&this.instance._intersectsWith(this.instance.containerCache)&&e.ui.contains(u.instance.element[0],this.instance.element[0])&&(o=!1),o})),o?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,n){var r=e("body"),i=e(this).data("draggable").options;r.css("cursor")&&(i._cursor=r.css("cursor")),r.css("cursor",i.cursor)},stop:function(t,n){var r=e(this).data("draggable").options;r._cursor&&e("body").css("cursor",r._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(t,n){var r=e(this).data("draggable");r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"&&(r.overflowOffset=r.scrollParent.offset())},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=!1;if(r.scrollParent[0]!=document&&r.scrollParent[0].tagName!="HTML"){if(!i.axis||i.axis!="x")r.overflowOffset.top+r.scrollParent[0].offsetHeight-t.pageY<i.scrollSensitivity?r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop+i.scrollSpeed:t.pageY-r.overflowOffset.top<i.scrollSensitivity&&(r.scrollParent[0].scrollTop=s=r.scrollParent[0].scrollTop-i.scrollSpeed);if(!i.axis||i.axis!="y")r.overflowOffset.left+r.scrollParent[0].offsetWidth-t.pageX<i.scrollSensitivity?r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft+i.scrollSpeed:t.pageX-r.overflowOffset.left<i.scrollSensitivity&&(r.scrollParent[0].scrollLeft=s=r.scrollParent[0].scrollLeft-i.scrollSpeed)}else{if(!i.axis||i.axis!="x")t.pageY-e(document).scrollTop()<i.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-i.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<i.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+i.scrollSpeed));if(!i.axis||i.axis!="y")t.pageX-e(document).scrollLeft()<i.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-i.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<i.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+i.scrollSpeed))}s!==!1&&e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(r,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,n){var r=e(this).data("draggable"),i=r.options;r.snapElements=[],e(i.snap.constructor!=String?i.snap.items||":data(draggable)":i.snap).each(function(){var t=e(this),n=t.offset();this!=r.element[0]&&r.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:n.top,left:n.left})})},drag:function(t,n){var r=e(this).data("draggable"),i=r.options,s=i.snapTolerance,o=n.offset.left,u=o+r.helperProportions.width,a=n.offset.top,f=a+r.helperProportions.height;for(var l=r.snapElements.length-1;l>=0;l--){var c=r.snapElements[l].left,h=c+r.snapElements[l].width,p=r.snapElements[l].top,d=p+r.snapElements[l].height;if(!(c-s<o&&o<h+s&&p-s<a&&a<d+s||c-s<o&&o<h+s&&p-s<f&&f<d+s||c-s<u&&u<h+s&&p-s<a&&a<d+s||c-s<u&&u<h+s&&p-s<f&&f<d+s)){r.snapElements[l].snapping&&r.options.snap.release&&r.options.snap.release.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=!1;continue}if(i.snapMode!="inner"){var v=Math.abs(p-f)<=s,m=Math.abs(d-a)<=s,g=Math.abs(c-u)<=s,y=Math.abs(h-o)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p-r.helperProportions.height,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c-r.helperProportions.width}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h}).left-r.margins.left)}var b=v||m||g||y;if(i.snapMode!="outer"){var v=Math.abs(p-a)<=s,m=Math.abs(d-f)<=s,g=Math.abs(c-o)<=s,y=Math.abs(h-u)<=s;v&&(n.position.top=r._convertPositionTo("relative",{top:p,left:0}).top-r.margins.top),m&&(n.position.top=r._convertPositionTo("relative",{top:d-r.helperProportions.height,left:0}).top-r.margins.top),g&&(n.position.left=r._convertPositionTo("relative",{top:0,left:c}).left-r.margins.left),y&&(n.position.left=r._convertPositionTo("relative",{top:0,left:h-r.helperProportions.width}).left-r.margins.left)}!r.snapElements[l].snapping&&(v||m||g||y||b)&&r.options.snap.snap&&r.options.snap.snap.call(r.element,t,e.extend(r._uiHash(),{snapItem:r.snapElements[l].item})),r.snapElements[l].snapping=v||m||g||y||b}}}),e.ui.plugin.add("draggable","stack",{start:function(t,n){var r=e(this).data("draggable").options,i=e.makeArray(e(r.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!i.length)return;var s=parseInt(i[0].style.zIndex)||0;e(i).each(function(e){this.style.zIndex=s+e}),this[0].style.zIndex=s+i.length}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})})(jQuery);(function(e,t){e.widget("ui.droppable",{version:"1.9.1",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var t=this.options,n=t.accept;this.isover=0,this.isout=1,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];for(var n=0;n<t.length;n++)t[n]==this&&t.splice(n,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t=="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]==this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current;if(!r||(r.currentItem||r.element)[0]==this.element[0])return!1;var i=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope==r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(t,n,r){if(!n.offset)return!1;var i=(t.positionAbs||t.position.absolute).left,s=i+t.helperProportions.width,o=(t.positionAbs||t.position.absolute).top,u=o+t.helperProportions.height,a=n.offset.left,f=a+n.proportions.width,l=n.offset.top,c=l+n.proportions.height;switch(r){case"fit":return a<=i&&s<=f&&l<=o&&u<=c;case"intersect":return a<i+t.helperProportions.width/2&&s-t.helperProportions.width/2<f&&l<o+t.helperProportions.height/2&&u-t.helperProportions.height/2<c;case"pointer":var h=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,p=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,d=e.ui.isOver(p,h,l,a,n.proportions.height,n.proportions.width);return d;case"touch":return(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c)&&(i>=a&&i<=f||s>=a&&s<=f||i<a&&s>f);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r=e.ui.ddmanager.droppables[t.options.scope]||[],i=n?n.type:null,s=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var o=0;o<r.length;o++){if(r[o].options.disabled||t&&!r[o].accept.call(r[o].element[0],t.currentItem||t.element))continue;for(var u=0;u<s.length;u++)if(s[u]==r[o].element[0]){r[o].proportions.height=0;continue e}r[o].visible=r[o].element.css("display")!="none";if(!r[o].visible)continue;i=="mousedown"&&r[o]._activate.call(r[o],n),r[o].offset=r[o].element.offset(),r[o].proportions={width:r[o].element[0].offsetWidth,height:r[o].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r=e.ui.intersect(t,this,this.options.tolerance),i=!r&&this.isover==1?"isout":r&&this.isover==0?"isover":null;if(!i)return;var s;if(this.options.greedy){var o=this.options.scope,u=this.element.parents(":data(droppable)").filter(function(){return e.data(this,"droppable").options.scope===o});u.length&&(s=e.data(u[0],"droppable"),s.greedyChild=i=="isover"?1:0)}s&&i=="isover"&&(s.isover=0,s.isout=1,s._out.call(s,n)),this[i]=1,this[i=="isout"?"isover":"isout"]=0,this[i=="isover"?"_over":"_out"].call(this,n),s&&i=="isout"&&(s.isout=0,s.isover=1,s._over.call(s,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}})(jQuery);(function(e,t){e.widget("ui.resizable",e.ui.mouse,{version:"1.9.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var t=this,n=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e('<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("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom: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({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=n.handles||(e(".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");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var r=this.handles.split(",");this.handles={};for(var i=0;i<r.length;i++){var s=e.trim(r[i]),o="ui-resizable-"+s,u=e('<div class="ui-resizable-handle '+o+'"></div>');u.css({zIndex:n.zIndex}),"se"==s&&u.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(u)}}this._renderAxis=function(t){t=t||this.element;for(var n in this.handles){this.handles[n].constructor==String&&(this.handles[n]=e(this.handles[n],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var r=e(this.handles[n],this.element),i=0;i=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth();var s=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");t.css(s,i),this._proportionallyResize()}if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!t.resizing){if(this.className)var e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);t.axis=e&&e[1]?e[1]:"se"}}),n.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(n.disabled)return;e(this).removeClass("ui-resizable-autohide"),t._handles.show()}).mouseleave(function(){if(n.disabled)return;t.resizing||(e(this).addClass("ui-resizable-autohide"),t._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){t(this.element);var n=this.element;this.originalElement.css({position:n.css("position"),width:n.outerWidth(),height:n.outerHeight(),top:n.css("top"),left:n.css("left")}).insertAfter(n),n.remove()}return this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_mouseCapture:function(t){var n=!1;for(var r in this.handles)e(this.handles[r])[0]==t.target&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var r=this.options,i=this.element.position(),s=this.element;this.resizing=!0,this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()},(s.is(".ui-draggable")||/absolute/.test(s.css("position")))&&s.css({position:"absolute",top:i.top,left:i.left}),this._renderProxy();var o=n(this.helper.css("left")),u=n(this.helper.css("top"));r.containment&&(o+=e(r.containment).scrollLeft()||0,u+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:u},this.size=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalSize=this._helper?{width:s.outerWidth(),height:s.outerHeight()}:{width:s.width(),height:s.height()},this.originalPosition={left:o,top:u},this.sizeDiff={width:s.outerWidth()-s.width(),height:s.outerHeight()-s.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof r.aspectRatio=="number"?r.aspectRatio:this.originalSize.width/this.originalSize.height||1;var a=e(".ui-resizable-"+this.axis).css("cursor");return e("body").css("cursor",a=="auto"?this.axis+"-resize":a),s.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(e){var t=this.helper,n=this.options,r={},i=this,s=this.originalMousePosition,o=this.axis,u=e.pageX-s.left||0,a=e.pageY-s.top||0,f=this._change[o];if(!f)return!1;var l=f.apply(this,[e,u,a]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)l=this._updateRatio(l,e);return l=this._respectSize(l,e),this._propagate("resize",e),t.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",e,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n=this.options,r=this;if(this._helper){var i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:r.sizeDiff.height,u=s?0:r.sizeDiff.width,a={width:r.helper.width()-u,height:r.helper.height()-o},f=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,l=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;n.animate||this.element.css(e.extend(a,{top:l,left:f})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!n.animate&&this._proportionallyResize()}return e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t=this.options,n,i,s,o,u;u={minWidth:r(t.minWidth)?t.minWidth:0,maxWidth:r(t.maxWidth)?t.maxWidth:Infinity,minHeight:r(t.minHeight)?t.minHeight:0,maxHeight:r(t.maxHeight)?t.maxHeight:Infinity};if(this._aspectRatio||e)n=u.minHeight*this.aspectRatio,s=u.minWidth/this.aspectRatio,i=u.maxHeight*this.aspectRatio,o=u.maxWidth/this.aspectRatio,n>u.minWidth&&(u.minWidth=n),s>u.minHeight&&(u.minHeight=s),i<u.maxWidth&&(u.maxWidth=i),o<u.maxHeight&&(u.maxHeight=o);this._vBoundaries=u},_updateCache:function(e){var t=this.options;this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e,t){var n=this.options,i=this.position,s=this.size,o=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),o=="sw"&&(e.left=i.left+(s.width-e.width),e.top=null),o=="nw"&&(e.top=i.top+(s.height-e.height),e.left=i.left+(s.width-e.width)),e},_respectSize:function(e,t){var n=this.helper,i=this._vBoundaries,s=this._aspectRatio||t.shiftKey,o=this.axis,u=r(e.width)&&i.maxWidth&&i.maxWidth<e.width,a=r(e.height)&&i.maxHeight&&i.maxHeight<e.height,f=r(e.width)&&i.minWidth&&i.minWidth>e.width,l=r(e.height)&&i.minHeight&&i.minHeight>e.height;f&&(e.width=i.minWidth),l&&(e.height=i.minHeight),u&&(e.width=i.maxWidth),a&&(e.height=i.maxHeight);var c=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,p=/sw|nw|w/.test(o),d=/nw|ne|n/.test(o);f&&p&&(e.left=c-i.minWidth),u&&p&&(e.left=c-i.maxWidth),l&&d&&(e.top=h-i.minHeight),a&&d&&(e.top=h-i.maxHeight);var v=!e.width&&!e.height;return v&&!e.left&&e.top?e.top=null:v&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){var t=this.options;if(!this._proportionallyResizeElements.length)return;var n=this.helper||this.element;for(var r=0;r<this._proportionallyResizeElements.length;r++){var i=this._proportionallyResizeElements[r];if(!this.borderDif){var s=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],o=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];this.borderDif=e.map(s,function(e,t){var n=parseInt(e,10)||0,r=parseInt(o[t],10)||0;return n+r})}i.css({height:n.height()-this.borderDif[0]-this.borderDif[2]||0,width:n.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var r=e.ui.ie6?1:0,i=e.ui.ie6?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+i,height:this.element.outerHeight()+i,position:"absolute",left:this.elementOffset.left-r+"px",top:this.elementOffset.top-r+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,t,n){return{width:this.originalSize.width+t}},w:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,n){var r=this.options,i=this.originalSize,s=this.originalPosition;return{top:s.top+n,height:i.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!="resize"&&this._trigger(t,n,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}}}),e.ui.plugin.add("resizable","alsoResize",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=function(t){e(t).each(function(){var t=e(this);t.data("resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof i.alsoResize=="object"&&!i.alsoResize.parentNode?i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)}):s(i.alsoResize)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(t,n){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","animate",{stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r._proportionallyResizeElements,o=s.length&&/textarea/i.test(s[0].nodeName),u=o&&e.ui.hasScroll(s[0],"left")?0:r.sizeDiff.height,a=o?0:r.sizeDiff.width,f={width:r.size.width-a,height:r.size.height-u},l=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,c=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null;r.element.animate(e.extend(f,c&&l?{top:c,left:l}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var n={width:parseInt(r.element.css("width"),10),height:parseInt(r.element.css("height"),10),top:parseInt(r.element.css("top"),10),left:parseInt(r.element.css("left"),10)};s&&s.length&&e(s[0]).css({width:n.width,height:n.height}),r._updateCache(n),r._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(t,r){var i=e(this).data("resizable"),s=i.options,o=i.element,u=s.containment,a=u instanceof e?u.get(0):/parent/.test(u)?o.parent().get(0):u;if(!a)return;i.containerElement=e(a);if(/document/.test(u)||u==document)i.containerOffset={left:0,top:0},i.containerPosition={left:0,top:0},i.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight};else{var f=e(a),l=[];e(["Top","Right","Left","Bottom"]).each(function(e,t){l[e]=n(f.css("padding"+t))}),i.containerOffset=f.offset(),i.containerPosition=f.position(),i.containerSize={height:f.innerHeight()-l[3],width:f.innerWidth()-l[1]};var c=i.containerOffset,h=i.containerSize.height,p=i.containerSize.width,d=e.ui.hasScroll(a,"left")?a.scrollWidth:p,v=e.ui.hasScroll(a)?a.scrollHeight:h;i.parentData={element:a,left:c.left,top:c.top,width:d,height:v}}},resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.containerSize,o=r.containerOffset,u=r.size,a=r.position,f=r._aspectRatio||t.shiftKey,l={top:0,left:0},c=r.containerElement;c[0]!=document&&/static/.test(c.css("position"))&&(l=o),a.left<(r._helper?o.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-o.left:r.position.left-l.left),f&&(r.size.height=r.size.width/r.aspectRatio),r.position.left=i.helper?o.left:0),a.top<(r._helper?o.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-o.top:r.position.top),f&&(r.size.width=r.size.height*r.aspectRatio),r.position.top=r._helper?o.top:0),r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top;var h=Math.abs((r._helper?r.offset.left-l.left:r.offset.left-l.left)+r.sizeDiff.width),p=Math.abs((r._helper?r.offset.top-l.top:r.offset.top-o.top)+r.sizeDiff.height),d=r.containerElement.get(0)==r.element.parent().get(0),v=/relative|absolute/.test(r.containerElement.css("position"));d&&v&&(h-=r.parentData.left),h+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-h,f&&(r.size.height=r.size.width/r.aspectRatio)),p+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-p,f&&(r.size.width=r.size.height*r.aspectRatio))},stop:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.position,o=r.containerOffset,u=r.containerPosition,a=r.containerElement,f=e(r.helper),l=f.offset(),c=f.outerWidth()-r.sizeDiff.width,h=f.outerHeight()-r.sizeDiff.height;r._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h}),r._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:l.left-u.left-o.left,width:c,height:h})}}),e.ui.plugin.add("resizable","ghost",{start:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size;r.ghost=r.originalElement.clone(),r.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:""),r.ghost.appendTo(r.helper)},resize:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.ghost.css({position:"relative",height:r.size.height,width:r.size.width})},stop:function(t,n){var r=e(this).data("resizable"),i=r.options;r.ghost&&r.helper&&r.helper.get(0).removeChild(r.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(t,n){var r=e(this).data("resizable"),i=r.options,s=r.size,o=r.originalSize,u=r.originalPosition,a=r.axis,f=i._aspectRatio||t.shiftKey;i.grid=typeof i.grid=="number"?[i.grid,i.grid]:i.grid;var l=Math.round((s.width-o.width)/(i.grid[0]||1))*(i.grid[0]||1),c=Math.round((s.height-o.height)/(i.grid[1]||1))*(i.grid[1]||1);/^(se|s|e)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c):/^(ne)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c):/^(sw)$/.test(a)?(r.size.width=o.width+l,r.size.height=o.height+c,r.position.left=u.left-l):(r.size.width=o.width+l,r.size.height=o.height+c,r.position.top=u.top-c,r.position.left=u.left-l)}});var n=function(e){return parseInt(e,10)||0},r=function(e){return!isNaN(parseInt(e,10))}})(jQuery);(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.9.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var t=this;this.element.addClass("ui-selectable"),this.dragged=!1;var n;this.refresh=function(){n=e(t.options.filter,t.element[0]),n.addClass("ui-selectee"),n.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=n.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;var r=this.options;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().andSelf().each(function(){var r=e.data(this,"selectable-item");if(r){var i=!t.metaKey&&!t.ctrlKey||!r.$element.hasClass("ui-selected");return r.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),r.unselecting=!i,r.selecting=i,r.selected=i,i?n._trigger("selecting",t,{selecting:r.element}):n._trigger("unselecting",t,{unselecting:r.element}),!1}})},_mouseDrag:function(t){var n=this;this.dragged=!0;if(this.options.disabled)return;var r=this.options,i=this.opos[0],s=this.opos[1],o=t.pageX,u=t.pageY;if(i>o){var a=o;o=i,i=a}if(s>u){var a=u;u=s,s=a}return this.helper.css({left:i,top:s,width:o-i,height:u-s}),this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!a||a.element==n.element[0])return;var f=!1;r.tolerance=="touch"?f=!(a.left>o||a.right<i||a.top>u||a.bottom<s):r.tolerance=="fit"&&(f=a.left>i&&a.right<o&&a.top>s&&a.bottom<u),f?(a.selected&&(a.$element.removeClass("ui-selected"),a.selected=!1),a.unselecting&&(a.$element.removeClass("ui-unselecting"),a.unselecting=!1),a.selecting||(a.$element.addClass("ui-selecting"),a.selecting=!0,n._trigger("selecting",t,{selecting:a.element}))):(a.selecting&&((t.metaKey||t.ctrlKey)&&a.startselected?(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.$element.addClass("ui-selected"),a.selected=!0):(a.$element.removeClass("ui-selecting"),a.selecting=!1,a.startselected&&(a.$element.addClass("ui-unselecting"),a.unselecting=!0),n._trigger("unselecting",t,{unselecting:a.element}))),a.selected&&!t.metaKey&&!t.ctrlKey&&!a.startselected&&(a.$element.removeClass("ui-selected"),a.selected=!1,a.$element.addClass("ui-unselecting"),a.unselecting=!0,n._trigger("unselecting",t,{unselecting:a.element})))}),!1},_mouseStop:function(t){var n=this;this.dragged=!1;var r=this.options;return e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(e,t){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.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},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(t);var i=null,s=e(t.target).parents().each(function(){if(e.data(this,r.widgetName+"-item")==r)return i=e(this),!1});e.data(t.target,r.widgetName+"-item")==r&&(i=e(t.target));if(!i)return!1;if(this.options.handle&&!n){var o=!1;e(this.options.handle,i).find("*").andSelf().each(function(){this==t.target&&(o=!0)});if(!o)return!1}return this.currentItem=i,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),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},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.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(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),i.containment&&this._setContainment(),i.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",i.cursor)),i.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",i.opacity)),i.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",i.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(var s=this.containers.length-1;s>=0;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var n=this.options,r=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<n.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+n.scrollSpeed:t.pageY-this.overflowOffset.top<n.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-n.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<n.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+n.scrollSpeed:t.pageX-this.overflowOffset.left<n.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-n.scrollSpeed)):(t.pageY-e(document).scrollTop()<n.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<n.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+n.scrollSpeed)),t.pageX-e(document).scrollLeft()<n.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<n.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+n.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute");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";for(var i=this.items.length-1;i>=0;i--){var s=this.items[i],o=s.item[0],u=this._intersectsWithPointer(s);if(!u)continue;if(s.instance!==this.currentContainer)continue;if(o!=this.currentItem[0]&&this.placeholder[u==1?"next":"prev"]()[0]!=o&&!e.contains(this.placeholder[0],o)&&(this.options.type=="semi-dynamic"?!e.contains(this.element[0],o):!0)){this.direction=u==1?"down":"up";if(this.options.tolerance!="pointer"&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(t){var n=this.options.axis==="x"||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),r=this.options.axis==="y"||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),i=n&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o=="right"||s=="down"?2:1:s&&(s=="down"?2:1):!1},_intersectsWithSides:function(t){var n=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),r=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s=="right"&&r||s=="left"&&!r:i&&(i=="down"&&n||i=="up"&&!n)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!=0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!=0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n=[],r=[],i=this._connectWith();if(i&&t)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&r.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a])}}r.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var s=r.length-1;s>=0;s--)r[s][0].each(function(){n.push(this)});return e(n)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]==e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n=this.items,r=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],i=this._connectWith();if(i&&this.ready)for(var s=i.length-1;s>=0;s--){var o=e(i[s]);for(var u=o.length-1;u>=0;u--){var a=e.data(o[u],this.widgetName);a&&a!=this&&!a.options.disabled&&(r.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a))}}for(var s=r.length-1;s>=0;s--){var f=r[s][1],l=r[s][0];for(var u=0,c=l.length;u<c;u++){var h=e(l[u]);h.data(this.widgetName+"-item",f),n.push({item:h,instance:f,width:0,height:0,left:0,top:0})}}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var n=this.items.length-1;n>=0;n--){var r=this.items[n];if(r.instance!=this.currentContainer&&this.currentContainer&&r.item[0]!=this.currentItem[0])continue;var i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item;t||(r.width=i.outerWidth(),r.height=i.outerHeight());var s=i.offset();r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var n=this.containers.length-1;n>=0;n--){var s=this.containers[n].element.offset();this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var n=t.options;if(!n.placeholder||n.placeholder.constructor==String){var r=n.placeholder;n.placeholder={element:function(){var n=e(document.createElement(t.currentItem[0].nodeName)).addClass(r||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return r||(n.style.visibility="hidden"),n},update:function(e,i){if(r&&!n.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}}}t.placeholder=e(n.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),n.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n=null,r=null;for(var i=this.containers.length-1;i>=0;i--){if(e.contains(this.currentItem[0],this.containers[i].element[0]))continue;if(this._intersectsWith(this.containers[i].containerCache)){if(n&&e.contains(this.containers[i].element[0],n.element[0]))continue;n=this.containers[i],r=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0)}if(!n)return;if(this.containers.length===1)this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1;else{var s=1e4,o=null,u=this.containers[r].floating?"left":"top",a=this.containers[r].floating?"width":"height",f=this.positionAbs[u]+this.offset.click[u];for(var l=this.items.length-1;l>=0;l--){if(!e.contains(this.containers[r].element[0],this.items[l].item[0]))continue;if(this.items[l].item[0]==this.currentItem[0])continue;var c=this.items[l].item.offset()[u],h=!1;Math.abs(c-f)>Math.abs(c+this.items[l][a]-f)&&(h=!0,c+=this.items[l][a]),Math.abs(c-f)<s&&(s=Math.abs(c-f),o=this.items[l],this.direction=h?"up":"down")}if(!o&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[r],o?this._rearrange(t,o,null,!0):this._rearrange(t,null,this.containers[r].element,!0),this._trigger("change",t,this._uiHash()),this.containers[r]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[r]._trigger("over",t,this._uiHash(this)),this.containers[r].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper=="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[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")}),(r[0].style.width==""||n.forceHelperSize)&&r.width(this.currentItem.width()),(r[0].style.height==""||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.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 t=this.options;t.containment=="parent"&&(t.containment=this.helper[0].parentNode);if(t.containment=="document"||t.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(t.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(t.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(t.containment)){var n=e(t.containment)[0],r=e(t.containment).offset(),i=e(n).css("overflow")!="hidden";this.containment=[r.left+(parseInt(e(n).css("borderLeftWidth"),10)||0)+(parseInt(e(n).css("paddingLeft"),10)||0)-this.margins.left,r.top+(parseInt(e(n).css("borderTopWidth"),10)||0)+(parseInt(e(n).css("paddingTop"),10)||0)-this.margins.top,r.left+(i?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(e(n).css("borderLeftWidth"),10)||0)-(parseInt(e(n).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,r.top+(i?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(e(n).css("borderTopWidth"),10)||0)-(parseInt(e(n).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,n){n||(n=this.position);var r=t=="absolute"?1:-1,i=this.options,s=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(s[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():o?0:s.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():o?0:s.scrollLeft())*r}},_generatePosition:function(t){var n=this.options,r=this.cssPosition!="absolute"||this.scrollParent[0]!=document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(r[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var s=t.pageX,o=t.pageY;if(this.originalPosition){this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top));if(n.grid){var u=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1];o=this.containment?u-this.offset.click.top<this.containment[1]||u-this.offset.click.top>this.containment[3]?u-this.offset.click.top<this.containment[1]?u+n.grid[1]:u-n.grid[1]:u:u;var a=this.originalPageX+Math.round((s-this.originalPageX)/n.grid[0])*n.grid[0];s=this.containment?a-this.offset.click.left<this.containment[0]||a-this.offset.click.left>this.containment[2]?a-this.offset.click.left<this.containment[0]?a+n.grid[0]:a-n.grid[0]:a:a}}return{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():i?0:r.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:r.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i==this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var i in this._storedCSS)if(this._storedCSS[i]=="auto"||this._storedCSS[i]=="static")this._storedCSS[i]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&r.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!n&&r.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(r.push(function(e){this._trigger("remove",e,this._uiHash())}),r.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),r.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var i=this.containers.length-1;i>=0;i--)n||r.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over&&(r.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[i])),this.containers[i].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(var i=0;i<r.length;i++)r[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.9.1",options:{active:0,animate:{},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},_create:function(){var t=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n),r=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset"),this.headers=this.element.find(r.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this._hoverable(this.headers),this._focusable(this.headers),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(),!r.collapsible&&(r.active===!1||r.active==null)&&(r.active=0),r.active<0&&(r.active+=this.headers.length),this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this._createIcons(),this.refresh(),this.element.attr("role","tablist"),this.headers.attr("role","tab").each(function(n){var r=e(this),i=r.attr("id"),s=r.next(),o=s.attr("id");i||(i=t+"-header-"+n,r.attr("id",i)),o||(o=t+"-panel-"+n,s.attr("id",o)),r.attr("aria-controls",o),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._on(this.headers,{keydown:"_keydown"}),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._setupEvents(r.event)},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t,n,r=this.options.heightStyle,i=this.element.parent();r==="fill"?(e.support.minHeight||(n=i.css("overflow"),i.css("overflow","hidden")),t=i.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),n&&i.css("overflow",n),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):r==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).height("").height())}).height(t))},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={};if(!t)return;e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._on(this.headers,n)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.uiBackCompat!==!1&&(function(e,t){e.extend(t.options,{navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}});var n=t._create;t._create=function(){if(this.options.navigation){var t=this,r=this.element.find(this.options.header),i=r.next(),s=r.add(i).find("a").filter(this.options.navigationFilter)[0];s&&r.add(i).each(function(n){if(e.contains(this,s))return t.options.active=Math.floor(n/2),!1})}n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{heightStyle:null,autoHeight:!0,clearStyle:!1,fillSpace:!1});var n=t._create,r=t._setOption;e.extend(t,{_create:function(){this.options.heightStyle=this.options.heightStyle||this._mergeHeightStyle(),n.call(this)},_setOption:function(e){if(e==="autoHeight"||e==="clearStyle"||e==="fillSpace")this.options.heightStyle=this._mergeHeightStyle();r.apply(this,arguments)},_mergeHeightStyle:function(){var e=this.options;if(e.fillSpace)return"fill";if(e.clearStyle)return"content";if(e.autoHeight)return"auto"}})}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options.icons,{activeHeader:null,headerSelected:"ui-icon-triangle-1-s"});var n=t._createIcons;t._createIcons=function(){this.options.icons&&(this.options.icons.activeHeader=this.options.icons.activeHeader||this.options.icons.headerSelected),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){t.activate=t._activate;var n=t._findActive;t._findActive=function(e){return e===-1&&(e=!1),e&&typeof e!="number"&&(e=this.headers.index(this.headers.filter(e)),e===-1&&(e=!1)),n.call(this,e)}}(jQuery,jQuery.ui.accordion.prototype),jQuery.ui.accordion.prototype.resize=jQuery.ui.accordion.prototype.refresh,function(e,t){e.extend(t.options,{change:null,changestart:null});var n=t._trigger;t._trigger=function(e,t,r){var i=n.apply(this,arguments);return i?(e==="beforeActivate"?i=n.call(this,"changestart",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel}):e==="activate"&&(i=n.call(this,"change",t,{oldHeader:r.oldHeader,oldContent:r.oldPanel,newHeader:r.newHeader,newContent:r.newPanel})),i):!1}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{animate:null,animated:"slide"});var n=t._create;t._create=function(){var e=this.options;e.animate===null&&(e.animated?e.animated==="slide"?e.animate=300:e.animated==="bounceslide"?e.animate={duration:200,down:{easing:"easeOutBounce",duration:1e3}}:e.animate=e.animated:e.animate=!1),n.call(this)}}(jQuery,jQuery.ui.accordion.prototype))})(jQuery);(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.9.1",defaultElement:"<input>",options:{appendTo:"body",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},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item")||n.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this.document.find(t||"body")[0]),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(r?i=e(r).find("[name='"+n+"']"):i=e("[name='"+n+"']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.9.1",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c="ui-state-hover"+(a?"":" ui-state-active"),h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;e(this).addClass("ui-state-hover"),this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).toggleClass("ui-state-active"),t.buttonElement.attr("aria-pressed",t.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is(":disabled")||this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+r.primary+"'></span>"),r.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+r.secondary+"'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.9.1",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);(function($,undefined){function Datepicker(){this.debug=!1,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},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!=-1&&$(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!=-1&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var n in t)if(t[n]==null||t[n]==undefined)e[n]=t[n];return e}$.extend($.ui,{datepicker:{version:"1.9.1"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var n=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:n,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(e,t){var n=$(e);t.append=$([]),t.trigger=$([]);if(n.hasClass(this.markerClassName))return;this._attachments(n,t),n.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e)},_attachments:function(e,t){var n=this._get(t,"appendText"),r=this._get(t,"isRTL");t.append&&t.append.remove(),n&&(t.append=$('<span class="'+this._appendClass+'">'+n+"</span>"),e[r?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var i=this._get(t,"showOn");(i=="focus"||i=="both")&&e.focus(this._showDatepicker);if(i=="button"||i=="both"){var s=this._get(t,"buttonText"),o=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:o,alt:s,title:s}):$('<button type="button"></button>').addClass(this._triggerClass).html(o==""?s:$("<img/>").attr({src:o,alt:s,title:s}))),e[r?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),n=this._get(e,"dateFormat");if(n.match(/[DM]/)){var r=function(e){var t=0,n=0;for(var r=0;r<e.length;r++)e[r].length>t&&(t=e[r].length,n=r);return n};t.setMonth(r(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(r(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var n=$(e);if(n.hasClass(this.markerClassName))return;n.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,n,r){t.settings[n]=r}).bind("getData.datepicker",function(e,n){return this._get(t,n)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block")},_dialogDatepicker:function(e,t,n,r,i){var s=this._dialogInst;if(!s){this.uuid+=1;var o="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+o+'" style="position: absolute; top: -100px; width: 0px;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),s=this._dialogInst=this._newInst(this._dialogInput,!1),s.settings={},$.data(this._dialogInput[0],PROP_NAME,s)}extendRemove(s.settings,r||{}),t=t&&t.constructor==Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=i?i.length?i:[i.pageX,i.pageY]:null;if(!this._pos){var u=document.documentElement.clientWidth,a=document.documentElement.clientHeight,f=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[u/2-100+f,a/2-150+l]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,s),this},_destroyDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),r=="input"?(n.append.remove(),n.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r=="div"||r=="span")&&t.removeClass(this.markerClassName).empty()},_enableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})},_disableDatepicker:function(e){var t=$(e),n=$.data(e,PROP_NAME);if(!t.hasClass(this.markerClassName))return;var r=e.nodeName.toLowerCase();if(r=="input")e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r=="div"||r=="span"){var i=t.children("."+this._inlineClass);i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,n){var r=this._getInst(e);if(arguments.length==2&&typeof t=="string")return t=="defaults"?$.extend({},$.datepicker._defaults):r?t=="all"?$.extend({},r.settings):this._get(r,t):null;var i=t||{};typeof t=="string"&&(i={},i[t]=n);if(r){this._curInst==r&&this._hideDatepicker();var s=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(r,"min"),u=this._getMinMaxDate(r,"max");extendRemove(r.settings,i),o!==null&&i.dateFormat!==undefined&&i.minDate===undefined&&(r.settings.minDate=this._formatDate(r,o)),u!==null&&i.dateFormat!==undefined&&i.maxDate===undefined&&(r.settings.maxDate=this._formatDate(r,u)),this._attachments($(e),r),this._autoSize(r),this._setDate(r,s),this._updateAlternate(r),this._updateDatepicker(r)}},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),n=!0,r=t.dpDiv.is(".ui-datepicker-rtl");t._keyEvent=!0;if($.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),n=!1;break;case 13:var i=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);i[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,i[0]);var s=$.datepicker._get(t,"onSelect");if(s){var o=$.datepicker._formatDate(t);s.apply(t.input?t.input[0]:null,[o,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else e.keyCode==36&&e.ctrlKey?$.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||r<" "||!n||n.indexOf(r)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var n=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));n&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(r){$.datepicker.log(r)}return!0},_showDatepicker:function(e){e=e.target||e,e.nodeName.toLowerCase()!="input"&&(e=$("input",e.parentNode)[0]);if($.datepicker._isDisabledDatepicker(e)||$.datepicker._lastInput==e)return;var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var n=$.datepicker._get(t,"beforeShow"),r=n?n.apply(e,[e,t]):{};if(r===!1)return;extendRemove(t.settings,r),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var i=!1;$(e).parents().each(function(){return i|=$(this).css("position")=="fixed",!i});var s={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),s=$.datepicker._checkOffset(t,s,i),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"});if(!t.inline){var o=$.datepicker._get(t,"showAnim"),u=$.datepicker._get(t,"duration"),a=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(!!e.length){var n=$.datepicker._getBorders(t.dpDiv);e.css({left:-n[0],top:-n[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[o]||$.effects[o])?t.dpDiv.show(o,$.datepicker._get(t,"showOptions"),u,a):t.dpDiv[o||"show"](o?u:null,a),(!o||!u)&&a(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var n=e.dpDiv.find("iframe.ui-datepicker-cover");!n.length||n.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var r=this._getNumberOfMonths(e),i=r[1],s=17;e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),i>1&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",s*i+"em"),e.dpDiv[(r[0]!=1||r[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus();if(e.yearshtml){var o=e.yearshtml;setTimeout(function(){o===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),o=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,n){var r=e.dpDiv.outerWidth(),i=e.dpDiv.outerHeight(),s=e.input?e.input.outerWidth():0,o=e.input?e.input.outerHeight():0,u=document.documentElement.clientWidth+(n?0:$(document).scrollLeft()),a=document.documentElement.clientHeight+(n?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?r-s:0,t.left-=n&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=n&&t.top==e.input.offset().top+o?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+r>u&&u>r?Math.abs(t.left+r-u):0),t.top-=Math.min(t.top,t.top+i>a&&a>i?Math.abs(i+o):0),t},_findPos:function(e){var t=this._getInst(e),n=this._get(t,"isRTL");while(e&&(e.type=="hidden"||e.nodeType!=1||$.expr.filters.hidden(e)))e=e[n?"previousSibling":"nextSibling"];var r=$(e).offset();return[r.left,r.top]},_hideDatepicker:function(e){var t=this._curInst;if(!t||e&&t!=$.data(e,PROP_NAME))return;if(this._datepickerShowing){var n=this._get(t,"showAnim"),r=this._get(t,"duration"),i=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[n]||$.effects[n])?t.dpDiv.hide(n,$.datepicker._get(t,"showOptions"),r,i):t.dpDiv[n=="slideDown"?"slideUp":n=="fadeIn"?"fadeOut":"hide"](n?r:null,i),n||i(),this._datepickerShowing=!1;var s=this._get(t,"onClose");s&&s.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(!$.datepicker._curInst)return;var t=$(e.target),n=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&t.parents("#"+$.datepicker._mainDivId).length==0&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=n)&&$.datepicker._hideDatepicker()},_adjustDate:function(e,t,n){var r=$(e),i=this._getInst(r[0]);if(this._isDisabledDatepicker(r[0]))return;this._adjustInstDate(i,t+(n=="M"?this._get(i,"showCurrentAtPos"):0),n),this._updateDatepicker(i)},_gotoToday:function(e){var t=$(e),n=this._getInst(t[0]);if(this._get(n,"gotoCurrent")&&n.currentDay)n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear;else{var r=new Date;n.selectedDay=r.getDate(),n.drawMonth=n.selectedMonth=r.getMonth(),n.drawYear=n.selectedYear=r.getFullYear()}this._notifyChange(n),this._adjustDate(t)},_selectMonthYear:function(e,t,n){var r=$(e),i=this._getInst(r[0]);i["selected"+(n=="M"?"Month":"Year")]=i["draw"+(n=="M"?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(r)},_selectDay:function(e,t,n,r){var i=$(e);if($(r).hasClass(this._unselectableClass)||this._isDisabledDatepicker(i[0]))return;var s=this._getInst(i[0]);s.selectedDay=s.currentDay=$("a",r).html(),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=n,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(e){var t=$(e),n=this._getInst(t[0]);this._selectDate(t,"")},_selectDate:function(e,t){var n=$(e),r=this._getInst(n[0]);t=t!=null?t:this._formatDate(r),r.input&&r.input.val(t),this._updateAlternate(r);var i=this._get(r,"onSelect");i?i.apply(r.input?r.input[0]:null,[t,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],typeof r.input[0]!="object"&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var n=this._get(e,"altFormat")||this._get(e,"dateFormat"),r=this._getDate(e),i=this.formatDate(n,r,this._getFormatConfig(e));$(t).each(function(){$(this).val(i)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1},parseDate:function(e,t,n){if(e==null||t==null)throw"Invalid arguments";t=typeof t=="object"?t.toString():t+"";if(t=="")return null;var r=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff;r=typeof r!="string"?r:(new Date).getFullYear()%100+parseInt(r,10);var i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=-1,f=-1,l=-1,c=-1,h=!1,p=function(t){var n=y+1<e.length&&e.charAt(y+1)==t;return n&&y++,n},d=function(e){var n=p(e),r=e=="@"?14:e=="!"?20:e=="y"&&n?4:e=="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=t.substring(g).match(i);if(!s)throw"Missing number at position "+g;return g+=s[0].length,parseInt(s[0],10)},v=function(e,n,r){var i=$.map(p(e)?r:n,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),s=-1;$.each(i,function(e,n){var r=n[1];if(t.substr(g,r.length).toLowerCase()==r.toLowerCase())return s=n[0],g+=r.length,!1});if(s!=-1)return s+1;throw"Unknown name at position "+g},m=function(){if(t.charAt(g)!=e.charAt(y))throw"Unexpected literal at position "+g;g++},g=0;for(var y=0;y<e.length;y++)if(h)e.charAt(y)=="'"&&!p("'")?h=!1:m();else switch(e.charAt(y)){case"d":l=d("d");break;case"D":v("D",i,s);break;case"o":c=d("o");break;case"m":f=d("m");break;case"M":f=v("M",o,u);break;case"y":a=d("y");break;case"@":var b=new Date(d("@"));a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"!":var b=new Date((d("!")-this._ticksTo1970)/1e4);a=b.getFullYear(),f=b.getMonth()+1,l=b.getDate();break;case"'":p("'")?m():h=!0;break;default:m()}if(g<t.length){var w=t.substr(g);if(!/^\s+/.test(w))throw"Extra/unparsed characters found in date: "+w}a==-1?a=(new Date).getFullYear():a<100&&(a+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a<=r?0:-100));if(c>-1){f=1,l=c;do{var E=this._getDaysInMonth(a,f-1);if(l<=E)break;f++,l-=E}while(!0)}var b=this._daylightSavingAdjust(new Date(a,f-1,l));if(b.getFullYear()!=a||b.getMonth()+1!=f||b.getDate()!=l)throw"Invalid date";return b},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:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,i=(n?n.dayNames:null)||this._defaults.dayNames,s=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,o=(n?n.monthNames:null)||this._defaults.monthNames,u=function(t){var n=h+1<e.length&&e.charAt(h+1)==t;return n&&h++,n},a=function(e,t,n){var r=""+t;if(u(e))while(r.length<n)r="0"+r;return r},f=function(e,t,n,r){return u(e)?r[t]:n[t]},l="",c=!1;if(t)for(var h=0;h<e.length;h++)if(c)e.charAt(h)=="'"&&!u("'")?c=!1:l+=e.charAt(h);else switch(e.charAt(h)){case"d":l+=a("d",t.getDate(),2);break;case"D":l+=f("D",t.getDay(),r,i);break;case"o":l+=a("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":l+=a("m",t.getMonth()+1,2);break;case"M":l+=f("M",t.getMonth(),s,o);break;case"y":l+=u("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=t.getTime()*1e4+this._ticksTo1970;break;case"'":u("'")?l+="'":c=!0;break;default:l+=e.charAt(h)}return l},_possibleChars:function(e){var t="",n=!1,r=function(t){var n=i+1<e.length&&e.charAt(i+1)==t;return n&&i++,n};for(var i=0;i<e.length;i++)if(n)e.charAt(i)=="'"&&!r("'")?n=!1:t+=e.charAt(i);else switch(e.charAt(i)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":r("'")?t+="'":n=!0;break;default:t+=e.charAt(i)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()==e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i,s;i=s=this._getDefaultDate(e);var o=this._getFormatConfig(e);try{i=this.parseDate(n,r,o)||s}catch(u){this.log(u),r=t?"":r}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=r?i.getDate():0,e.currentMonth=r?i.getMonth():0,e.currentYear=r?i.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,n){var r=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},i=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(n){}var r=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,i=r.getFullYear(),s=r.getMonth(),o=r.getDate(),u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,a=u.exec(t);while(a){switch(a[2]||"d"){case"d":case"D":o+=parseInt(a[1],10);break;case"w":case"W":o+=parseInt(a[1],10)*7;break;case"m":case"M":s+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s));break;case"y":case"Y":i+=parseInt(a[1],10),o=Math.min(o,$.datepicker._getDaysInMonth(i,s))}a=u.exec(t)}return new Date(i,s,o)},s=t==null||t===""?n:typeof t=="string"?i(t):typeof t=="number"?isNaN(t)?n:r(t):new Date(t.getTime());return s=s&&s.toString()=="Invalid Date"?n:s,s&&(s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0)),this._daylightSavingAdjust(s)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!=e.selectedMonth||s!=e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()==""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(n,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(n)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(n,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var n=this._get(e,"isRTL"),r=this._get(e,"showButtonPanel"),i=this._get(e,"hideIfNoPrevNext"),s=this._get(e,"navigationAsDateFormat"),o=this._getNumberOfMonths(e),u=this._get(e,"showCurrentAtPos"),a=this._get(e,"stepMonths"),f=o[0]!=1||o[1]!=1,l=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),c=this._getMinMaxDate(e,"min"),h=this._getMinMaxDate(e,"max"),p=e.drawMonth-u,d=e.drawYear;p<0&&(p+=12,d--);if(h){var v=this._daylightSavingAdjust(new Date(h.getFullYear(),h.getMonth()-o[0]*o[1]+1,h.getDate()));v=c&&v<c?c:v;while(this._daylightSavingAdjust(new Date(d,p,1))>v)p--,p<0&&(p=11,d--)}e.drawMonth=p,e.drawYear=d;var m=this._get(e,"prevText");m=s?this.formatDate(m,this._daylightSavingAdjust(new Date(d,p-a,1)),this._getFormatConfig(e)):m;var g=this._canAdjustMonth(e,-1,d,p)?'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>":i?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+m+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"e":"w")+'">'+m+"</span></a>",y=this._get(e,"nextText");y=s?this.formatDate(y,this._daylightSavingAdjust(new Date(d,p+a,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,d,p)?'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>":i?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(n?"w":"e")+'">'+y+"</span></a>",w=this._get(e,"currentText"),E=this._get(e,"gotoCurrent")&&e.currentDay?l:t;w=s?this.formatDate(w,E,this._getFormatConfig(e)):w;var S=e.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(e,"closeText")+"</button>",x=r?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(n?S:"")+(this._isInRange(e,E)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">'+w+"</button>":"")+(n?"":S)+"</div>":"",T=parseInt(this._get(e,"firstDay"),10);T=isNaN(T)?0:T;var N=this._get(e,"showWeek"),C=this._get(e,"dayNames"),k=this._get(e,"dayNamesShort"),L=this._get(e,"dayNamesMin"),A=this._get(e,"monthNames"),O=this._get(e,"monthNamesShort"),M=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),D=this._get(e,"selectOtherMonths"),P=this._get(e,"calculateWeek")||this.iso8601Week,H=this._getDefaultDate(e),B="";for(var j=0;j<o[0];j++){var F="";this.maxRows=4;for(var I=0;I<o[1];I++){var q=this._daylightSavingAdjust(new Date(d,p,e.selectedDay)),R=" ui-corner-all",U="";if(f){U+='<div class="ui-datepicker-group';if(o[1]>1)switch(I){case 0:U+=" ui-datepicker-group-first",R=" ui-corner-"+(n?"right":"left");break;case o[1]-1:U+=" ui-datepicker-group-last",R=" ui-corner-"+(n?"left":"right");break;default:U+=" ui-datepicker-group-middle",R=""}U+='">'}U+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+R+'">'+(/all|left/.test(R)&&j==0?n?b:g:"")+(/all|right/.test(R)&&j==0?n?g:b:"")+this._generateMonthYearHeader(e,p,d,c,h,j>0||I>0,A,O)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var z=N?'<th class="ui-datepicker-week-col">'+this._get(e,"weekHeader")+"</th>":"";for(var W=0;W<7;W++){var X=(W+T)%7;z+="<th"+((W+T+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+C[X]+'">'+L[X]+"</span></th>"}U+=z+"</tr></thead><tbody>";var V=this._getDaysInMonth(d,p);d==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,V));var J=(this._getFirstDayOfMonth(d,p)-T+7)%7,K=Math.ceil((J+V)/7),Q=f?this.maxRows>K?this.maxRows:K:K;this.maxRows=Q;var G=this._daylightSavingAdjust(new Date(d,p,1-J));for(var Y=0;Y<Q;Y++){U+="<tr>";var Z=N?'<td class="ui-datepicker-week-col">'+this._get(e,"calculateWeek")(G)+"</td>":"";for(var W=0;W<7;W++){var et=M?M.apply(e.input?e.input[0]:null,[G]):[!0,""],tt=G.getMonth()!=p,nt=tt&&!D||!et[0]||c&&G<c||h&&G>h;Z+='<td class="'+((W+T+6)%7>=5?" ui-datepicker-week-end":"")+(tt?" ui-datepicker-other-month":"")+(G.getTime()==q.getTime()&&p==e.selectedMonth&&e._keyEvent||H.getTime()==G.getTime()&&H.getTime()==q.getTime()?" "+this._dayOverClass:"")+(nt?" "+this._unselectableClass+" ui-state-disabled":"")+(tt&&!_?"":" "+et[1]+(G.getTime()==l.getTime()?" "+this._currentClass:"")+(G.getTime()==t.getTime()?" ui-datepicker-today":""))+'"'+((!tt||_)&&et[2]?' title="'+et[2]+'"':"")+(nt?"":' data-handler="selectDay" data-event="click" data-month="'+G.getMonth()+'" data-year="'+G.getFullYear()+'"')+">"+(tt&&!_?" ":nt?'<span class="ui-state-default">'+G.getDate()+"</span>":'<a class="ui-state-default'+(G.getTime()==t.getTime()?" ui-state-highlight":"")+(G.getTime()==l.getTime()?" ui-state-active":"")+(tt?" ui-priority-secondary":"")+'" href="#">'+G.getDate()+"</a>")+"</td>",G.setDate(G.getDate()+1),G=this._daylightSavingAdjust(G)}U+=Z+"</tr>"}p++,p>11&&(p=0,d++),U+="</tbody></table>"+(f?"</div>"+(o[0]>0&&I==o[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),F+=U}B+=F}return B+=x+($.ui.ie6&&!e.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),e._keyEvent=!1,B},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a=this._get(e,"changeMonth"),f=this._get(e,"changeYear"),l=this._get(e,"showMonthAfterYear"),c='<div class="ui-datepicker-title">',h="";if(s||!a)h+='<span class="ui-datepicker-month">'+o[t]+"</span>";else{var p=r&&r.getFullYear()==n,d=i&&i.getFullYear()==n;h+='<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';for(var v=0;v<12;v++)(!p||v>=r.getMonth())&&(!d||v<=i.getMonth())&&(h+='<option value="'+v+'"'+(v==t?' selected="selected"':"")+">"+u[v]+"</option>");h+="</select>"}l||(c+=h+(s||!a||!f?" ":""));if(!e.yearshtml){e.yearshtml="";if(s||!f)c+='<span class="ui-datepicker-year">'+n+"</span>";else{var m=this._get(e,"yearRange").split(":"),g=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?n+parseInt(e.substring(1),10):e.match(/[+-].*/)?g+parseInt(e,10):parseInt(e,10);return isNaN(t)?g:t},b=y(m[0]),w=Math.max(b,y(m[1]||""));b=r?Math.max(b,r.getFullYear()):b,w=i?Math.min(w,i.getFullYear()):w,e.yearshtml+='<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';for(;b<=w;b++)e.yearshtml+='<option value="'+b+'"'+(b==n?' selected="selected"':"")+">"+b+"</option>";e.yearshtml+="</select>",c+=e.yearshtml,e.yearshtml=null}}return c+=this._get(e,"yearSuffix"),l&&(c+=(s||!a||!f?" ":"")+h),c+="</div>",c},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n=="Y"?t:0),i=e.drawMonth+(n=="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n=="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n=="M"||n=="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return i=r&&i>r?r:i,i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max");return(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return typeof e!="string"||e!="isDisabled"&&e!="getDate"&&e!="widget"?e=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){typeof e=="string"?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.1",window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(e,t){var n="ui-dialog ui-widget ui-widget-content ui-corner-all ",r={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.9.1",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var t=this,r=this.options,i=r.title||" ",s,o,u,a,f;s=(this.uiDialog=e("<div>")).addClass(n+r.dialogClass).css({display:"none",outline:0,zIndex:r.zIndex}).attr("tabIndex",-1).keydown(function(n){r.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===e.ui.keyCode.ESCAPE&&(t.close(n),n.preventDefault())}).mousedown(function(e){t.moveToTop(!1,e)}).appendTo("body"),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(s),o=(this.uiDialogTitlebar=e("<div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").bind("mousedown",function(){s.focus()}).prependTo(s),u=e("<a href='#'></a>").addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),t.close(e)}).appendTo(o),(this.uiDialogTitlebarCloseText=e("<span>")).addClass("ui-icon ui-icon-closethick").text(r.closeText).appendTo(u),a=e("<span>").uniqueId().addClass("ui-dialog-title").html(i).prependTo(o),f=(this.uiDialogButtonPane=e("<div>")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),(this.uiButtonSet=e("<div>")).addClass("ui-dialog-buttonset").appendTo(f),s.attr({role:"dialog","aria-labelledby":a.attr("id")}),o.find("*").add(o).disableSelection(),this._hoverable(u),this._focusable(u),r.draggable&&e.fn.draggable&&this._makeDraggable(),r.resizable&&e.fn.resizable&&this._makeResizable(),this._createButtons(r.buttons),this._isOpen=!1,e.fn.bgiframe&&s.bgiframe(),this._on(s,{keydown:function(t){if(!r.modal||t.keyCode!==e.ui.keyCode.TAB)return;var n=e(":tabbable",s),i=n.filter(":first"),o=n.filter(":last");if(t.target===o[0]&&!t.shiftKey)return i.focus(1),!1;if(t.target===i[0]&&t.shiftKey)return o.focus(1),!1}})},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var e,t=this.oldPosition;this.overlay&&this.overlay.destroy(),this.uiDialog.hide(),this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},close:function(t){var n=this,r,i;if(!this._isOpen)return;if(!1===this._trigger("beforeClose",t))return;return this._isOpen=!1,this.overlay&&this.overlay.destroy(),this.options.hide?this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)}):(this.uiDialog.hide(),this._trigger("close",t)),e.ui.dialog.overlay.resize(),this.options.modal&&(r=0,e(".ui-dialog").each(function(){this!==n.uiDialog[0]&&(i=e(this).css("z-index"),isNaN(i)||(r=Math.max(r,i)))}),e.ui.dialog.maxZ=r),this},isOpen:function(){return this._isOpen},moveToTop:function(t,n){var r=this.options,i;return r.modal&&!t||!r.stack&&!r.modal?this._trigger("focus",n):(r.zIndex>e.ui.dialog.maxZ&&(e.ui.dialog.maxZ=r.zIndex),this.overlay&&(e.ui.dialog.maxZ+=1,e.ui.dialog.overlay.maxZ=e.ui.dialog.maxZ,this.overlay.$el.css("z-index",e.ui.dialog.overlay.maxZ)),i={scrollTop:this.element.scrollTop(),scrollLeft:this.element.scrollLeft()},e.ui.dialog.maxZ+=1,this.uiDialog.css("z-index",e.ui.dialog.maxZ),this.element.attr(i),this._trigger("focus",n),this)},open:function(){if(this._isOpen)return;var t,n=this.options,r=this.uiDialog;return this._size(),this._position(n.position),r.show(n.show),this.overlay=n.modal?new e.ui.dialog.overlay(this):null,this.moveToTop(!0),t=this.element.find(":tabbable"),t.length||(t=this.uiDialogButtonPane.find(":tabbable"),t.length||(t=r)),t.eq(0).focus(),this._isOpen=!0,this._trigger("open"),this},_createButtons:function(t){var n=this,r=!1;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),typeof t=="object"&&t!==null&&e.each(t,function(){return!(r=!0)}),r?(e.each(t,function(t,r){r=e.isFunction(r)?{click:r,text:t}:r;var i=e("<button type='button'></button>").attr(r,!0).unbind("click").click(function(){r.click.apply(n.element[0],arguments)}).appendTo(n.uiButtonSet);e.fn.button&&i.button()}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)):this.uiDialog.removeClass("ui-dialog-buttons")},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._trigger("dragStop",i,r(s)),e.ui.dialog.overlay.resize()}})},_makeResizable:function(n){function u(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}n=n===t?this.options.resizable:n;var r=this,i=this.options,s=this.uiDialog.css("position"),o=typeof n=="string"?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:o,start:function(t,n){e(this).addClass("ui-dialog-resizing"),r._trigger("resizeStart",t,u(n))},resize:function(e,t){r._trigger("resize",e,u(t))},stop:function(t,n){e(this).removeClass("ui-dialog-resizing"),i.height=e(this).height(),i.width=e(this).width(),r._trigger("resizeStop",t,u(n)),e.ui.dialog.overlay.resize()}}).css("position",s).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(t){var n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n[0]+(r[0]<0?r[0]:"+"+r[0])+" "+n[1]+(r[1]<0?r[1]:"+"+r[1]),at:n.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()},_setOptions:function(t){var n=this,s={},o=!1;e.each(t,function(e,t){n._setOption(e,t),e in r&&(o=!0),e in i&&(s[e]=t)}),o&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(t,r){var i,s,o=this.uiDialog;switch(t){case"buttons":this._createButtons(r);break;case"closeText":this.uiDialogTitlebarCloseText.text(""+r);break;case"dialogClass":o.removeClass(this.options.dialogClass).addClass(n+r);break;case"disabled":r?o.addClass("ui-dialog-disabled"):o.removeClass("ui-dialog-disabled");break;case"draggable":i=o.is(":data(draggable)"),i&&!r&&o.draggable("destroy"),!i&&r&&this._makeDraggable();break;case"position":this._position(r);break;case"resizable":s=o.is(":data(resizable)"),s&&!r&&o.resizable("destroy"),s&&typeof r=="string"&&o.resizable("option","handles",r),!s&&r!==!1&&this._makeResizable(r);break;case"title":e(".ui-dialog-title",this.uiDialogTitlebar).html(""+(r||" "))}this._super(t,r)},_size:function(){var t,n,r,i=this.options,s=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),i.minWidth>i.width&&(i.width=i.minWidth),t=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),n=Math.max(0,i.minHeight-t),i.height==="auto"?e.support.minHeight?this.element.css({minHeight:n,height:"auto"}):(this.uiDialog.show(),r=this.element.css("height","auto").height(),s||this.uiDialog.hide(),this.element.height(Math.max(r,n))):this.element.height(Math.max(i.height-t,0)),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),e.extend(e.ui.dialog,{uuid:0,maxZ:0,getTitleId:function(e){var t=e.attr("id");return t||(this.uuid+=1,t=this.uuid),"ui-dialog-title-"+t},overlay:function(t){this.$el=e.ui.dialog.overlay.create(t)}}),e.extend(e.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:e.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(e){return e+".dialog-overlay"}).join(" "),create:function(t){this.instances.length===0&&(setTimeout(function(){e.ui.dialog.overlay.instances.length&&e(document).bind(e.ui.dialog.overlay.events,function(t){if(e(t.target).zIndex()<e.ui.dialog.overlay.maxZ)return!1})},1),e(window).bind("resize.dialog-overlay",e.ui.dialog.overlay.resize));var n=this.oldInstances.pop()||e("<div>").addClass("ui-widget-overlay");return e(document).bind("keydown.dialog-overlay",function(r){var i=e.ui.dialog.overlay.instances;i.length!==0&&i[i.length-1]===n&&t.options.closeOnEscape&&!r.isDefaultPrevented()&&r.keyCode&&r.keyCode===e.ui.keyCode.ESCAPE&&(t.close(r),r.preventDefault())}),n.appendTo(document.body).css({width:this.width(),height:this.height()}),e.fn.bgiframe&&n.bgiframe(),this.instances.push(n),n},destroy:function(t){var n=e.inArray(t,this.instances),r=0;n!==-1&&this.oldInstances.push(this.instances.splice(n,1)[0]),this.instances.length===0&&e([document,window]).unbind(".dialog-overlay"),t.height(0).width(0).remove(),e.each(this.instances,function(){r=Math.max(r,this.css("z-index"))}),this.maxZ=r},height:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),n=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),t<n?e(window).height()+"px":t+"px"):e(document).height()+"px"},width:function(){var t,n;return e.ui.ie?(t=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),n=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),t<n?e(window).width()+"px":t+"px"):e(document).width()+"px"},resize:function(){var t=e([]);e.each(e.ui.dialog.overlay.instances,function(){t=t.add(this)}),t.css({width:0,height:0}).css({width:e.ui.dialog.overlay.width(),height:e.ui.dialog.overlay.height()})}}),e.extend(e.ui.dialog.overlay.prototype,{destroy:function(){e.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);(function(e,t){var n=!1;e.widget("ui.menu",{version:"1.9.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var r=e(t.target).closest(".ui-menu-item");!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),n=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus+":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"});t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),r.each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},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(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);(function(e,t){e.widget("ui.progressbar",{version:"1.9.1",options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return e===t?this._value():(this._setOption("value",e),this)},_setOption:function(e,t){e==="value"&&(this.options.value=t,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),this._super(e,t)},_value:function(){var e=this.options.value;return typeof e!="number"&&(e=0),Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage();this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.attr("aria-valuenow",e)}})})(jQuery);(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.1",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var t,r,i=this.options,s=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),o="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",u=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(i.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),i.range&&(i.range===!0&&(i.values||(i.values=[this._valueMin(),this._valueMin()]),i.values.length&&i.values.length!==2&&(i.values=[i.values[0],i.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(i.range==="min"||i.range==="max"?" ui-slider-range-"+i.range:""))),r=i.values&&i.values.length||1;for(t=s.length;t<r;t++)u.push(o);this.handles=s.add(e(u.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){i.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){i.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));i>n&&(i=n,s=e(this),o=t)}),c.range===!0&&this.values(1)===c.min&&(o+=1,s=e(this.handles[o])),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))}})})(jQuery);(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.9.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{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.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._spin((e||1)*this.options.step)},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._spin((e||1)*-this.options.step)},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})})(jQuery);(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&e.href.replace(r,"")===location.href.replace(r,"")}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.9.1",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options,r=n.active,i=location.hash.substring(1);this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs();if(r===null){i&&this.tabs.each(function(t,n){if(e(n).attr("aria-controls")===i)return r=t,!1}),r===null&&(r=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(r===null||r===-1)r=this.tabs.length?0:!1}r!==!1&&(r=this.tabs.index(this.tabs.eq(r)),r===-1&&(r=n.collapsible?!1:0)),n.active=r,!n.collapsible&&n.active===!1&&this.anchors.length&&(n.active=0),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(this.options.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r,i=this.element.parent();t==="fill"?(e.support.minHeight||(r=i.css("overflow"),i.css("overflow","hidden")),n=i.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),r&&i.css("overflow",r),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n):t.removeAttr("aria-controls")}),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var t=this;this._on({tabsbeforeload:function(n,r){if(e.data(r.tab[0],"cache.tabs")){n.preventDefault();return}r.jqXHR.success(function(){t.options.cache&&e.data(r.tab[0],"cache.tabs",!0)})}})},_ajaxSettings:function(t,n,r){var i=this.options.ajaxOptions;return e.extend({},i,{error:function(e,t){try{i.error(e,t,r.tab.closest("li").index(),r.tab[0])}catch(n){}}},this._superApply(arguments))},_setOption:function(e,t){e==="cache"&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading…</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target!==this.element[0]||!this.options.spinner)return;var n=t.tab.find("span"),r=n.html();n.html(this.options.spinner),t.jqXHR.complete(function(){n.html(r)})}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var n=this.options,r;if(t&&n.disabled===!0||e.isArray(n.disabled)&&e.inArray(t,n.disabled)!==-1)r=!0;this._superApply(arguments),r&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var n=this.options,r;if(t&&n.disabled===!1||e.isArray(n.disabled)&&e.inArray(t,n.disabled)===-1)r=!0;this._superApply(arguments),r&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},add:function(n,r,i){i===t&&(i=this.anchors.length);var s,o,u=this.options,a=e(u.tabTemplate.replace(/#\{href\}/g,n).replace(/#\{label\}/g,r)),f=n.indexOf("#")?this._tabId(a):n.replace("#","");return a.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),a.attr("aria-controls",f),s=i>=this.tabs.length,o=this.element.find("#"+f),o.length||(o=this._createPanel(f),s?i>0?o.insertAfter(this.panels.eq(-1)):o.appendTo(this.element):o.insertBefore(this.panels[i])),o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),s?a.appendTo(this.tablist):a.insertBefore(this.tabs[i]),u.disabled=e.map(u.disabled,function(e){return e>=i?++e:e}),this.refresh(),this.tabs.length===1&&u.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[i],this.panels[i])),this},remove:function(t){t=this._getIndex(t);var n=this.options,r=this.tabs.eq(t).remove(),i=this._getPanelForTab(r).remove();return r.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(t+1<this.anchors.length?1:-1)),n.disabled=e.map(e.grep(n.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(r.find("a")[0],i[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var n=t.is("li")?t.find("a[href]"):t;return n=n[0],e(n).closest("li").attr("aria-controls")||n.title&&n.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;e.active===null&&e.selected!==t&&(e.active=e.selected===-1?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if(e!=="selected")return this._super(e,t);var n=this.options;this._super("active",t===-1?!1:t),n.selected=n.active,n.selected===!1&&(n.selected=-1)},_eventHandler:function(){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,n){var r=this._superApply(arguments);return r?(e==="beforeActivate"&&n.newTab.length?r=this._super("select",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()}):e==="activate"&&n.newTab.length&&(r=this._super("show",t,{tab:n.newTab.find(".ui-tabs-anchor")[0],panel:n.newPanel[0],index:n.newTab.closest("li").index()})),r):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){e=this._getIndex(e);if(e===-1){if(!this.options.collapsible||this.options.selected===-1)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e=this.options,t;e.active==null&&e.cookie&&(t=parseInt(this._cookie(),10),t===-1&&(t=!1),e.active=t),this._super()},_cookie:function(n){var r=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(r.push(n===!1?-1:n),r.push(this.options.cookie)),e.cookie.apply(null,r)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,n,r){var i=e.extend({},r);return t==="load"&&(i.panel=i.panel[0],i.tab=i.tab.find(".ui-tabs-anchor")[0]),this._super(t,n,i)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,n,r=this.options.fx;return r&&(e.isArray(r)?(t=r[0],n=r[1]):t=n=r),r?{show:n,hide:t}:null},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function u(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&s.show?r.animate(s.show,s.show.duration,function(){o()}):(r.show(),o())}var n=this,r=t.newPanel,i=t.oldPanel,s=this._getFx();if(!s)return this._super(e,t);n.running=!0,i.length&&s.hide?i.animate(s.hide,s.hide.duration,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i.hide(),u())}}))})(jQuery);(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.9.1",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flipfit"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length)return;if(this.options.track&&r.data("ui-tooltip-id")){this._find(r).position(e.extend({of:r},this.options.position)),this._off(this.document,"mousemove");return}r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t;e(this).data("tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,n.close(t,!0)),this.title&&(e(this).uniqueId(),n.parents[this.id]={element:this,title:this.title},this.title="")}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("tooltip-open"))return;i._delay(function(){this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.originalEvent.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(e,t){t.element.title=t.title,delete n.parents[e]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),e.fn.bgiframe&&i.bgiframe(),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);jQuery.effects||function(e,t){var n=e.uiBackCompat!==!1,r="ui-effects-";e.effects={effect:{}},function(t,n){function p(e,t,n){var r=a[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function d(e){var n=o(),r=n._rgba=[];return e=e.toLowerCase(),h(s,function(t,i){var s,o=i.re.exec(e),a=o&&i.parse(o),f=i.space||"rgba";if(a)return s=n[f](a),n[u[f].cache]=s[u[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&t.extend(r,c.transparent),n):c[e]}function v(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),i=/^([\-+])=\s*(\d+\.?\d*)/,s=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1]*2.55,e[2]*2.55,e[3]*2.55,e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],o=t.Color=function(e,n,r,i){return new t.Color.fn.parse(e,n,r,i)},u={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"}}}},a={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},f=o.support={},l=t("<p>")[0],c,h=t.each;l.style.cssText="background-color:rgba(1,1,1,.5)",f.rgba=l.style.backgroundColor.indexOf("rgba")>-1,h(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),o.fn=t.extend(o.prototype,{parse:function(r,i,s,a){if(r===n)return this._rgba=[null,null,null,null],this;if(r.jquery||r.nodeType)r=t(r).css(i),i=n;var f=this,l=t.type(r),v=this._rgba=[];i!==n&&(r=[r,i,s,a],l="array");if(l==="string")return this.parse(d(r)||c._default);if(l==="array")return h(u.rgba.props,function(e,t){v[t.idx]=p(r[t.idx],t)}),this;if(l==="object")return r instanceof o?h(u,function(e,t){r[t.cache]&&(f[t.cache]=r[t.cache].slice())}):h(u,function(t,n){var i=n.cache;h(n.props,function(e,t){if(!f[i]&&n.to){if(e==="alpha"||r[e]==null)return;f[i]=n.to(f._rgba)}f[i][t.idx]=p(r[e],t,!0)}),f[i]&&e.inArray(null,f[i].slice(0,3))<0&&(f[i][3]=1,n.from&&(f._rgba=n.from(f[i])))}),this},is:function(e){var t=o(e),n=!0,r=this;return h(u,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],h(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return h(u,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=o(e),r=n._space(),i=u[r],s=this.alpha()===0?o("transparent"):this,f=s[i.cache]||i.to(s._rgba),l=f.slice();return n=n[i.cache],h(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],u=a[r.type]||{};if(o===null)return;s===null?l[i]=o:(u.mod&&(o-s>u.mod/2?s+=u.mod:s-o>u.mod/2&&(s-=u.mod)),l[i]=p((o-s)*t+s,r))}),this[r](l)},blend:function(e){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=o(e)._rgba;return o(t.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var e="rgba(",n=t.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),e="rgb("),e+n.join()+")"},toHslaString:function(){var e="hsla(",n=t.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),e="hsl("),e+n.join()+")"},toHexString:function(e){var n=this._rgba.slice(),r=n.pop();return e&&n.push(~~(r*255)),"#"+t.map(n,function(e){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),o.fn.parse.prototype=o.fn,u.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,f===0||f===1?c=f:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},u.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;return[Math.round(v(o,s,t+1/3)*255),Math.round(v(o,s,t)*255),Math.round(v(o,s,t-1/3)*255),i]},h(u,function(e,r){var s=r.props,u=r.cache,a=r.to,f=r.from;o.fn[e]=function(e){a&&!this[u]&&(this[u]=a(this._rgba));if(e===n)return this[u].slice();var r,i=t.type(e),l=i==="array"||i==="object"?e:arguments,c=this[u].slice();return h(s,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=c[t.idx]),c[t.idx]=p(n,t)}),f?(r=o(f(c)),r[u]=c,r):o(c)},h(s,function(n,r){if(o.fn[n])return;o.fn[n]=function(s){var o=t.type(s),u=n==="alpha"?this._hsla?"hsla":"rgba":e,a=this[u](),f=a[r.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=t.type(s)),s==null&&r.empty?this:(o==="string"&&(l=i.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[r.idx]=s,this[u](a)))}})}),h(r,function(e,n){t.cssHooks[n]={set:function(e,r){var i,s,u="";if(t.type(r)!=="string"||(i=d(r))){r=o(i||r);if(!f.rgba&&r._rgba[3]!==1){s=n==="backgroundColor"?e.parentNode:e;while((u===""||u==="transparent")&&s&&s.style)try{u=t.css(s,"backgroundColor"),s=s.parentNode}catch(a){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{e.style[n]=r}catch(l){}}},t.fx.step[n]=function(e){e.colorInit||(e.start=o(e.elem,n),e.end=o(e.end),e.colorInit=!0),t.cssHooks[n].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return h(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},c=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"}}(jQuery),function(){function i(){var t=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,n={},r,i;if(t&&t.length&&t[0]&&t[t[0]]){i=t.length;while(i--)r=t[i],typeof t[r]=="string"&&(n[e.camelCase(r)]=t[r])}else for(r in t)typeof t[r]=="string"&&(n[r]=t[r]);return n}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").andSelf():r;f=f.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i.call(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=jQuery.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function i(t,n,r,i){e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},n==null&&(n={}),e.isFunction(n)&&(i=n,r=null,n={});if(typeof n=="number"||e.fx.speeds[n])i=r,r=n,n={};return e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:typeof r=="number"?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function s(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]?n&&e.effects[t]?!1:!0:!1}e.extend(e.effects,{version:"1.9.1",save:function(e,t){for(var n=0;n<t.length;n++)t[n]!==null&&e.data(r+t[n],e[0].style[t[n]])},restore:function(e,n){var i,s;for(s=0;s<n.length;s++)n[s]!==null&&(i=e.data(r+n[s]),i===t&&(i=""),e.css(n[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function a(n){function u(){e.isFunction(i)&&i.call(r[0]),e.isFunction(n)&&n()}var r=e(this),i=t.complete,s=t.mode;(r.is(":hidden")?s==="hide":s==="show")?u():o.call(r[0],t,u)}var t=i.apply(this,arguments),r=t.mode,s=t.queue,o=e.effects.effect[t.effect],u=!o&&n&&e.effects[t.effect];return e.fx.off||!o&&!u?r?this[r](t.duration,t.complete):this.each(function(){t.complete&&t.complete.call(this)}):o?s===!1?this.each(a):this.queue(s||"fx",a):u.call(this,{options:t,duration:t.duration,callback:t.complete,mode:t.mode})},_show:e.fn.show,show:function(e){if(s(e))return this._show.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(s(e))return this._hide.apply(this,arguments);var t=i.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(s(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=i.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r,i,s,o=e(this),u=["position","top","bottom","left","right","width","height","overflow","opacity"],a=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],l=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),d=t.restore||p!=="effect",v=t.scale||"both",m=t.origin||["middle","center"],g=o.css("position"),y=d?u:a,b={height:0,width:0};p==="show"&&o.show(),r={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},t.mode==="toggle"&&p==="show"?(o.from=t.to||b,o.to=t.from||r):(o.from=t.from||(p==="show"?b:r),o.to=t.to||(p==="hide"?b:r)),s={from:{y:o.from.height/r.height,x:o.from.width/r.width},to:{y:o.to.height/r.height,x:o.to.width/r.width}};if(v==="box"||v==="both")s.from.y!==s.to.y&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,s.from.y,o.from),o.to=e.effects.setTransition(o,c,s.to.y,o.to)),s.from.x!==s.to.x&&(y=y.concat(h),o.from=e.effects.setTransition(o,h,s.from.x,o.from),o.to=e.effects.setTransition(o,h,s.to.x,o.to));(v==="content"||v==="both")&&s.from.y!==s.to.y&&(y=y.concat(l).concat(f),o.from=e.effects.setTransition(o,l,s.from.y,o.from),o.to=e.effects.setTransition(o,l,s.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(i=e.effects.getBaseline(m,r),o.from.top=(r.outerHeight-o.outerHeight())*i.y,o.from.left=(r.outerWidth-o.outerWidth())*i.x,o.to.top=(r.outerHeight-o.to.outerHeight)*i.y,o.to.left=(r.outerWidth-o.to.outerWidth)*i.x),o.css(o.from);if(v==="content"||v==="both")c=c.concat(["marginTop","marginBottom"]).concat(l),h=h.concat(["marginLeft","marginRight"]),f=u.concat(c).concat(h),o.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x},n.to={height:r.height*s.to.y,width:r.width*s.to.x},s.from.y!==s.to.y&&(n.from=e.effects.setTransition(n,c,s.from.y,n.from),n.to=e.effects.setTransition(n,c,s.to.y,n.to)),s.from.x!==s.to.x&&(n.from=e.effects.setTransition(n,h,s.from.x,n.from),n.to=e.effects.setTransition(n,h,s.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){d&&e.effects.restore(n,f)})});o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o.to.opacity===0&&o.css("opacity",o.from.opacity),p==="hide"&&o.hide(),e.effects.restore(o,y),d||(g==="static"?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,n){var r=parseInt(n,10),i=e?o.to.left:o.to.top;return n==="auto"?i+"px":r+i+"px"})})),e.effects.removeWrapper(o),n()}})}})(jQuery);(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery); \ No newline at end of file diff --git a/dashboard/js/jquery-ui.min.js b/dashboard/js/jquery-ui.min.js deleted file mode 100644 index 2d176688..00000000 --- a/dashboard/js/jquery-ui.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! jQuery UI - v1.11.4 - 2015-06-21 -* http://jqueryui.com -* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, menu.js, progressbar.js, selectmenu.js, slider.js, spinner.js, tabs.js, tooltip.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js -* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ - -(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var a,n,r,o=t.nodeName.toLowerCase();return"area"===o?(a=t.parentNode,n=a.name,t.href&&n&&"map"===a.nodeName.toLowerCase()?(r=e("img[usemap='#"+n+"']")[0],!!r&&i(r)):!1):(/^(input|select|textarea|button|object)$/.test(o)?!t.disabled:"a"===o?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function a(){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},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=n(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",r)}function r(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function o(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",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}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,a=t?/(auto|scroll|hidden)/:/(auto|scroll)/,n=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:a.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&n.length?n:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),a=isNaN(s);return(a||s>=0)&&t(i,!a)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,n){return e.each(a,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),n&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var a="Width"===i?["Left","Right"]:["Top","Bottom"],n=i.toLowerCase(),r={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?r["inner"+i].call(this):this.each(function(){e(this).css(n,s(this,t)+"px")})},e.fn["outer"+i]=function(t,a){return"number"!=typeof t?r["outer"+i].call(this,t):this.each(function(){e(this).css(n,s(this,t,!0,a)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,a=e(this[0]);a.length&&a[0]!==document;){if(i=a.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(a.css("zIndex"),10),!isNaN(s)&&0!==s))return s;a=a.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var a,n=e.ui[t].prototype;for(a in s)n.plugins[a]=n.plugins[a]||[],n.plugins[a].push([i,s[a]])},call:function(e,t,i,s){var a,n=e.plugins[t];if(n&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(a=0;n.length>a;a++)e.options[n[a][0]]&&n[a][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,a,n;for(n=0;null!=(a=i[n]);n++)try{s=e._data(a,"events"),s&&s.remove&&e(a).triggerHandler("remove")}catch(r){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var a,n,r,o,h={},l=t.split(".")[0];return t=t.split(".")[1],a=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][a.toLowerCase()]=function(t){return!!e.data(t,a)},e[l]=e[l]||{},n=e[l][t],r=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new r(e,t)},e.extend(r,n,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),o=new i,o.options=e.widget.extend({},o.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},a=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,n=this._superApply;return this._super=e,this._superApply=a,t=s.apply(this,arguments),this._super=i,this._superApply=n,t}}(),void 0):(h[t]=s,void 0)}),r.prototype=e.widget.extend(o,{widgetEventPrefix:n?o.widgetEventPrefix||t:t},h,{constructor:r,namespace:l,widgetName:t,widgetFullName:a}),n?(e.each(n._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete n._childConstructors):i._childConstructors.push(r),e.widget.bridge(t,r),r},e.widget.extend=function(t){for(var i,s,a=u.call(arguments,1),n=0,r=a.length;r>n;n++)for(i in a[n])s=a[n][i],a[n].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(a){var n="string"==typeof a,r=u.call(arguments,1),o=this;return n?this.each(function(){var i,n=e.data(this,s);return"instance"===a?(o=n,!1):n?e.isFunction(n[a])&&"_"!==a.charAt(0)?(i=n[a].apply(n,r),i!==n&&void 0!==i?(o=i&&i.jquery?o.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+a+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+a+"'")}):(r.length&&(a=e.widget.extend.apply(null,[a].concat(r))),this.each(function(){var t=e.data(this,s);t?(t.option(a||{}),t._init&&t._init()):e.data(this,s,new i(a,this))})),o}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,a,n,r=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(r={},s=t.split("."),t=s.shift(),s.length){for(a=r[t]=e.widget.extend({},this.options[t]),n=0;s.length-1>n;n++)a[s[n]]=a[s[n]]||{},a=a[s[n]];if(t=s.pop(),1===arguments.length)return void 0===a[t]?null:a[t];a[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];r[t]=i}return this._setOptions(r),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var a,n=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=a=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,a=this.widget()),e.each(s,function(s,r){function o(){return t||n.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof r?n[r]:r).apply(n,arguments):void 0}"string"!=typeof r&&(o.guid=r.guid=r.guid||o.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+n.eventNamespace,u=h[2];u?a.delegate(u,l,o):i.bind(l,o)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&e.effects.effect[o]?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,a="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!a&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var a,n,r=Math.max,o=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==a)return a;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),n=s.children()[0];return e("body").append(s),t=n.offsetWidth,s.css("overflow","scroll"),i=n.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),a=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),a="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,n="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:n?e.position.scrollbarWidth():0,height:a?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),a=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:a,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||a?i.width():i.outerWidth(),height:s||a?i.height():i.outerHeight()}}},e.fn.position=function(a){if(!a||!a.of)return f.apply(this,arguments);a=e.extend({},a);var p,m,g,v,y,b,_=e(a.of),x=e.position.getWithinInfo(a.within),k=e.position.getScrollInfo(x),w=(a.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(a.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(a[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],a[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===a.at[0]?y.left+=m:"center"===a.at[0]&&(y.left+=m/2),"bottom"===a.at[1]?y.top+=g:"center"===a.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+k.width,S=c+b+i(this,"marginBottom")+k.height,M=e.extend({},y),N=t(T.my,u.outerWidth(),u.outerHeight());"right"===a.my[0]?M.left-=d:"center"===a.my[0]&&(M.left-=d/2),"bottom"===a.my[1]?M.top-=c:"center"===a.my[1]&&(M.top-=c/2),M.left+=N[0],M.top+=N[1],n||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[w[t]]&&e.ui.position[w[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+N[0],p[1]+N[1]],my:a.my,at:a.at,within:x,elem:u})}),a.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,n=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>n?"top":s>0?"bottom":"middle"};d>m&&m>o(t+i)&&(h.horizontal="center"),c>g&&g>o(s+n)&&(h.vertical="middle"),h.important=r(o(t),o(i))>r(o(s),o(n))?"horizontal":"vertical",a.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollLeft:s.offset.left,n=s.width,o=e.left-t.collisionPosition.marginLeft,h=a-o,l=o+t.collisionWidth-n-a;t.collisionWidth>n?h>0&&0>=l?(i=e.left+h+t.collisionWidth-n-a,e.left+=h-i):e.left=l>0&&0>=h?a:h>l?a+n-t.collisionWidth:a:h>0?e.left+=h:l>0?e.left-=l:e.left=r(e.left-o,e.left)},top:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollTop:s.offset.top,n=t.within.height,o=e.top-t.collisionPosition.marginTop,h=a-o,l=o+t.collisionHeight-n-a;t.collisionHeight>n?h>0&&0>=l?(i=e.top+h+t.collisionHeight-n-a,e.top+=h-i):e.top=l>0&&0>=h?a:h>l?a+n-t.collisionHeight:a:h>0?e.top+=h:l>0?e.top-=l:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var i,s,a=t.within,n=a.offset.left+a.scrollLeft,r=a.width,h=a.isWindow?a.scrollLeft:a.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-r-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-r-n,(0>i||o(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>o(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,a=t.within,n=a.offset.top+a.scrollTop,r=a.height,h=a.isWindow?a.scrollTop:a.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-r-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-r-n,(0>s||o(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>o(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,a,r,o=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(o?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(r in s)t.style[r]=s[r];t.appendChild(h),i=o||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",a=e(h).offset().left,n=a>10&&11>a,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",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.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.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"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){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:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.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.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),a=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return a.parents("body").length||a.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&a[0]===this.element[0]&&this._setPositionRelative(),a[0]===this.element[0]||/(fixed|absolute)/.test(a.css("position"))||a.css("position","absolute"),a},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?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 t,i,s,a=this.options,n=this.document[0];return this.relativeContainer=null,a.containment?"window"===a.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===a.containment?(this.containment=[0,0,e(n).width()-this.helperProportions.width-this.margins.left,(e(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):a.containment.constructor===Array?(this.containment=a.containment,void 0):("parent"===a.containment&&(a.containment=this.helper[0].parentNode),i=e(a.containment),s=i[0],s&&(t=/(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),(t?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,(t?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(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.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:t.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(e,t){var i,s,a,n,r=this.options,o=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return o&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(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,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),r.grid&&(a=r.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/r.grid[1])*r.grid[1]:this.originalPageY,l=i?a-this.offset.click.top>=i[1]||a-this.offset.click.top>i[3]?a:a-this.offset.click.top>=i[1]?a-r.grid[1]:a+r.grid[1]:a,n=r.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/r.grid[0])*r.grid[0]:this.originalPageX,h=i?n-this.offset.click.left>=i[0]||n-this.offset.click.left>i[2]?n:n-this.offset.click.left>=i[0]?n-r.grid[0]:n+r.grid[0]:n),"y"===r.axis&&(h=this.originalPageX),"x"===r.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:o?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:o?0:this.offset.scroll.left)} -},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var a=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,a))})},stop:function(t,i,s){var a=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,a))})},drag:function(t,i,s){e.each(s.sortables,function(){var a=!1,n=this;n.positionAbs=s.positionAbs,n.helperProportions=s.helperProportions,n.offset.click=s.offset.click,n._intersectsWith(n.containerCache)&&(a=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==n&&this._intersectsWith(this.containerCache)&&e.contains(n.element[0],this.element[0])&&(a=!1),a})),a?(n.isOver||(n.isOver=1,s._parent=i.helper.parent(),n.currentItem=i.helper.appendTo(n.element).data("ui-sortable-item",!0),n.options._helper=n.options.helper,n.options.helper=function(){return i.helper[0]},t.target=n.currentItem[0],n._mouseCapture(t,!0),n._mouseStart(t,!0,!0),n.offset.click.top=s.offset.click.top,n.offset.click.left=s.offset.click.left,n.offset.parent.left-=s.offset.parent.left-n.offset.parent.left,n.offset.parent.top-=s.offset.parent.top-n.offset.parent.top,s._trigger("toSortable",t),s.dropped=n.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,n.fromOutside=s),n.currentItem&&(n._mouseDrag(t),i.position=n.position)):n.isOver&&(n.isOver=0,n.cancelHelperRemoval=!0,n.options._revert=n.options.revert,n.options.revert=!1,n._trigger("out",t,n._uiHash(n)),n._mouseStop(t,!0),n.options.revert=n.options._revert,n.options.helper=n.options._helper,n.placeholder&&n.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var a=e("body"),n=s.options;a.css("cursor")&&(n._cursor=a.css("cursor")),a.css("cursor",n.cursor)},stop:function(t,i,s){var a=s.options;a._cursor&&e("body").css("cursor",a._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var a=e(i.helper),n=s.options;a.css("opacity")&&(n._opacity=a.css("opacity")),a.css("opacity",n.opacity)},stop:function(t,i,s){var a=s.options;a._opacity&&e(i.helper).css("opacity",a._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,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(t,i,s){var a=s.options,n=!1,r=s.scrollParentNotHidden[0],o=s.document[0];r!==o&&"HTML"!==r.tagName?(a.axis&&"x"===a.axis||(s.overflowOffset.top+r.offsetHeight-t.pageY<a.scrollSensitivity?r.scrollTop=n=r.scrollTop+a.scrollSpeed:t.pageY-s.overflowOffset.top<a.scrollSensitivity&&(r.scrollTop=n=r.scrollTop-a.scrollSpeed)),a.axis&&"y"===a.axis||(s.overflowOffset.left+r.offsetWidth-t.pageX<a.scrollSensitivity?r.scrollLeft=n=r.scrollLeft+a.scrollSpeed:t.pageX-s.overflowOffset.left<a.scrollSensitivity&&(r.scrollLeft=n=r.scrollLeft-a.scrollSpeed))):(a.axis&&"x"===a.axis||(t.pageY-e(o).scrollTop()<a.scrollSensitivity?n=e(o).scrollTop(e(o).scrollTop()-a.scrollSpeed):e(window).height()-(t.pageY-e(o).scrollTop())<a.scrollSensitivity&&(n=e(o).scrollTop(e(o).scrollTop()+a.scrollSpeed))),a.axis&&"y"===a.axis||(t.pageX-e(o).scrollLeft()<a.scrollSensitivity?n=e(o).scrollLeft(e(o).scrollLeft()-a.scrollSpeed):e(window).width()-(t.pageX-e(o).scrollLeft())<a.scrollSensitivity&&(n=e(o).scrollLeft(e(o).scrollLeft()+a.scrollSpeed)))),n!==!1&&e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var a=s.options;s.snapElements=[],e(a.snap.constructor!==String?a.snap.items||":data(ui-draggable)":a.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var a,n,r,o,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(a=m>=Math.abs(u-b),n=m>=Math.abs(d-y),r=m>=Math.abs(h-v),o=m>=Math.abs(l-g),a&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),n&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=a||n||r||o,"outer"!==f.snapMode&&(a=m>=Math.abs(u-y),n=m>=Math.abs(d-b),r=m>=Math.abs(h-g),o=m>=Math.abs(l-v),a&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),n&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(a||n||r||o||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=a||n||r||o||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var a,n=s.options,r=e.makeArray(e(n.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});r.length&&(a=parseInt(e(r[0]).css("zIndex"),10)||0,e(r).each(function(t){e(this).css("zIndex",a+t)}),this.css("zIndex",a+r.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var a=e(i.helper),n=s.options;a.css("zIndex")&&(n._zIndex=a.css("zIndex")),a.css("zIndex",n.zIndex)},stop:function(t,i,s){var a=s.options;a._zIndex&&e(i.helper).css("zIndex",a._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,a=!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=e(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)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(a=!0,!1):void 0}),a?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,a){if(!i.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,r=(t.positionAbs||t.position.absolute).top+t.margins.top,o=n+t.helperProportions.width,h=r+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return n>=l&&d>=o&&r>=u&&c>=h;case"intersect":return n+t.helperProportions.width/2>l&&d>o-t.helperProportions.width/2&&r+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(a.pageY,u,i.proportions().height)&&e(a.pageX,l,i.proportions().width);case"touch":return(r>=u&&c>=r||h>=u&&c>=h||u>r&&h>c)&&(n>=l&&d>=n||o>=l&&d>=o||l>n&&o>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,a,n=e.ui.ddmanager.droppables[t.options.scope]||[],r=i?i.type:null,o=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;n.length>s;s++)if(!(n[s].options.disabled||t&&!n[s].accept.call(n[s].element[0],t.currentItem||t.element))){for(a=0;o.length>a;a++)if(o[a]===n[s].element[0]){n[s].proportions().height=0;continue e}n[s].visible="none"!==n[s].element.css("display"),n[s].visible&&("mousedown"===r&&n[s]._activate.call(n[s],i),n[s].offset=n[s].element.offset(),n[s].proportions({width:n[s].element[0].offsetWidth,height:n[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,a,n,r=e.ui.intersect(t,this,this.options.tolerance,i),o=!r&&this.isover?"isout":r&&!this.isover?"isover":null;o&&(this.options.greedy&&(a=this.options.scope,n=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===a}),n.length&&(s=e(n[0]).droppable("instance"),s.greedyChild="isover"===o)),s&&"isover"===o&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[o]=!0,this["isout"===o?"isover":"isout"]=!1,this["isover"===o?"_over":"_out"].call(this,i),s&&"isout"===o&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,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(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",a=!1;return t[s]>0?!0:(t[s]=1,a=t[s]>0,t[s]=0,a)},_create:function(){var t,i,s,a,n,r=this,o=this.options;if(this.element.addClass("ui-resizable"),e.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}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<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,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom: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({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=o.handles||(e(".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=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),n="ui-resizable-"+s,a=e("<div class='ui-resizable-handle "+n+"'></div>"),a.css({zIndex:o.zIndex}),"se"===s&&a.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(a);this._renderAxis=function(t){var i,s,a,n;t=t||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]=e(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),n=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),a=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(a,n),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.mouseover(function(){r.resizing||(this.className&&(a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=a&&a[1]?a[1]:"se")}),o.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){o.disabled||(e(this).removeClass("ui-resizable-autohide"),r._handles.show())}).mouseleave(function(){o.disabled||r.resizing||(e(this).addClass("ui-resizable-autohide"),r._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,a=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(t){var i,s,a,n=this.options,r=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),n.containment&&(i+=e(n.containment).scrollLeft()||0,s+=e(n.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:r.width(),height:r.height()},this.originalSize=this._helper?{width:r.outerWidth(),height:r.outerHeight()}:{width:r.width(),height:r.height()},this.sizeDiff={width:r.outerWidth()-r.width(),height:r.outerHeight()-r.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,a=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===a?this.axis+"-resize":a),r.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,a=this.originalMousePosition,n=this.axis,r=t.pageX-a.left||0,o=t.pageY-a.top||0,h=this._change[n];return this._updatePrevProperties(),h?(i=h.apply(this,[t,r,o]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,a,n,r,o,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),a=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,n=s?0:u.sizeDiff.width,r={width:u.helper.width()-n,height:u.helper.height()-a},o=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(r,{top:h,left:o})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),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 e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,a,n,r=this.options;n={minWidth:this._isNumber(r.minWidth)?r.minWidth:0,maxWidth:this._isNumber(r.maxWidth)?r.maxWidth:1/0,minHeight:this._isNumber(r.minHeight)?r.minHeight:0,maxHeight:this._isNumber(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||e)&&(t=n.minHeight*this.aspectRatio,s=n.minWidth/this.aspectRatio,i=n.maxHeight*this.aspectRatio,a=n.maxWidth/this.aspectRatio,t>n.minWidth&&(n.minWidth=t),s>n.minHeight&&(n.minHeight=s),n.maxWidth>i&&(n.maxWidth=i),n.maxHeight>a&&(n.maxHeight=a)),this._vBoundaries=n},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,a=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,n=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,r=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,o=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return n&&(e.width=t.minWidth),r&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),a&&(e.height=t.maxHeight),n&&l&&(e.left=o-t.minWidth),s&&l&&(e.left=o-t.maxWidth),r&&u&&(e.top=h-t.minHeight),a&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],a=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(a[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,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(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,a=this.originalPosition;return{top:a.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,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}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,a=i._proportionallyResizeElements,n=a.length&&/textarea/i.test(a[0].nodeName),r=n&&i._hasScroll(a[0],"left")?0:i.sizeDiff.height,o=n?0:i.sizeDiff.width,h={width:i.size.width-o,height:i.size.height-r},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};a&&a.length&&e(a[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,a,n,r,o,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,a=h.containerSize.height,n=h.containerSize.width,r=h._hasScroll(c,"left")?c.scrollWidth:n,o=h._hasScroll(c)?c.scrollHeight:a,h.parentData={element:c,left:s.left,top:s.top,width:r,height:o}))},resize:function(t){var i,s,a,n,r=e(this).resizable("instance"),o=r.options,h=r.containerOffset,l=r.position,u=r._aspectRatio||t.shiftKey,d={top:0,left:0},c=r.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(r._helper?h.left:0)&&(r.size.width=r.size.width+(r._helper?r.position.left-h.left:r.position.left-d.left),u&&(r.size.height=r.size.width/r.aspectRatio,p=!1),r.position.left=o.helper?h.left:0),l.top<(r._helper?h.top:0)&&(r.size.height=r.size.height+(r._helper?r.position.top-h.top:r.position.top),u&&(r.size.width=r.size.height*r.aspectRatio,p=!1),r.position.top=r._helper?h.top:0),a=r.containerElement.get(0)===r.element.parent().get(0),n=/relative|absolute/.test(r.containerElement.css("position")),a&&n?(r.offset.left=r.parentData.left+r.position.left,r.offset.top=r.parentData.top+r.position.top):(r.offset.left=r.element.offset().left,r.offset.top=r.element.offset().top),i=Math.abs(r.sizeDiff.width+(r._helper?r.offset.left-d.left:r.offset.left-h.left)),s=Math.abs(r.sizeDiff.height+(r._helper?r.offset.top-d.top:r.offset.top-h.top)),i+r.size.width>=r.parentData.width&&(r.size.width=r.parentData.width-i,u&&(r.size.height=r.size.width/r.aspectRatio,p=!1)),s+r.size.height>=r.parentData.height&&(r.size.height=r.parentData.height-s,u&&(r.size.width=r.size.height*r.aspectRatio,p=!1)),p||(r.position.left=r.prevPosition.left,r.position.top=r.prevPosition.top,r.size.width=r.prevSize.width,r.size.height=r.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,a=t.containerPosition,n=t.containerElement,r=e(t.helper),o=r.offset(),h=r.outerWidth()-t.sizeDiff.width,l=r.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),a=s.options,n=s.originalSize,r=s.originalPosition,o={height:s.size.height-n.height||0,width:s.size.width-n.width||0,top:s.position.top-r.top||0,left:s.position.left-r.left||0};e(a.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),a={},n=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(n,function(e,t){var i=(s[t]||0)+(o[t]||0);i&&i>=0&&(a[t]=i||null)}),t.css(a)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,a=i.size,n=i.originalSize,r=i.originalPosition,o=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((a.width-n.width)/l)*l,c=Math.round((a.height-n.height)/u)*u,p=n.width+d,f=n.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(o)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(o)?(i.size.width=p,i.size.height=f,i.position.top=r.top-c):/^(sw)$/.test(o)?(i.size.width=p,i.size.height=f,i.position.left=r.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=r.top-c):(f=u-t.height,i.size.height=f,i.position.top=r.top+n.height-f),p-l>0?(i.size.width=p,i.position.left=r.left-d):(p=l-t.width,i.size.width=p,i.position.left=r.left+n.width-p))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",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 t,i=this; -this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,a=e.data(this,"selectable-item");return a?(s=!t.metaKey&&!t.ctrlKey||!a.$element.hasClass("ui-selected"),a.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),a.unselecting=!s,a.selecting=s,a.selected=s,s?i._trigger("selecting",t,{selecting:a.element}):i._trigger("unselecting",t,{unselecting:a.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,a=this.options,n=this.opos[0],r=this.opos[1],o=t.pageX,h=t.pageY;return n>o&&(i=o,o=n,n=i),r>h&&(i=h,h=r,r=i),this.helper.css({left:n,top:r,width:o-n,height:h-r}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===a.tolerance?l=!(i.left>o||n>i.right||i.top>h||r>i.bottom):"fit"===a.tolerance&&(l=i.left>n&&o>i.right&&i.top>r&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",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(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,a=!1,n=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,n.widgetName+"-item")===n?(s=e(this),!1):void 0}),e.data(t.target,n.widgetName+"-item")===n&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(a=!0)}),a)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var a,n,r=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),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},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.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(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,r.cursorAt&&this._adjustOffsetFromHelper(r.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),r.containment&&this._setContainment(),r.cursor&&"auto"!==r.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",r.cursor),this.storedStylesheet=e("<style>*{ cursor: "+r.cursor+" !important; }</style>").appendTo(n)),r.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",r.opacity)),r.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",r.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(a=this.containers.length-1;a>=0;a--)this.containers[a]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,a,n,r=this.options,o=!1;for(this.position=this._generatePosition(t),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-t.pageY<r.scrollSensitivity?this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop+r.scrollSpeed:t.pageY-this.overflowOffset.top<r.scrollSensitivity&&(this.scrollParent[0].scrollTop=o=this.scrollParent[0].scrollTop-r.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<r.scrollSensitivity?this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft+r.scrollSpeed:t.pageX-this.overflowOffset.left<r.scrollSensitivity&&(this.scrollParent[0].scrollLeft=o=this.scrollParent[0].scrollLeft-r.scrollSpeed)):(t.pageY-this.document.scrollTop()<r.scrollSensitivity?o=this.document.scrollTop(this.document.scrollTop()-r.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<r.scrollSensitivity&&(o=this.document.scrollTop(this.document.scrollTop()+r.scrollSpeed)),t.pageX-this.document.scrollLeft()<r.scrollSensitivity?o=this.document.scrollLeft(this.document.scrollLeft()-r.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<r.scrollSensitivity&&(o=this.document.scrollLeft(this.document.scrollLeft()+r.scrollSpeed))),o!==!1&&e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),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],a=s.item[0],n=this._intersectsWithPointer(s),n&&s.instance===this.currentContainer&&a!==this.currentItem[0]&&this.placeholder[1===n?"next":"prev"]()[0]!==a&&!e.contains(this.placeholder[0],a)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],a):!0)){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,a=this.placeholder.offset(),n=this.options.axis,r={};n&&"x"!==n||(r.left=a.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(r.top=a.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(r,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].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(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,a=s+this.helperProportions.height,n=e.left,r=n+e.width,o=e.top,h=o+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>o&&h>s+l,c="y"===this.options.axis||t+u>n&&r>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>n&&r>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>o&&h>a-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,a=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return s?this.floating?n&&"right"===n||"down"===a?2:1:a&&("down"===a?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return this.floating&&a?"right"===a&&i||"left"===a&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){o.push(this)}var s,a,n,r,o=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(n=e(l[s],this.document[0]),a=n.length-1;a>=0;a--)r=e.data(n[a],this.widgetFullName),r&&r!==this&&!r.options.disabled&&h.push([e.isFunction(r.options.items)?r.options.items.call(r.element):e(r.options.items,r.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),r]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(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 e(o)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,a,n,r,o,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(a=e(c[i],this.document[0]),s=a.length-1;s>=0;s--)n=e.data(a[s],this.widgetFullName),n&&n!==this&&!n.options.disabled&&(d.push([e.isFunction(n.options.items)?n.options.items.call(n.element[0],t,{item:this.currentItem}):e(n.options.items,n.element),n]),this.containers.push(n));for(i=d.length-1;i>=0;i--)for(r=d[i][1],o=d[i][0],s=0,l=o.length;l>s;s++)h=e(o[s]),h.data(this.widgetName+"-item",r),u.push({item:h,instance:r,width:0,height:0,left:0,top:0})},refreshPositions:function(t){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,a,n;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]||(a=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=a.outerWidth(),s.height=a.outerHeight()),n=a.offset(),s.left=n.left,s.top=n.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--)n=this.containers[i].element.offset(),this.containers[i].containerCache.left=n.left,this.containers[i].containerCache.top=n.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(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),a=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(a)):"tr"===s?t._createTrPlaceholder(t.currentItem,a):"img"===s&&a.attr("src",t.currentItem.attr("src")),i||a.css("visibility","hidden"),a},update:function(e,a){(!i||s.forcePlaceholderSize)&&(a.height()||a.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),a.width()||a.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td> </td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,a,n,r,o,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(a=1e4,n=null,u=c.floating||this._isFloating(this.currentItem),r=u?"left":"top",o=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.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()[r],l=!1,t[d]-h>this.items[s][o]/2&&(l=!0),a>Math.abs(t[d]-h)&&(a=Math.abs(t[d]-h),n=this.items[s],this.direction=l?"up":"down"));if(!n&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;n?this._rearrange(t,n,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("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(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.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 t,i,s,a=this.options;"parent"===a.containment&&(a.containment=this.helper[0].parentNode),("document"===a.containment||"window"===a.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===a.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===a.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(a.containment)||(t=e(a.containment)[0],i=e(a.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,a="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,n=/(html|body)/i.test(a[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():n?0:a.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:a.scrollLeft())*s}},_generatePosition:function(t){var i,s,a=this.options,n=t.pageX,r=t.pageY,o="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(o[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&&(t.pageX-this.offset.click.left<this.containment[0]&&(n=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(r=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(n=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(r=this.containment[3]+this.offset.click.top)),a.grid&&(i=this.originalPageY+Math.round((r-this.originalPageY)/a.grid[1])*a.grid[1],r=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-a.grid[1]:i+a.grid[1]:i,s=this.originalPageX+Math.round((n-this.originalPageX)/a.grid[0])*a.grid[0],n=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-a.grid[0]:s+a.grid[0]:s)),{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:o.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:o.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var a=this.counter;this._delay(function(){a===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,a=[];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).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&a.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||a.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(a.push(function(e){this._trigger("remove",e,this._uiHash())}),a.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),a.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||a.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(a.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,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;a.length>s;s++)a[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},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 t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,a=this.headers.index(t.target),n=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:n=this.headers[(a+1)%s];break;case i.LEFT:case i.UP:n=this.headers[(a-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:n=this.headers[0];break;case i.END:n=this.headers[s-1]}n&&(e(t.target).attr("tabIndex",-1),e(n).attr("tabIndex",0),n.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels))) -},_refresh:function(){var t,i=this.options,s=i.heightStyle,a=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),a=s.uniqueId().attr("id");t.attr("aria-controls",a),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?(t=a.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_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(t){var i=this.options,s=this.active,a=e(t.currentTarget),n=a[0]===s[0],r=n&&i.collapsible,o=r?e():a.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:r?e():a,newPanel:o};t.preventDefault(),n&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=r?!1:this.headers.index(a),this.active=n?e():a,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),n||(a.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&a.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),a.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),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(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,a,n,r=this,o=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){r._toggleComplete(i)};return"number"==typeof d&&(n=d),"string"==typeof d&&(a=d),a=a||d.easing||u.easing,n=n||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:n,easing:a,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:n,easing:a,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(o+=i.now):"content"!==r.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-o),o=0)}}),void 0):t.animate(this.hideProps,n,a,c):e.animate(this.showProps,n,a,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).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(t){if(!this.previousFilter){var i=e(t.currentTarget);i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,a,n,r=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:r=!1,s=this.previousFilter||"",a=String.fromCharCode(t.keyCode),n=!1,clearTimeout(this.filterTimer),a===s?n=!0:a=s+a,i=this._filterMenuItems(a),i=n&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(a=String.fromCharCode(t.keyCode),i=this._filterMenuItems(a)),i.length?(this.focus(t,i),this.previousFilter=a,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}r&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,a=this.options.icons.submenu,n=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),n.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+a).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=n.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,a,n,r,o;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,a=t.offset().top-this.activeMenu.offset().top-i-s,n=this.activeMenu.scrollTop(),r=this.activeMenu.height(),o=t.outerHeight(),0>a?this.activeMenu.scrollTop(n+a):a+o>r&&this.activeMenu.scrollTop(n+a-r+o))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},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(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,a;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-a}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,a;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+a>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",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 t,i,s,a=this.element[0].nodeName.toLowerCase(),n="textarea"===a,r="input"===a;this.isMultiLine=n?!0:r?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[n||r?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(a){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var n=e.ui.keyCode;switch(a.keyCode){case n.PAGE_UP:t=!0,this._move("previousPage",a);break;case n.PAGE_DOWN:t=!0,this._move("nextPage",a);break;case n.UP:t=!0,this._keyEvent("previous",a);break;case n.DOWN:t=!0,this._keyEvent("next",a);break;case n.ENTER:this.menu.active&&(t=!0,a.preventDefault(),this.menu.select(a));break;case n.TAB:this.menu.active&&this.menu.select(a);break;case n.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(a),a.preventDefault());break;default:i=!0,this._searchTimeout(a)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var a=e.ui.keyCode;switch(s.keyCode){case a.PAGE_UP:this._move("previousPage",s);break;case a.PAGE_DOWN:this._move("nextPage",s);break;case a.UP:this._keyEvent("previous",s);break;case a.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,a;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(a=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:a})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(a.value),s=i.item.attr("aria-label")||a.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,a){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){a(e)},error:function(){a([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,a=e([]);return i&&(i=i.replace(/'/g,"\\'"),a=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),a};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,a=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(a)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,a=s.primary&&s.secondary,n=[];s.primary||s.secondary?(this.options.text&&n.push("ui-button-text-icon"+(a?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(n.push(a?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):n.push("ui-button-text-only"),t.addClass(n.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(a.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return o(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,a,n;s=t.nodeName.toLowerCase(),a="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),n=this._newInst(e(t),a),n.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,n):a&&this._inlineDatepicker(t,n)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,a,n,r=this._get(i,"appendText"),o=this._get(i,"isRTL");i.append&&i.append.remove(),r&&(i.append=e("<span class='"+this._appendClass+"'>"+r+"</span>"),t[o?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(a=this._get(i,"buttonText"),n=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:n,alt:a,title:a}):e("<button type='button'></button>").addClass(this._triggerClass).html(n?e("<img/>").attr({src:n,alt:a,title:a}):a)),t[o?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,a,n=new Date(2009,11,20),r=this._get(e,"dateFormat");r.match(/[DM]/)&&(t=function(e){for(i=0,s=0,a=0;e.length>a;a++)e[a].length>i&&(i=e[a].length,s=a);return s},n.setMonth(t(this._get(e,r.match(/MM/)?"monthNames":"monthNamesShort"))),n.setDate(t(this._get(e,r.match(/DD/)?"dayNames":"dayNamesShort"))+20-n.getDay())),e.input.attr("size",this._formatDate(e,n).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,a,n){var r,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),o(c.settings,a||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this -},_destroyDatepicker:function(t){var i,s=e(t),a=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(a.append.remove(),a.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===a&&(v=null))},_enableDatepicker:function(t){var i,s,a=e(t),n=e.data(t,"datepicker");a.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=a.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,a=e(t),n=e.data(t,"datepicker");a.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=a.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var a,n,r,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(a=i||{},"string"==typeof i&&(a={},a[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),n=this._getDateDatepicker(t,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),o(l.settings,a),null!==r&&void 0!==a.dateFormat&&void 0===a.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==a.dateFormat&&void 0===a.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in a&&(a.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,n),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,a,n=e.datepicker._getInst(t.target),r=!0,o=n.dpDiv.is(".ui-datepicker-rtl");if(n._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),r=!1;break;case 13:return a=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",n.dpDiv),a[0]&&e.datepicker._selectDay(t.target,n.selectedMonth,n.selectedYear,a[0]),i=e.datepicker._get(n,"onSelect"),i?(s=e.datepicker._formatDate(n),i.apply(n.input?n.input[0]:null,[s,n])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),r=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),r=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?1:-1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),r=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?-1:1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),r=t.ctrlKey||t.metaKey;break;default:r=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):r=!1;r&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,a=e.datepicker._getInst(t.target);return e.datepicker._get(a,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(a,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(a){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,a,n,r,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),a=e.datepicker._get(i,"beforeShow"),n=a?a.apply(t,[t,i]):{},n!==!1&&(o(i.settings,n),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),r=!1,e(t).parents().each(function(){return r|="fixed"===e(this).css("position"),!r}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,r),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),a=s[1],n=17,o=t.dpDiv.find("."+this._dayOverClass+" a");o.length>0&&r.apply(o.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),a>1&&t.dpDiv.addClass("ui-datepicker-multi-"+a).css("width",n*a+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var a=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),r=t.input?t.input.outerWidth():0,o=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?a-r:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+o?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+a>h&&h>a?Math.abs(i.left+a-h):0),i.top-=Math.min(i.top,i.top+n>l&&l>n?Math.abs(n+o):0),i},_findPos:function(t){for(var i,s=this._getInst(t),a=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[a?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,a,n,r=this._curInst;!r||t&&r!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(r,"showAnim"),s=this._get(r,"duration"),a=function(){e.datepicker._tidyDialog(r)},e.effects&&(e.effects.effect[i]||e.effects[i])?r.dpDiv.hide(i,e.datepicker._get(r,"showOptions"),s,a):r.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,a),i||a(),this._datepickerShowing=!1,n=this._get(r,"onClose"),n&&n.apply(r.input?r.input[0]:null,[r.input?r.input.val():"",r]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var a=e(t),n=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(n,i+("M"===s?this._get(n,"showCurrentAtPos"):0),s),this._updateDatepicker(n))},_gotoToday:function(t){var i,s=e(t),a=this._getInst(s[0]);this._get(a,"gotoCurrent")&&a.currentDay?(a.selectedDay=a.currentDay,a.drawMonth=a.selectedMonth=a.currentMonth,a.drawYear=a.selectedYear=a.currentYear):(i=new Date,a.selectedDay=i.getDate(),a.drawMonth=a.selectedMonth=i.getMonth(),a.drawYear=a.selectedYear=i.getFullYear()),this._notifyChange(a),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var a=e(t),n=this._getInst(a[0]);n["selected"+("M"===s?"Month":"Year")]=n["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(n),this._adjustDate(a)},_selectDay:function(t,i,s,a){var n,r=e(t);e(a).hasClass(this._unselectableClass)||this._isDisabledDatepicker(r[0])||(n=this._getInst(r[0]),n.selectedDay=n.currentDay=e("a",a).html(),n.selectedMonth=n.currentMonth=i,n.selectedYear=n.currentYear=s,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,a=e(t),n=this._getInst(a[0]);i=null!=i?i:this._formatDate(n),n.input&&n.input.val(i),this._updateAlternate(n),s=this._get(n,"onSelect"),s?s.apply(n.input?n.input[0]:null,[i,n]):n.input&&n.input.trigger("change"),n.inline?this._updateDatepicker(n):(this._hideDatepicker(),this._lastInput=n.input[0],"object"!=typeof n.input[0]&&n.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,a,n=this._get(t,"altField");n&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),a=this.formatDate(i,s,this._getFormatConfig(t)),e(n).each(function(){e(this).val(a)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var a,n,r,o,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>a+1&&t.charAt(a+1)===e;return i&&a++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,a="y"===e?s:1,n=RegExp("^\\d{"+a+","+s+"}"),r=i.substring(h).match(n);if(!r)throw"Missing number at position "+h;return h+=r[0].length,parseInt(r[0],10)},k=function(t,s,a){var n=-1,r=e.map(_(t)?a:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(r,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(n=t[0],h+=s.length,!1):void 0}),-1!==n)return n+1;throw"Unknown name at position "+h},w=function(){if(i.charAt(h)!==t.charAt(a))throw"Unexpected literal at position "+h;h++};for(a=0;t.length>a;a++)if(b)"'"!==t.charAt(a)||_("'")?w():b=!1;else switch(t.charAt(a)){case"d":v=x("d");break;case"D":k("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=k("M",p,f);break;case"y":m=x("y");break;case"@":o=new Date(x("@")),m=o.getFullYear(),g=o.getMonth()+1,v=o.getDate();break;case"!":o=new Date((x("!")-this._ticksTo1970)/1e4),m=o.getFullYear(),g=o.getMonth()+1,v=o.getDate();break;case"'":_("'")?w():b=!0;break;default:w()}if(i.length>h&&(r=i.substr(h),!/^\s+/.test(r)))throw"Extra/unparsed characters found in date: "+r;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(n=this._getDaysInMonth(m,g-1),n>=v)break;g++,v-=n}if(o=this._daylightSavingAdjust(new Date(m,g-1,v)),o.getFullYear()!==m||o.getMonth()+1!==g||o.getDate()!==v)throw"Invalid date";return o},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(e,t,i){if(!t)return"";var s,a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,n=(i?i.dayNames:null)||this._defaults.dayNames,r=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,o=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),a,n);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),r,o);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,a=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||a("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":a("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,a=this._getDefaultDate(e),n=a,r=this._getFormatConfig(e);try{n=this.parseDate(i,s,r)||a}catch(o){s=t?"":s}e.selectedDay=n.getDate(),e.drawMonth=e.selectedMonth=n.getMonth(),e.drawYear=e.selectedYear=n.getFullYear(),e.currentDay=s?n.getDate():0,e.currentMonth=s?n.getMonth():0,e.currentYear=s?n.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var a=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},n=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var a=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,n=a.getFullYear(),r=a.getMonth(),o=a.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":o+=parseInt(l[1],10);break;case"w":case"W":o+=7*parseInt(l[1],10);break;case"m":case"M":r+=parseInt(l[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r));break;case"y":case"Y":n+=parseInt(l[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r))}l=h.exec(i)}return new Date(n,r,o)},r=null==i||""===i?s:"string"==typeof i?n(i):"number"==typeof i?isNaN(i)?s:a(i):new Date(i.getTime());return r=r&&"Invalid Date"==""+r?s:r,r&&(r.setHours(0),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0)),this._daylightSavingAdjust(r)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,a=e.selectedMonth,n=e.selectedYear,r=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=r.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=r.getMonth(),e.drawYear=e.selectedYear=e.currentYear=r.getFullYear(),a===e.selectedMonth&&n===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,a,n,r,o,h,l,u,d,c,p,f,m,g,v,y,b,_,x,k,w,T,D,S,M,N,C,A,I,P,F,H,z,j,E,O,L,W=new Date,R=this._daylightSavingAdjust(new Date(W.getFullYear(),W.getMonth(),W.getDate())),Y=this._get(e,"isRTL"),J=this._get(e,"showButtonPanel"),B=this._get(e,"hideIfNoPrevNext"),K=this._get(e,"navigationAsDateFormat"),V=this._getNumberOfMonths(e),q=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),G=1!==V[0]||1!==V[1],Q=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-q,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-V[0]*V[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,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>":B?"":"<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>",a=this._get(e,"nextText"),a=K?this.formatDate(a,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):a,n=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+a+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+a+"</span></a>":B?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+a+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+a+"</span></a>",r=this._get(e,"currentText"),o=this._get(e,"gotoCurrent")&&e.currentDay?Q:R,r=K?this.formatDate(r,o,this._getFormatConfig(e)):r,h=e.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(e,"closeText")+"</button>",l=J?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,o)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+r+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",k=0;V[0]>k;k++){for(w="",this.maxRows=4,T=0;V[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",G){if(M+="<div class='ui-datepicker-group",V[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case V[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===k?Y?n:s:"")+(/all|right/.test(S)&&0===k?Y?s:n:"")+this._generateMonthYearHeader(e,Z,et,X,$,k>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",N=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)C=(x+u)%7,N+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[C]+"'>"+p[C]+"</span></th>";for(M+=N+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),I=(this._getFirstDayOfMonth(et,Z)-u+7)%7,P=Math.ceil((I+A)/7),F=G?this.maxRows>P?this.maxRows:P:P,this.maxRows=F,H=this._daylightSavingAdjust(new Date(et,Z,1-I)),z=0;F>z;z++){for(M+="<tr>",j=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(H)+"</td>":"",x=0;7>x;x++)E=g?g.apply(e.input?e.input[0]:null,[H]):[!0,""],O=H.getMonth()!==Z,L=O&&!y||!E[0]||X&&X>H||$&&H>$,j+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(O?" ui-datepicker-other-month":"")+(H.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===H.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(O&&!v?"":" "+E[1]+(H.getTime()===Q.getTime()?" "+this._currentClass:"")+(H.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(O&&!v||!E[2]?"":" title='"+E[2].replace(/'/g,"'")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+H.getMonth()+"' data-year='"+H.getFullYear()+"'")+">"+(O&&!v?" ":L?"<span class='ui-state-default'>"+H.getDate()+"</span>":"<a class='ui-state-default"+(H.getTime()===R.getTime()?" ui-state-highlight":"")+(H.getTime()===Q.getTime()?" ui-state-active":"")+(O?" ui-priority-secondary":"")+"' href='#'>"+H.getDate()+"</a>")+"</td>",H.setDate(H.getDate()+1),H=this._daylightSavingAdjust(H);M+=j+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(G?"</div>"+(V[0]>0&&T===V[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),w+=M}_+=w}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,a,n,r,o){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(n||!g)_+="<span class='ui-datepicker-month'>"+r[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=a&&a.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||a.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+o[u]+"</option>");_+="</select>"}if(y||(b+=_+(!n&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",n||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=a?Math.min(m,a.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!n&&g&&v?"":" ")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),a=e.drawMonth+("M"===i?t:0),n=Math.min(e.selectedDay,this._getDaysInMonth(s,a))+("D"===i?t:0),r=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,a,n)));e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),a=i&&i>t?i:t;return s&&a>s?s:a},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var a=this._getNumberOfMonths(e),n=this._daylightSavingAdjust(new Date(i,s+(0>t?t:a[0]*a[1]),1));return 0>t&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(e,n)},_isInRange:function(e,t){var i,s,a=this._getMinMaxDate(e,"min"),n=this._getMinMaxDate(e,"max"),r=null,o=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),r=parseInt(i[0],10),o=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(r+=s),i[1].match(/[+\-].*/)&&(o+=s)),(!a||t.getTime()>=a.getTime())&&(!n||t.getTime()<=n.getTime())&&(!r||t.getFullYear()>=r)&&(!o||o>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var a=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),a,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new a,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",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(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.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"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(a){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,a=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),n=Math.max.apply(null,a);return n>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",n+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this; -return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),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(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0;if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),a=i.filter(":last");t.target!==a[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){a.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var a,n;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),a=s.click,s.click=function(){a.apply(t.element[0],arguments)},n={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(n).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.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,a){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(a))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(a,n){var r=n.offset.left-i.document.scrollLeft(),o=n.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(o>=0?"+":"")+o,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",a,t(n))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,a=s.resizable,n=this.uiDialog.css("position"),r="string"==typeof a?a:"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:r,start:function(s,a){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(a))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(a,n){var r=i.uiDialog.offset(),o=r.left-i.document.scrollLeft(),h=r.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",a,t(n))}}).css("position",n)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,a={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(a[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",a)},_setOption:function(e,t){var i,s,a=this.uiDialog;"dialogClass"===e&&a.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=a.is(":data(ui-draggable)"),i&&!t&&a.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=a.is(":data(ui-resizable)"),s&&!t&&a.resizable("destroy"),s&&"string"==typeof t&&a.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),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 e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,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.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",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"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,a="";e.each(i,function(i,n){n.optgroup!==a&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(n.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:n.optgroup}).appendTo(t),a=n.optgroup),s._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,s,a=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),a+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](a).eq(-1):i[e+"All"](a).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var a=e(s),n=a.parent("optgroup");i.push({element:a,index:t,value:a.val(),label:a.text(),optgroup:n.attr("label")||"",disabled:n.prop("disabled")||a.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,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.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,a=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),n="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",r=[];for(i=s.values&&s.values.length||1,a.length>i&&(a.slice(i).remove(),a=a.slice(0,i)),t=a.length;i>t;t++)r.push(n);this.handles=a.add(e(r.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.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.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,a,n,r,o,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),a=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(a>i||a===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(a=i,n=e(this),r=t)}),o=this._start(t,r),o===!1?!1:(this._mouseSliding=!0,this._handleIndex=r,n.addClass("ui-state-active").focus(),h=n.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-n.width()/2,top:t.pageY-h.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,r,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,a,n;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),a=this._valueMax()-this._valueMin(),n=this._valueMin()+s*a,this._trimAlignValue(n)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,a,n;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(a=this.values(),a[t]=i,n=this._trigger("slide",e,{handle:this.handles[t],value:i,values:a}),s=this.values(t?0:1),n!==!1&&this.values(t,i))):i!==this.value()&&(n=this._trigger("slide",e,{handle:this.handles[t],value:i}),n!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,a,n;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,a=arguments[0],n=0;s.length>n;n+=1)s[n]=this._trimAlignValue(a[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,i){var s,a=0;switch("range"===t&&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)),e.isArray(this.options.values)&&(a=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),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=0;a>s;s+=1)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}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,a,n,r=this.options.range,o=this.options,h=this,l=this._animateOff?!1:o.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,o.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:o.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:o.animate}))),t=i}):(s=this.value(),a=this._valueMin(),n=this._valueMax(),i=n!==a?100*((s-a)/(n-a)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,o.animate),"min"===r&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},o.animate),"max"===r&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:o.animate}),"min"===r&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},o.animate),"max"===r&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:o.animate}))},_handleEvents:{keydown:function(t){var i,s,a,n,r=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,r),i===!1))return}switch(n=this.options.step,s=a=this.options.values&&this.options.values.length?this.values(r):this.value(),t.keyCode){case e.ui.keyCode.HOME:a=this._valueMin();break;case e.ui.keyCode.END:a=this._valueMax();break;case e.ui.keyCode.PAGE_UP:a=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:a=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;a=this._trimAlignValue(s+n);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;a=this._trimAlignValue(s-n)}this._slide(t,r,a)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{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 t={},i=this.element;return e.each(["min","max","step"],function(e,s){var a=i.attr(s);void 0!==a&&a.length&&(t[s]=a)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable() -},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_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 e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(a){}try{s=decodeURIComponent(s)}catch(a){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,a){return e(a).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),a=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:a=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,a),t.ctrlKey||t.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(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>a&&(t=0),0>t&&(t=a),t}for(var a=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(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.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,a=this.panels;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var a,n,r,o=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(a=s.hash,r=a.substring(1),n=t.element.find(t._sanitizeSelector(a))):(r=h.attr("aria-controls")||e({}).uniqueId()[0].id,a="#"+r,n=t.element.find(a),n.length||(n=t._createPanel(r),n.insertAfter(t.panels[i-1]||t.tablist)),n.attr("aria-live","polite")),n.length&&(t.panels=t.panels.add(n)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":r,"aria-labelledby":o}),n.attr("aria-labelledby",o)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(a.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.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(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,a=e(t.currentTarget),n=a.closest("li"),r=n[0]===s[0],o=r&&i.collapsible,h=o?e():this._getPanelForTab(n),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:o?e():n,newPanel:h};t.preventDefault(),n.hasClass("ui-state-disabled")||n.hasClass("ui-tabs-loading")||this.running||r&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=o?!1:this.tabs.index(n),this.active=r?e():n,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(n),t),this._toggle(t,u))},_toggle:function(t,i){function s(){n.running=!1,n._trigger("activate",t,i)}function a(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&n.options.show?n._show(r,n.options.show,s):(r.show(),s())}var n=this,r=i.newPanel,o=i.oldPanel;this.running=!0,o.length&&this.options.hide?this._hide(o,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),a()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),o.hide(),a()),o.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),r.length&&o.length?i.oldTab.attr("tabIndex",-1):r.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),r.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,a=this.tabs.eq(t),n=a.find(".ui-tabs-anchor"),r=this._getPanelForTab(a),o={tab:a,panel:r},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),a.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(n[0])||(this.xhr=e.ajax(this._ajaxSettings(n,i,o)),this.xhr&&"canceled"!==this.xhr.statusText&&(a.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.done(function(e,t,a){setTimeout(function(){r.html(e),s._trigger("load",i,o),h(a,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var a=this;return{url:t.attr("href"),beforeSend:function(t,n){return a._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:n},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),a=e.inArray(i,s);-1!==a&&s.splice(a,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var a=e.Event("blur");a.target=a.currentTarget=s.element[0],t.close(a,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.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),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,a=this,n=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){a._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=n),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function a(e){l.of=e,r.is(":hidden")||r.position(l)}var n,r,o,h,l=e.extend({},this.options.position);if(s){if(n=this._find(i))return n.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),n=this._tooltip(i),r=n.tooltip,this._addDescribedBy(i,r.attr("id")),r.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:a}),a(t)):r.position(e.extend({of:i},this.options.position)),r.hide(),this._show(r,this.options.show),this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){r.is(":visible")&&(a(l.of),clearInterval(o))},e.fx.interval)),this._trigger("open",t,{tooltip:r})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,a=e(t?t.currentTarget:this.element),n=this._find(a);return n?(i=n.tooltip,n.closing||(clearInterval(this.delayedShow),a.data("ui-tooltip-title")&&!a.attr("title")&&a.attr("title",a.data("ui-tooltip-title")),this._removeDescribedBy(a),n.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),a.removeData("ui-tooltip-open"),this._off(a,"mouseleave focusout keyup"),a[0]!==this.element[0]&&this._off(a,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:i}),n.hiding||(n.closing=!1)),void 0):(a.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var a=e.Event("blur"),n=s.element;a.target=a.currentTarget=n[0],t.close(a,!0),e("#"+i).remove(),n.data("ui-tooltip-title")&&(n.attr("title")||n.attr("title",n.data("ui-tooltip-title")),n.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}});var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),a=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,n){var r,o=n.re.exec(i),h=o&&n.parse(o),l=n.space||"rgba";return h?(r=s[l](h),s[u[l].cache]=r[u[l].cache],a=s._rgba=r._rgba,!1):t}),a.length?("0,0,0,0"===a.join()&&e.extend(a,n.transparent),s):n[i]}function a(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var n,r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",o=/^([\-+])=\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(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,a){return new e.Color.fn.parse(t,i,s,a)},u={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"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(a,r,o,h){if(a===t)return this._rgba=[null,null,null,null],this;(a.jquery||a.nodeType)&&(a=e(a).css(r),r=t);var d=this,c=e.type(a),p=this._rgba=[];return r!==t&&(a=[a,r,o,h],c="array"),"string"===c?this.parse(s(a)||n._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(a[t.idx],t)}),this):"object"===c?(a instanceof l?f(u,function(e,t){a[t.cache]&&(d[t.cache]=a[t.cache].slice())}):f(u,function(t,s){var n=s.cache;f(s.props,function(e,t){if(!d[n]&&s.to){if("alpha"===e||null==a[e])return;d[n]=s.to(d._rgba)}d[n][t.idx]=i(a[e],t,!0)}),d[n]&&0>e.inArray(null,d[n].slice(0,3))&&(d[n][3]=1,s.from&&(d._rgba=s.from(d[n])))}),this):t},is:function(e){var i=l(e),s=!0,a=this;return f(u,function(e,n){var r,o=i[n.cache];return o&&(r=a[n.cache]||n.to&&n.to(a._rgba)||[],f(n.props,function(e,i){return null!=o[i.idx]?s=o[i.idx]===r[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),a=s._space(),n=u[a],r=0===this.alpha()?l("transparent"):this,o=r[n.cache]||n.to(r._rgba),h=o.slice();return s=s[n.cache],f(n.props,function(e,a){var n=a.idx,r=o[n],l=s[n],u=d[a.type]||{};null!==l&&(null===r?h[n]=l:(u.mod&&(l-r>u.mod/2?r+=u.mod:r-l>u.mod/2&&(r-=u.mod)),h[n]=i((l-r)*t+r,a)))}),this[a](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),a=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*a[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,a=e[1]/255,n=e[2]/255,r=e[3],o=Math.max(s,a,n),h=Math.min(s,a,n),l=o-h,u=o+h,d=.5*u;return t=h===o?0:s===o?60*(a-n)/l+360:a===o?60*(n-s)/l+120:60*(s-a)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==r?1:r]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],n=e[3],r=.5>=s?s*(1+i):s+i-s*i,o=2*s-r;return[Math.round(255*a(o,r,t+1/3)),Math.round(255*a(o,r,t)),Math.round(255*a(o,r,t-1/3)),n]},f(u,function(s,a){var n=a.props,r=a.cache,h=a.to,u=a.from;l.fn[s]=function(s){if(h&&!this[r]&&(this[r]=h(this._rgba)),s===t)return this[r].slice();var a,o=e.type(s),d="array"===o||"object"===o?s:arguments,c=this[r].slice();return f(n,function(e,t){var s=d["object"===o?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(a=l(u(c)),a[r]=c,a):l(c)},f(n,function(t,i){l.fn[t]||(l.fn[t]=function(a){var n,r=e.type(a),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===r?u:("function"===r&&(a=a.call(this,u),r=e.type(a)),null==a&&i.empty?this:("string"===r&&(n=o.exec(a),n&&(a=u+parseFloat(n[2])*("+"===n[1]?1:-1))),l[i.idx]=a,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,a){var n,r,o="";if("transparent"!==a&&("string"!==e.type(a)||(n=s(a)))){if(a=l(n||a),!c.rgba&&1!==a._rgba[3]){for(r="backgroundColor"===i?t.parentNode:t;(""===o||"transparent"===o)&&r&&r.style;)try{o=e.css(r,"backgroundColor"),r=r.parentNode}catch(h){}a=a.blend(o&&"transparent"!==o?o:"_default")}a=a.toRgbaString()}try{t.style[i]=a}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(r),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},n=e.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"}}(b),function(){function t(t){var i,s,a=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(a&&a.length&&a[0]&&a[a[0]])for(s=a.length;s--;)i=a[s],"string"==typeof a[i]&&(n[e.camelCase(i)]=a[i]);else for(i in a)"string"==typeof a[i]&&(n[i]=a[i]);return n}function i(t,i){var s,n,r={};for(s in i)n=i[s],t[s]!==n&&(a[s]||(e.fx.step[s]||!isNaN(parseFloat(n)))&&(r[s]=n));return r}var s=["add","remove","toggle"],a={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(a,n,r,o){var h=e.speed(n,r,o);return this.queue(function(){var n,r=e(this),o=r.attr("class")||"",l=h.children?r.find("*").addBack():r;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),n=function(){e.each(s,function(e,t){a[t]&&r[t+"Class"](a[t])})},n(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),r.attr("class",o),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){n(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(r[0])})})},e.fn.extend({addClass:function(t){return function(i,s,a,n){return s?e.effects.animateClass.call(this,{add:i},s,a,n):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,a,n){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,a,n):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,a,n,r){return"boolean"==typeof s||void 0===s?a?e.effects.animateClass.call(this,s?{add:i}:{remove:i},a,n,r):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,a,n)}}(e.fn.toggleClass),switchClass:function(t,i,s,a,n){return e.effects.animateClass.call(this,{add:i,remove:t},s,a,n)}})}(),function(){function t(t,i,s,a){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(a=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(a=s,s=i,i={}),e.isFunction(s)&&(a=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=a||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),a={width:t.width(),height:t.height()},n=document.activeElement;try{n.id}catch(r){n=document.body}return t.wrap(s),(t[0]===n||e.contains(t[0],n))&&e(n).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(a),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement; -return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,a){return a=a||{},e.each(i,function(e,i){var n=t.cssUnit(i);n[0]>0&&(a[i]=n[0]*s+n[1])}),a}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(n)&&n.call(a[0]),e.isFunction(t)&&t()}var a=e(this),n=s.complete,o=s.mode;(a.is(":hidden")?"hide"===o:"show"===o)?(a[o](),i()):r.call(a[0],s,i)}var s=t.apply(this,arguments),a=s.mode,n=s.queue,r=e.effects.effect[s.effect];return e.fx.off||!r?a?this[a](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):n===!1?this.each(i):this.queue(n||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="show",this.effect.call(this,a)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="hide",this.effect.call(this,a)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var a=t.apply(this,arguments);return a.mode="toggle",this.effect.call(this,a)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,a,n,r=e(this),o=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(r,t.mode||"hide"),d=t.direction||"up",c=o.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;r.parent().is(".ui-effects-wrapper")?e.effects.save(r.parent(),l):e.effects.save(r,l),r.show(),s=e.effects.createWrapper(r).css({overflow:"hidden"}),a=s[p](),n=parseFloat(s.css(f))||0,g[p]=v?a:0,m||(r.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?n:a+n),v&&(s.css(p,0),m||s.css(f,n+a)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&r.hide(),e.effects.restore(r,l),e.effects.removeWrapper(r),i()}})},e.effects.effect.bounce=function(t,i){var s,a,n,r=e(this),o=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(r,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=r.queue(),_=b.length;for((u||l)&&o.push("opacity"),e.effects.save(r,o),r.show(),e.effects.createWrapper(r),c||(c=r["top"===v?"outerHeight":"outerWidth"]()/3),u&&(n={opacity:1},n[v]=0,r.css("opacity",0).css(v,y?2*-c:2*c).animate(n,m,g)),l&&(c/=Math.pow(2,p-1)),n={},n[v]=0,s=0;p>s;s++)a={},a[v]=(y?"-=":"+=")+c,r.animate(a,m,g).animate(n,m,g),c=l?2*c:c/2;l&&(a={opacity:0},a[v]=(y?"-=":"+=")+c,r.animate(a,m,g)),r.queue(function(){l&&r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),r.dequeue()},e.effects.effect.clip=function(t,i){var s,a,n,r=e(this),o=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(r,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(r,o),r.show(),s=e.effects.createWrapper(r).css({overflow:"hidden"}),a="IMG"===r[0].tagName?s:r,n=a[c](),l&&(a.css(c,0),a.css(p,n/2)),f[c]=l?n:0,f[p]=l?0:n/2,a.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}})},e.effects.effect.drop=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","opacity","height","width"],r=e.effects.setMode(a,t.mode||"hide"),o="show"===r,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:o?1:0};e.effects.save(a,n),a.show(),e.effects.createWrapper(a),s=t.distance||a["top"===l?"outerHeight":"outerWidth"](!0)/2,o&&a.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(o?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,a.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&a()}function a(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var n,r,o,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(n=0;d>n;n++)for(h=g.top+n*y,u=n-(d-1)/2,r=0;c>r;r++)o=g.left+r*v,l=r-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-r*v,top:-n*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:o+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:o+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:a},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,a,n=e(this),r=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"hide"),h="show"===o,l="hide"===o,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(n,r),n.show(),s=e.effects.createWrapper(n).css({overflow:"hidden"}),a=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*a[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?a[0]:u,v[f[1]]=h?a[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&n.hide(),e.effects.restore(n,r),e.effects.removeWrapper(n),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),a=["backgroundImage","backgroundColor","opacity"],n=e.effects.setMode(s,t.mode||"show"),r={backgroundColor:s.css("backgroundColor")};"hide"===n&&(r.opacity=0),e.effects.save(s,a),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(r,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&s.hide(),e.effects.restore(s,a),i()}})},e.effects.effect.size=function(t,i){var s,a,n,r=e(this),o=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(r,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=r.css("position"),y=f?o:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&r.show(),s={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},"toggle"===t.mode&&"show"===p?(r.from=t.to||b,r.to=t.from||s):(r.from=t.from||("show"===p?b:s),r.to=t.to||("hide"===p?b:s)),n={from:{y:r.from.height/s.height,x:r.from.width/s.width},to:{y:r.to.height/s.height,x:r.to.width/s.width}},("box"===m||"both"===m)&&(n.from.y!==n.to.y&&(y=y.concat(d),r.from=e.effects.setTransition(r,d,n.from.y,r.from),r.to=e.effects.setTransition(r,d,n.to.y,r.to)),n.from.x!==n.to.x&&(y=y.concat(c),r.from=e.effects.setTransition(r,c,n.from.x,r.from),r.to=e.effects.setTransition(r,c,n.to.x,r.to))),("content"===m||"both"===m)&&n.from.y!==n.to.y&&(y=y.concat(u).concat(l),r.from=e.effects.setTransition(r,u,n.from.y,r.from),r.to=e.effects.setTransition(r,u,n.to.y,r.to)),e.effects.save(r,y),r.show(),e.effects.createWrapper(r),r.css("overflow","hidden").css(r.from),g&&(a=e.effects.getBaseline(g,s),r.from.top=(s.outerHeight-r.outerHeight())*a.y,r.from.left=(s.outerWidth-r.outerWidth())*a.x,r.to.top=(s.outerHeight-r.to.outerHeight)*a.y,r.to.left=(s.outerWidth-r.to.outerWidth)*a.x),r.css(r.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=o.concat(d).concat(c),r.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},i.to={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&&(i.from=e.effects.setTransition(i,d,n.from.y,i.from),i.to=e.effects.setTransition(i,d,n.to.y,i.to)),n.from.x!==n.to.x&&(i.from=e.effects.setTransition(i,c,n.from.x,i.from),i.to=e.effects.setTransition(i,c,n.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),r.animate(r.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===r.to.opacity&&r.css("opacity",r.from.opacity),"hide"===p&&r.hide(),e.effects.restore(r,y),f||("static"===v?r.css({position:"relative",top:r.to.top,left:r.to.left}):e.each(["top","left"],function(e,t){r.css(t,function(t,i){var s=parseInt(i,10),a=e?r.to.left:r.to.top;return"auto"===i?a+"px":s+a+"px"})})),e.effects.removeWrapper(r),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),a=e.extend(!0,{},t),n=e.effects.setMode(s,t.mode||"effect"),r=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===n?0:100),o=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==o?r/100:1,x:"vertical"!==o?r/100:1};a.effect="size",a.queue=!1,a.complete=i,"effect"!==n&&(a.origin=h||["middle","center"],a.restore=!0),a.from=t.from||("show"===n?{height:0,width:0,outerHeight:0,outerWidth:0}:l),a.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},a.fade&&("show"===n&&(a.from.opacity=0,a.to.opacity=1),"hide"===n&&(a.from.opacity=1,a.to.opacity=0)),s.effect(a)},e.effects.effect.puff=function(t,i){var s=e(this),a=e.effects.setMode(s,t.mode||"hide"),n="hide"===a,r=parseInt(t.percent,10)||150,o=r/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:a,complete:i,percent:n?r:100,from:n?h:{height:h.height*o,width:h.width*o,outerHeight:h.outerHeight*o,outerWidth:h.outerWidth*o}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,a=e(this),n=e.effects.setMode(a,t.mode||"show"),r="show"===n,o="hide"===n,h=r||"hide"===n,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=a.queue(),p=c.length;for((r||!a.is(":visible"))&&(a.css("opacity",0).show(),d=1),s=1;l>s;s++)a.animate({opacity:d},u,t.easing),d=1-d;a.animate({opacity:d},u,t.easing),a.queue(function(){o&&a.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),a.dequeue()},e.effects.effect.shake=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"effect"),o=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===o||"down"===o?"top":"left",p="up"===o||"left"===o,f={},m={},g={},v=a.queue(),y=v.length;for(e.effects.save(a,n),a.show(),e.effects.createWrapper(a),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,a.animate(f,d,t.easing),s=1;l>s;s++)a.animate(m,d,t.easing).animate(g,d,t.easing);a.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),a.dequeue()},e.effects.effect.slide=function(t,i){var s,a=e(this),n=["position","top","bottom","left","right","width","height"],r=e.effects.setMode(a,t.mode||"show"),o="show"===r,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(a,n),a.show(),s=t.distance||a["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(a).css({overflow:"hidden"}),o&&a.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(o?u?"+=":"-=":u?"-=":"+=")+s,a.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&a.hide(),e.effects.restore(a,n),e.effects.removeWrapper(a),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),a=e(t.to),n="fixed"===a.css("position"),r=e("body"),o=n?r.scrollTop():0,h=n?r.scrollLeft():0,l=a.offset(),u={top:l.top-o,left:l.left-h,height:a.innerHeight(),width:a.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-o,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:n?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}}); \ No newline at end of file diff --git a/dashboard/js/jquery.flexslider-min.js b/dashboard/js/jquery.flexslider-min.js deleted file mode 100644 index 4b2ba634..00000000 --- a/dashboard/js/jquery.flexslider-min.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - * jQuery FlexSlider v2.2.2 - * Copyright 2012 WooThemes - * Contributing Author: Tyler Smith - */(function(e){e.flexslider=function(t,n){var r=e(t);r.vars=e.extend({},e.flexslider.defaults,n);var i=r.vars.namespace,s=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,o=("ontouchstart"in window||s||window.DocumentTouch&&document instanceof DocumentTouch)&&r.vars.touch,u="click touchend MSPointerUp",a="",f,l=r.vars.direction==="vertical",c=r.vars.reverse,h=r.vars.itemWidth>0,p=r.vars.animation==="fade",d=r.vars.asNavFor!=="",v={},m=!0;e.data(t,"flexslider",r);v={init:function(){r.animating=!1;r.currentSlide=parseInt(r.vars.startAt?r.vars.startAt:0,10);isNaN(r.currentSlide)&&(r.currentSlide=0);r.animatingTo=r.currentSlide;r.atEnd=r.currentSlide===0||r.currentSlide===r.last;r.containerSelector=r.vars.selector.substr(0,r.vars.selector.search(" "));r.slides=e(r.vars.selector,r);r.container=e(r.containerSelector,r);r.count=r.slides.length;r.syncExists=e(r.vars.sync).length>0;r.vars.animation==="slide"&&(r.vars.animation="swing");r.prop=l?"top":"marginLeft";r.args={};r.manualPause=!1;r.stopped=!1;r.started=!1;r.startTimeout=null;r.transitions=!r.vars.video&&!p&&r.vars.useCSS&&function(){var e=document.createElement("div"),t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var n in t)if(e.style[t[n]]!==undefined){r.pfx=t[n].replace("Perspective","").toLowerCase();r.prop="-"+r.pfx+"-transform";return!0}return!1}();r.vars.controlsContainer!==""&&(r.controlsContainer=e(r.vars.controlsContainer).length>0&&e(r.vars.controlsContainer));r.vars.manualControls!==""&&(r.manualControls=e(r.vars.manualControls).length>0&&e(r.vars.manualControls));if(r.vars.randomize){r.slides.sort(function(){return Math.round(Math.random())-.5});r.container.empty().append(r.slides)}r.doMath();r.setup("init");r.vars.controlNav&&v.controlNav.setup();r.vars.directionNav&&v.directionNav.setup();r.vars.keyboard&&(e(r.containerSelector).length===1||r.vars.multipleKeyboard)&&e(document).bind("keyup",function(e){var t=e.keyCode;if(!r.animating&&(t===39||t===37)){var n=t===39?r.getTarget("next"):t===37?r.getTarget("prev"):!1;r.flexAnimate(n,r.vars.pauseOnAction)}});r.vars.mousewheel&&r.bind("mousewheel",function(e,t,n,i){e.preventDefault();var s=t<0?r.getTarget("next"):r.getTarget("prev");r.flexAnimate(s,r.vars.pauseOnAction)});r.vars.pausePlay&&v.pausePlay.setup();r.vars.slideshow&&r.vars.pauseInvisible&&v.pauseInvisible.init();if(r.vars.slideshow){r.vars.pauseOnHover&&r.hover(function(){!r.manualPlay&&!r.manualPause&&r.pause()},function(){!r.manualPause&&!r.manualPlay&&!r.stopped&&r.play()});if(!r.vars.pauseInvisible||!v.pauseInvisible.isHidden())r.vars.initDelay>0?r.startTimeout=setTimeout(r.play,r.vars.initDelay):r.play()}d&&v.asNav.setup();o&&r.vars.touch&&v.touch();(!p||p&&r.vars.smoothHeight)&&e(window).bind("resize orientationchange focus",v.resize);r.find("img").attr("draggable","false");setTimeout(function(){r.vars.start(r)},200)},asNav:{setup:function(){r.asNav=!0;r.animatingTo=Math.floor(r.currentSlide/r.move);r.currentItem=r.currentSlide;r.slides.removeClass(i+"active-slide").eq(r.currentItem).addClass(i+"active-slide");if(!s)r.slides.on(u,function(t){t.preventDefault();var n=e(this),s=n.index(),o=n.offset().left-e(r).scrollLeft();if(o<=0&&n.hasClass(i+"active-slide"))r.flexAnimate(r.getTarget("prev"),!0);else if(!e(r.vars.asNavFor).data("flexslider").animating&&!n.hasClass(i+"active-slide")){r.direction=r.currentItem<s?"next":"prev";r.flexAnimate(s,r.vars.pauseOnAction,!1,!0,!0)}});else{t._slider=r;r.slides.each(function(){var t=this;t._gesture=new MSGesture;t._gesture.target=t;t.addEventListener("MSPointerDown",function(e){e.preventDefault();e.currentTarget._gesture&&e.currentTarget._gesture.addPointer(e.pointerId)},!1);t.addEventListener("MSGestureTap",function(t){t.preventDefault();var n=e(this),i=n.index();if(!e(r.vars.asNavFor).data("flexslider").animating&&!n.hasClass("active")){r.direction=r.currentItem<i?"next":"prev";r.flexAnimate(i,r.vars.pauseOnAction,!1,!0,!0)}})})}}},controlNav:{setup:function(){r.manualControls?v.controlNav.setupManual():v.controlNav.setupPaging()},setupPaging:function(){var t=r.vars.controlNav==="thumbnails"?"control-thumbs":"control-paging",n=1,s,o;r.controlNavScaffold=e('<ol class="'+i+"control-nav "+i+t+'"></ol>');if(r.pagingCount>1)for(var f=0;f<r.pagingCount;f++){o=r.slides.eq(f);s=r.vars.controlNav==="thumbnails"?'<img src="'+o.attr("data-thumb")+'"/>':"<a>"+n+"</a>";if("thumbnails"===r.vars.controlNav&&!0===r.vars.thumbCaptions){var l=o.attr("data-thumbcaption");""!=l&&undefined!=l&&(s+='<span class="'+i+'caption">'+l+"</span>")}r.controlNavScaffold.append("<li>"+s+"</li>");n++}r.controlsContainer?e(r.controlsContainer).append(r.controlNavScaffold):r.append(r.controlNavScaffold);v.controlNav.set();v.controlNav.active();r.controlNavScaffold.delegate("a, img",u,function(t){t.preventDefault();if(a===""||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+"active")){r.direction=s>r.currentSlide?"next":"prev";r.flexAnimate(s,r.vars.pauseOnAction)}}a===""&&(a=t.type);v.setToClearWatchedEvent()})},setupManual:function(){r.controlNav=r.manualControls;v.controlNav.active();r.controlNav.bind(u,function(t){t.preventDefault();if(a===""||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+"active")){s>r.currentSlide?r.direction="next":r.direction="prev";r.flexAnimate(s,r.vars.pauseOnAction)}}a===""&&(a=t.type);v.setToClearWatchedEvent()})},set:function(){var t=r.vars.controlNav==="thumbnails"?"img":"a";r.controlNav=e("."+i+"control-nav li "+t,r.controlsContainer?r.controlsContainer:r)},active:function(){r.controlNav.removeClass(i+"active").eq(r.animatingTo).addClass(i+"active")},update:function(t,n){r.pagingCount>1&&t==="add"?r.controlNavScaffold.append(e("<li><a>"+r.count+"</a></li>")):r.pagingCount===1?r.controlNavScaffold.find("li").remove():r.controlNav.eq(n).closest("li").remove();v.controlNav.set();r.pagingCount>1&&r.pagingCount!==r.controlNav.length?r.update(n,t):v.controlNav.active()}},directionNav:{setup:function(){var t=e('<ul class="'+i+'direction-nav"><li><a class="'+i+'prev" href="#">'+r.vars.prevText+'</a></li><li><a class="'+i+'next" href="#">'+r.vars.nextText+"</a></li></ul>");if(r.controlsContainer){e(r.controlsContainer).append(t);r.directionNav=e("."+i+"direction-nav li a",r.controlsContainer)}else{r.append(t);r.directionNav=e("."+i+"direction-nav li a",r)}v.directionNav.update();r.directionNav.bind(u,function(t){t.preventDefault();var n;if(a===""||a===t.type){n=e(this).hasClass(i+"next")?r.getTarget("next"):r.getTarget("prev");r.flexAnimate(n,r.vars.pauseOnAction)}a===""&&(a=t.type);v.setToClearWatchedEvent()})},update:function(){var e=i+"disabled";r.pagingCount===1?r.directionNav.addClass(e).attr("tabindex","-1"):r.vars.animationLoop?r.directionNav.removeClass(e).removeAttr("tabindex"):r.animatingTo===0?r.directionNav.removeClass(e).filter("."+i+"prev").addClass(e).attr("tabindex","-1"):r.animatingTo===r.last?r.directionNav.removeClass(e).filter("."+i+"next").addClass(e).attr("tabindex","-1"):r.directionNav.removeClass(e).removeAttr("tabindex")}},pausePlay:{setup:function(){var t=e('<div class="'+i+'pauseplay"><a></a></div>');if(r.controlsContainer){r.controlsContainer.append(t);r.pausePlay=e("."+i+"pauseplay a",r.controlsContainer)}else{r.append(t);r.pausePlay=e("."+i+"pauseplay a",r)}v.pausePlay.update(r.vars.slideshow?i+"pause":i+"play");r.pausePlay.bind(u,function(t){t.preventDefault();if(a===""||a===t.type)if(e(this).hasClass(i+"pause")){r.manualPause=!0;r.manualPlay=!1;r.pause()}else{r.manualPause=!1;r.manualPlay=!0;r.play()}a===""&&(a=t.type);v.setToClearWatchedEvent()})},update:function(e){e==="play"?r.pausePlay.removeClass(i+"pause").addClass(i+"play").html(r.vars.playText):r.pausePlay.removeClass(i+"play").addClass(i+"pause").html(r.vars.pauseText)}},touch:function(){var e,n,i,o,u,a,f=!1,d=0,v=0,m=0;if(!s){t.addEventListener("touchstart",g,!1);function g(s){if(r.animating)s.preventDefault();else if(window.navigator.msPointerEnabled||s.touches.length===1){r.pause();o=l?r.h:r.w;a=Number(new Date);d=s.touches[0].pageX;v=s.touches[0].pageY;i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o;e=l?v:d;n=l?d:v;t.addEventListener("touchmove",y,!1);t.addEventListener("touchend",b,!1)}}function y(t){d=t.touches[0].pageX;v=t.touches[0].pageY;u=l?e-v:e-d;f=l?Math.abs(u)<Math.abs(d-n):Math.abs(u)<Math.abs(v-n);var s=500;if(!f||Number(new Date)-a>s){t.preventDefault();if(!p&&r.transitions){r.vars.animationLoop||(u/=r.currentSlide===0&&u<0||r.currentSlide===r.last&&u>0?Math.abs(u)/o+2:1);r.setProps(i+u,"setTouch")}}}function b(s){t.removeEventListener("touchmove",y,!1);if(r.animatingTo===r.currentSlide&&!f&&u!==null){var l=c?-u:u,h=l>0?r.getTarget("next"):r.getTarget("prev");r.canAdvance(h)&&(Number(new Date)-a<550&&Math.abs(l)>50||Math.abs(l)>o/2)?r.flexAnimate(h,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}t.removeEventListener("touchend",b,!1);e=null;n=null;u=null;i=null}}else{t.style.msTouchAction="none";t._gesture=new MSGesture;t._gesture.target=t;t.addEventListener("MSPointerDown",w,!1);t._slider=r;t.addEventListener("MSGestureChange",E,!1);t.addEventListener("MSGestureEnd",S,!1);function w(e){e.stopPropagation();if(r.animating)e.preventDefault();else{r.pause();t._gesture.addPointer(e.pointerId);m=0;o=l?r.h:r.w;a=Number(new Date);i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o}}function E(e){e.stopPropagation();var n=e.target._slider;if(!n)return;var r=-e.translationX,s=-e.translationY;m+=l?s:r;u=m;f=l?Math.abs(m)<Math.abs(-r):Math.abs(m)<Math.abs(-s);if(e.detail===e.MSGESTURE_FLAG_INERTIA){setImmediate(function(){t._gesture.stop()});return}if(!f||Number(new Date)-a>500){e.preventDefault();if(!p&&n.transitions){n.vars.animationLoop||(u=m/(n.currentSlide===0&&m<0||n.currentSlide===n.last&&m>0?Math.abs(m)/o+2:1));n.setProps(i+u,"setTouch")}}}function S(t){t.stopPropagation();var r=t.target._slider;if(!r)return;if(r.animatingTo===r.currentSlide&&!f&&u!==null){var s=c?-u:u,l=s>0?r.getTarget("next"):r.getTarget("prev");r.canAdvance(l)&&(Number(new Date)-a<550&&Math.abs(s)>50||Math.abs(s)>o/2)?r.flexAnimate(l,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}e=null;n=null;u=null;i=null;m=0}}},resize:function(){if(!r.animating&&r.is(":visible")){h||r.doMath();if(p)v.smoothHeight();else if(h){r.slides.width(r.computedW);r.update(r.pagingCount);r.setProps()}else if(l){r.viewport.height(r.h);r.setProps(r.h,"setTotal")}else{r.vars.smoothHeight&&v.smoothHeight();r.newSlides.width(r.computedW);r.setProps(r.computedW,"setTotal")}}},smoothHeight:function(e){if(!l||p){var t=p?r:r.viewport;e?t.animate({height:r.slides.eq(r.animatingTo).height()},e):t.height(r.slides.eq(r.animatingTo).height())}},sync:function(t){var n=e(r.vars.sync).data("flexslider"),i=r.animatingTo;switch(t){case"animate":n.flexAnimate(i,r.vars.pauseOnAction,!1,!0);break;case"play":!n.playing&&!n.asNav&&n.play();break;case"pause":n.pause()}},uniqueID:function(t){t.find("[id]").each(function(){var t=e(this);t.attr("id",t.attr("id")+"_clone")});return t},pauseInvisible:{visProp:null,init:function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)e[t]+"Hidden"in document&&(v.pauseInvisible.visProp=e[t]+"Hidden");if(v.pauseInvisible.visProp){var n=v.pauseInvisible.visProp.replace(/[H|h]idden/,"")+"visibilitychange";document.addEventListener(n,function(){v.pauseInvisible.isHidden()?r.startTimeout?clearTimeout(r.startTimeout):r.pause():r.started?r.play():r.vars.initDelay>0?setTimeout(r.play,r.vars.initDelay):r.play()})}},isHidden:function(){return document[v.pauseInvisible.visProp]||!1}},setToClearWatchedEvent:function(){clearTimeout(f);f=setTimeout(function(){a=""},3e3)}};r.flexAnimate=function(t,n,s,u,a){!r.vars.animationLoop&&t!==r.currentSlide&&(r.direction=t>r.currentSlide?"next":"prev");d&&r.pagingCount===1&&(r.direction=r.currentItem<t?"next":"prev");if(!r.animating&&(r.canAdvance(t,a)||s)&&r.is(":visible")){if(d&&u){var f=e(r.vars.asNavFor).data("flexslider");r.atEnd=t===0||t===r.count-1;f.flexAnimate(t,!0,!1,!0,a);r.direction=r.currentItem<t?"next":"prev";f.direction=r.direction;if(Math.ceil((t+1)/r.visible)-1===r.currentSlide||t===0){r.currentItem=t;r.slides.removeClass(i+"active-slide").eq(t).addClass(i+"active-slide");return!1}r.currentItem=t;r.slides.removeClass(i+"active-slide").eq(t).addClass(i+"active-slide");t=Math.floor(t/r.visible)}r.animating=!0;r.animatingTo=t;n&&r.pause();r.vars.before(r);r.syncExists&&!a&&v.sync("animate");r.vars.controlNav&&v.controlNav.active();h||r.slides.removeClass(i+"active-slide").eq(t).addClass(i+"active-slide");r.atEnd=t===0||t===r.last;r.vars.directionNav&&v.directionNav.update();if(t===r.last){r.vars.end(r);r.vars.animationLoop||r.pause()}if(!p){var m=l?r.slides.filter(":first").height():r.computedW,g,y,b;if(h){g=r.vars.itemMargin;b=(r.itemW+g)*r.move*r.animatingTo;y=b>r.limit&&r.visible!==1?r.limit:b}else r.currentSlide===0&&t===r.count-1&&r.vars.animationLoop&&r.direction!=="next"?y=c?(r.count+r.cloneOffset)*m:0:r.currentSlide===r.last&&t===0&&r.vars.animationLoop&&r.direction!=="prev"?y=c?0:(r.count+1)*m:y=c?(r.count-1-t+r.cloneOffset)*m:(t+r.cloneOffset)*m;r.setProps(y,"",r.vars.animationSpeed);if(r.transitions){if(!r.vars.animationLoop||!r.atEnd){r.animating=!1;r.currentSlide=r.animatingTo}r.container.unbind("webkitTransitionEnd transitionend");r.container.bind("webkitTransitionEnd transitionend",function(){r.wrapup(m)})}else r.container.animate(r.args,r.vars.animationSpeed,r.vars.easing,function(){r.wrapup(m)})}else if(!o){r.slides.eq(r.currentSlide).css({zIndex:1}).animate({opacity:0},r.vars.animationSpeed,r.vars.easing);r.slides.eq(t).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing,r.wrapup)}else{r.slides.eq(r.currentSlide).css({opacity:0,zIndex:1});r.slides.eq(t).css({opacity:1,zIndex:2});r.wrapup(m)}r.vars.smoothHeight&&v.smoothHeight(r.vars.animationSpeed)}};r.wrapup=function(e){!p&&!h&&(r.currentSlide===0&&r.animatingTo===r.last&&r.vars.animationLoop?r.setProps(e,"jumpEnd"):r.currentSlide===r.last&&r.animatingTo===0&&r.vars.animationLoop&&r.setProps(e,"jumpStart"));r.animating=!1;r.currentSlide=r.animatingTo;r.vars.after(r)};r.animateSlides=function(){!r.animating&&m&&r.flexAnimate(r.getTarget("next"))};r.pause=function(){clearInterval(r.animatedSlides);r.animatedSlides=null;r.playing=!1;r.vars.pausePlay&&v.pausePlay.update("play");r.syncExists&&v.sync("pause")};r.play=function(){r.playing&&clearInterval(r.animatedSlides);r.animatedSlides=r.animatedSlides||setInterval(r.animateSlides,r.vars.slideshowSpeed);r.started=r.playing=!0;r.vars.pausePlay&&v.pausePlay.update("pause");r.syncExists&&v.sync("play")};r.stop=function(){r.pause();r.stopped=!0};r.canAdvance=function(e,t){var n=d?r.pagingCount-1:r.last;return t?!0:d&&r.currentItem===r.count-1&&e===0&&r.direction==="prev"?!0:d&&r.currentItem===0&&e===r.pagingCount-1&&r.direction!=="next"?!1:e===r.currentSlide&&!d?!1:r.vars.animationLoop?!0:r.atEnd&&r.currentSlide===0&&e===n&&r.direction!=="next"?!1:r.atEnd&&r.currentSlide===n&&e===0&&r.direction==="next"?!1:!0};r.getTarget=function(e){r.direction=e;return e==="next"?r.currentSlide===r.last?0:r.currentSlide+1:r.currentSlide===0?r.last:r.currentSlide-1};r.setProps=function(e,t,n){var i=function(){var n=e?e:(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo,i=function(){if(h)return t==="setTouch"?e:c&&r.animatingTo===r.last?0:c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:r.animatingTo===r.last?r.limit:n;switch(t){case"setTotal":return c?(r.count-1-r.currentSlide+r.cloneOffset)*e:(r.currentSlide+r.cloneOffset)*e;case"setTouch":return c?e:e;case"jumpEnd":return c?e:r.count*e;case"jumpStart":return c?r.count*e:e;default:return e}}();return i*-1+"px"}();if(r.transitions){i=l?"translate3d(0,"+i+",0)":"translate3d("+i+",0,0)";n=n!==undefined?n/1e3+"s":"0s";r.container.css("-"+r.pfx+"-transition-duration",n);r.container.css("transition-duration",n)}r.args[r.prop]=i;(r.transitions||n===undefined)&&r.container.css(r.args);r.container.css("transform",i)};r.setup=function(t){if(!p){var n,s;if(t==="init"){r.viewport=e('<div class="'+i+'viewport"></div>').css({overflow:"hidden",position:"relative"}).appendTo(r).append(r.container);r.cloneCount=0;r.cloneOffset=0;if(c){s=e.makeArray(r.slides).reverse();r.slides=e(s);r.container.empty().append(r.slides)}}if(r.vars.animationLoop&&!h){r.cloneCount=2;r.cloneOffset=1;t!=="init"&&r.container.find(".clone").remove();r.container.append(r.slides.first().clone().addClass("clone").attr("aria-hidden","true")).prepend(r.slides.last().clone().addClass("clone").attr("aria-hidden","true"));v.uniqueID(r.slides.first().clone().addClass("clone")).appendTo(r.container);v.uniqueID(r.slides.last().clone().addClass("clone")).prependTo(r.container)}r.newSlides=e(r.vars.selector,r);n=c?r.count-1-r.currentSlide+r.cloneOffset:r.currentSlide+r.cloneOffset;if(l&&!h){r.container.height((r.count+r.cloneCount)*200+"%").css("position","absolute").width("100%");setTimeout(function(){r.newSlides.css({display:"block"});r.doMath();r.viewport.height(r.h);r.setProps(n*r.h,"init")},t==="init"?100:0)}else{r.container.width((r.count+r.cloneCount)*200+"%");r.setProps(n*r.computedW,"init");setTimeout(function(){r.doMath();r.newSlides.css({width:r.computedW,"float":"left",display:"block"});r.vars.smoothHeight&&v.smoothHeight()},t==="init"?100:0)}}else{r.slides.css({width:"100%","float":"left",marginRight:"-100%",position:"relative"});t==="init"&&(o?r.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+r.vars.animationSpeed/1e3+"s ease",zIndex:1}).eq(r.currentSlide).css({opacity:1,zIndex:2}):r.slides.css({opacity:0,display:"block",zIndex:1}).eq(r.currentSlide).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing));r.vars.smoothHeight&&v.smoothHeight()}h||r.slides.removeClass(i+"active-slide").eq(r.currentSlide).addClass(i+"active-slide");r.vars.init(r)};r.doMath=function(){var e=r.slides.first(),t=r.vars.itemMargin,n=r.vars.minItems,i=r.vars.maxItems;r.w=r.viewport===undefined?r.width():r.viewport.width();r.h=e.height();r.boxPadding=e.outerWidth()-e.width();if(h){r.itemT=r.vars.itemWidth+t;r.minW=n?n*r.itemT:r.w;r.maxW=i?i*r.itemT-t:r.w;r.itemW=r.minW>r.w?(r.w-t*(n-1))/n:r.maxW<r.w?(r.w-t*(i-1))/i:r.vars.itemWidth>r.w?r.w:r.vars.itemWidth;r.visible=Math.floor(r.w/r.itemW);r.move=r.vars.move>0&&r.vars.move<r.visible?r.vars.move:r.visible;r.pagingCount=Math.ceil((r.count-r.visible)/r.move+1);r.last=r.pagingCount-1;r.limit=r.pagingCount===1?0:r.vars.itemWidth>r.w?r.itemW*(r.count-1)+t*(r.count-1):(r.itemW+t)*r.count-r.w-t}else{r.itemW=r.w;r.pagingCount=r.count;r.last=r.count-1}r.computedW=r.itemW-r.boxPadding};r.update=function(e,t){r.doMath();if(!h){e<r.currentSlide?r.currentSlide+=1:e<=r.currentSlide&&e!==0&&(r.currentSlide-=1);r.animatingTo=r.currentSlide}if(r.vars.controlNav&&!r.manualControls)if(t==="add"&&!h||r.pagingCount>r.controlNav.length)v.controlNav.update("add");else if(t==="remove"&&!h||r.pagingCount<r.controlNav.length){if(h&&r.currentSlide>r.last){r.currentSlide-=1;r.animatingTo-=1}v.controlNav.update("remove",r.last)}r.vars.directionNav&&v.directionNav.update()};r.addSlide=function(t,n){var i=e(t);r.count+=1;r.last=r.count-1;l&&c?n!==undefined?r.slides.eq(r.count-n).after(i):r.container.prepend(i):n!==undefined?r.slides.eq(n).before(i):r.container.append(i);r.update(n,"add");r.slides=e(r.vars.selector+":not(.clone)",r);r.setup();r.vars.added(r)};r.removeSlide=function(t){var n=isNaN(t)?r.slides.index(e(t)):t;r.count-=1;r.last=r.count-1;isNaN(t)?e(t,r.slides).remove():l&&c?r.slides.eq(r.last).remove():r.slides.eq(t).remove();r.doMath();r.update(n,"remove");r.slides=e(r.vars.selector+":not(.clone)",r);r.setup();r.vars.removed(r)};v.init()};e(window).blur(function(e){focused=!1}).focus(function(e){focused=!0});e.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}};e.fn.flexslider=function(t){t===undefined&&(t={});if(typeof t=="object")return this.each(function(){var n=e(this),r=t.selector?t.selector:".slides > li",i=n.find(r);if(i.length===1&&t.allowOneSlide===!0||i.length===0){i.fadeIn(400);t.start&&t.start(n)}else n.data("flexslider")===undefined&&new e.flexslider(this,t)});var n=e(this).data("flexslider");switch(t){case"play":n.play();break;case"pause":n.pause();break;case"stop":n.stop();break;case"next":n.flexAnimate(n.getTarget("next"),!0);break;case"prev":case"previous":n.flexAnimate(n.getTarget("prev"),!0);break;default:typeof t=="number"&&n.flexAnimate(t,!0)}}})(jQuery);(function(e){e.flexslider=function(t,n){var r=e(t);r.vars=e.extend({},e.flexslider.defaults,n);var i=r.vars.namespace,s=window.navigator&&window.navigator.msPointerEnabled&&window.MSGesture,o=("ontouchstart"in window||s||window.DocumentTouch&&document instanceof DocumentTouch)&&r.vars.touch,u="click touchend MSPointerUp",a="",f,l=r.vars.direction==="vertical",c=r.vars.reverse,h=r.vars.itemWidth>0,p=r.vars.animation==="fade",d=r.vars.asNavFor!=="",v={},m=!0;e.data(t,"flexslider",r);v={init:function(){r.animating=!1;r.currentSlide=parseInt(r.vars.startAt?r.vars.startAt:0,10);isNaN(r.currentSlide)&&(r.currentSlide=0);r.animatingTo=r.currentSlide;r.atEnd=r.currentSlide===0||r.currentSlide===r.last;r.containerSelector=r.vars.selector.substr(0,r.vars.selector.search(" "));r.slides=e(r.vars.selector,r);r.container=e(r.containerSelector,r);r.count=r.slides.length;r.syncExists=e(r.vars.sync).length>0;r.vars.animation==="slide"&&(r.vars.animation="swing");r.prop=l?"top":"marginLeft";r.args={};r.manualPause=!1;r.stopped=!1;r.started=!1;r.startTimeout=null;r.transitions=!r.vars.video&&!p&&r.vars.useCSS&&function(){var e=document.createElement("div"),t=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"];for(var n in t)if(e.style[t[n]]!==undefined){r.pfx=t[n].replace("Perspective","").toLowerCase();r.prop="-"+r.pfx+"-transform";return!0}return!1}();r.vars.controlsContainer!==""&&(r.controlsContainer=e(r.vars.controlsContainer).length>0&&e(r.vars.controlsContainer));r.vars.manualControls!==""&&(r.manualControls=e(r.vars.manualControls).length>0&&e(r.vars.manualControls));if(r.vars.randomize){r.slides.sort(function(){return Math.round(Math.random())-.5});r.container.empty().append(r.slides)}r.doMath();r.setup("init");r.vars.controlNav&&v.controlNav.setup();r.vars.directionNav&&v.directionNav.setup();r.vars.keyboard&&(e(r.containerSelector).length===1||r.vars.multipleKeyboard)&&e(document).bind("keyup",function(e){var t=e.keyCode;if(!r.animating&&(t===39||t===37)){var n=t===39?r.getTarget("next"):t===37?r.getTarget("prev"):!1;r.flexAnimate(n,r.vars.pauseOnAction)}});r.vars.mousewheel&&r.bind("mousewheel",function(e,t,n,i){e.preventDefault();var s=t<0?r.getTarget("next"):r.getTarget("prev");r.flexAnimate(s,r.vars.pauseOnAction)});r.vars.pausePlay&&v.pausePlay.setup();r.vars.slideshow&&r.vars.pauseInvisible&&v.pauseInvisible.init();if(r.vars.slideshow){r.vars.pauseOnHover&&r.hover(function(){!r.manualPlay&&!r.manualPause&&r.pause()},function(){!r.manualPause&&!r.manualPlay&&!r.stopped&&r.play()});if(!r.vars.pauseInvisible||!v.pauseInvisible.isHidden())r.vars.initDelay>0?r.startTimeout=setTimeout(r.play,r.vars.initDelay):r.play()}d&&v.asNav.setup();o&&r.vars.touch&&v.touch();(!p||p&&r.vars.smoothHeight)&&e(window).bind("resize orientationchange focus",v.resize);r.find("img").attr("draggable","false");setTimeout(function(){r.vars.start(r)},200)},asNav:{setup:function(){r.asNav=!0;r.animatingTo=Math.floor(r.currentSlide/r.move);r.currentItem=r.currentSlide;r.slides.removeClass(i+"active-slide").eq(r.currentItem).addClass(i+"active-slide");if(!s)r.slides.on(u,function(t){t.preventDefault();var n=e(this),s=n.index(),o=n.offset().left-e(r).scrollLeft();if(o<=0&&n.hasClass(i+"active-slide"))r.flexAnimate(r.getTarget("prev"),!0);else if(!e(r.vars.asNavFor).data("flexslider").animating&&!n.hasClass(i+"active-slide")){r.direction=r.currentItem<s?"next":"prev";r.flexAnimate(s,r.vars.pauseOnAction,!1,!0,!0)}});else{t._slider=r;r.slides.each(function(){var t=this;t._gesture=new MSGesture;t._gesture.target=t;t.addEventListener("MSPointerDown",function(e){e.preventDefault();e.currentTarget._gesture&&e.currentTarget._gesture.addPointer(e.pointerId)},!1);t.addEventListener("MSGestureTap",function(t){t.preventDefault();var n=e(this),i=n.index();if(!e(r.vars.asNavFor).data("flexslider").animating&&!n.hasClass("active")){r.direction=r.currentItem<i?"next":"prev";r.flexAnimate(i,r.vars.pauseOnAction,!1,!0,!0)}})})}}},controlNav:{setup:function(){r.manualControls?v.controlNav.setupManual():v.controlNav.setupPaging()},setupPaging:function(){var t=r.vars.controlNav==="thumbnails"?"control-thumbs":"control-paging",n=1,s,o;r.controlNavScaffold=e('<ol class="'+i+"control-nav "+i+t+'"></ol>');if(r.pagingCount>1)for(var f=0;f<r.pagingCount;f++){o=r.slides.eq(f);s=r.vars.controlNav==="thumbnails"?'<img src="'+o.attr("data-thumb")+'"/>':"<a>"+n+"</a>";if("thumbnails"===r.vars.controlNav&&!0===r.vars.thumbCaptions){var l=o.attr("data-thumbcaption");""!=l&&undefined!=l&&(s+='<span class="'+i+'caption">'+l+"</span>")}r.controlNavScaffold.append("<li>"+s+"</li>");n++}r.controlsContainer?e(r.controlsContainer).append(r.controlNavScaffold):r.append(r.controlNavScaffold);v.controlNav.set();v.controlNav.active();r.controlNavScaffold.delegate("a, img",u,function(t){t.preventDefault();if(a===""||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+"active")){r.direction=s>r.currentSlide?"next":"prev";r.flexAnimate(s,r.vars.pauseOnAction)}}a===""&&(a=t.type);v.setToClearWatchedEvent()})},setupManual:function(){r.controlNav=r.manualControls;v.controlNav.active();r.controlNav.bind(u,function(t){t.preventDefault();if(a===""||a===t.type){var n=e(this),s=r.controlNav.index(n);if(!n.hasClass(i+"active")){s>r.currentSlide?r.direction="next":r.direction="prev";r.flexAnimate(s,r.vars.pauseOnAction)}}a===""&&(a=t.type);v.setToClearWatchedEvent()})},set:function(){var t=r.vars.controlNav==="thumbnails"?"img":"a";r.controlNav=e("."+i+"control-nav li "+t,r.controlsContainer?r.controlsContainer:r)},active:function(){r.controlNav.removeClass(i+"active").eq(r.animatingTo).addClass(i+"active")},update:function(t,n){r.pagingCount>1&&t==="add"?r.controlNavScaffold.append(e("<li><a>"+r.count+"</a></li>")):r.pagingCount===1?r.controlNavScaffold.find("li").remove():r.controlNav.eq(n).closest("li").remove();v.controlNav.set();r.pagingCount>1&&r.pagingCount!==r.controlNav.length?r.update(n,t):v.controlNav.active()}},directionNav:{setup:function(){var t=e('<ul class="'+i+'direction-nav"><li><a class="'+i+'prev" href="#">'+r.vars.prevText+'</a></li><li><a class="'+i+'next" href="#">'+r.vars.nextText+"</a></li></ul>");if(r.controlsContainer){e(r.controlsContainer).append(t);r.directionNav=e("."+i+"direction-nav li a",r.controlsContainer)}else{r.append(t);r.directionNav=e("."+i+"direction-nav li a",r)}v.directionNav.update();r.directionNav.bind(u,function(t){t.preventDefault();var n;if(a===""||a===t.type){n=e(this).hasClass(i+"next")?r.getTarget("next"):r.getTarget("prev");r.flexAnimate(n,r.vars.pauseOnAction)}a===""&&(a=t.type);v.setToClearWatchedEvent()})},update:function(){var e=i+"disabled";r.pagingCount===1?r.directionNav.addClass(e).attr("tabindex","-1"):r.vars.animationLoop?r.directionNav.removeClass(e).removeAttr("tabindex"):r.animatingTo===0?r.directionNav.removeClass(e).filter("."+i+"prev").addClass(e).attr("tabindex","-1"):r.animatingTo===r.last?r.directionNav.removeClass(e).filter("."+i+"next").addClass(e).attr("tabindex","-1"):r.directionNav.removeClass(e).removeAttr("tabindex")}},pausePlay:{setup:function(){var t=e('<div class="'+i+'pauseplay"><a></a></div>');if(r.controlsContainer){r.controlsContainer.append(t);r.pausePlay=e("."+i+"pauseplay a",r.controlsContainer)}else{r.append(t);r.pausePlay=e("."+i+"pauseplay a",r)}v.pausePlay.update(r.vars.slideshow?i+"pause":i+"play");r.pausePlay.bind(u,function(t){t.preventDefault();if(a===""||a===t.type)if(e(this).hasClass(i+"pause")){r.manualPause=!0;r.manualPlay=!1;r.pause()}else{r.manualPause=!1;r.manualPlay=!0;r.play()}a===""&&(a=t.type);v.setToClearWatchedEvent()})},update:function(e){e==="play"?r.pausePlay.removeClass(i+"pause").addClass(i+"play").html(r.vars.playText):r.pausePlay.removeClass(i+"play").addClass(i+"pause").html(r.vars.pauseText)}},touch:function(){var e,n,i,o,u,a,f=!1,d=0,v=0,m=0;if(!s){t.addEventListener("touchstart",g,!1);function g(s){if(r.animating)s.preventDefault();else if(window.navigator.msPointerEnabled||s.touches.length===1){r.pause();o=l?r.h:r.w;a=Number(new Date);d=s.touches[0].pageX;v=s.touches[0].pageY;i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o;e=l?v:d;n=l?d:v;t.addEventListener("touchmove",y,!1);t.addEventListener("touchend",b,!1)}}function y(t){d=t.touches[0].pageX;v=t.touches[0].pageY;u=l?e-v:e-d;f=l?Math.abs(u)<Math.abs(d-n):Math.abs(u)<Math.abs(v-n);var s=500;if(!f||Number(new Date)-a>s){t.preventDefault();if(!p&&r.transitions){r.vars.animationLoop||(u/=r.currentSlide===0&&u<0||r.currentSlide===r.last&&u>0?Math.abs(u)/o+2:1);r.setProps(i+u,"setTouch")}}}function b(s){t.removeEventListener("touchmove",y,!1);if(r.animatingTo===r.currentSlide&&!f&&u!==null){var l=c?-u:u,h=l>0?r.getTarget("next"):r.getTarget("prev");r.canAdvance(h)&&(Number(new Date)-a<550&&Math.abs(l)>50||Math.abs(l)>o/2)?r.flexAnimate(h,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}t.removeEventListener("touchend",b,!1);e=null;n=null;u=null;i=null}}else{t.style.msTouchAction="none";t._gesture=new MSGesture;t._gesture.target=t;t.addEventListener("MSPointerDown",w,!1);t._slider=r;t.addEventListener("MSGestureChange",E,!1);t.addEventListener("MSGestureEnd",S,!1);function w(e){e.stopPropagation();if(r.animating)e.preventDefault();else{r.pause();t._gesture.addPointer(e.pointerId);m=0;o=l?r.h:r.w;a=Number(new Date);i=h&&c&&r.animatingTo===r.last?0:h&&c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:h&&r.currentSlide===r.last?r.limit:h?(r.itemW+r.vars.itemMargin)*r.move*r.currentSlide:c?(r.last-r.currentSlide+r.cloneOffset)*o:(r.currentSlide+r.cloneOffset)*o}}function E(e){e.stopPropagation();var n=e.target._slider;if(!n)return;var r=-e.translationX,s=-e.translationY;m+=l?s:r;u=m;f=l?Math.abs(m)<Math.abs(-r):Math.abs(m)<Math.abs(-s);if(e.detail===e.MSGESTURE_FLAG_INERTIA){setImmediate(function(){t._gesture.stop()});return}if(!f||Number(new Date)-a>500){e.preventDefault();if(!p&&n.transitions){n.vars.animationLoop||(u=m/(n.currentSlide===0&&m<0||n.currentSlide===n.last&&m>0?Math.abs(m)/o+2:1));n.setProps(i+u,"setTouch")}}}function S(t){t.stopPropagation();var r=t.target._slider;if(!r)return;if(r.animatingTo===r.currentSlide&&!f&&u!==null){var s=c?-u:u,l=s>0?r.getTarget("next"):r.getTarget("prev");r.canAdvance(l)&&(Number(new Date)-a<550&&Math.abs(s)>50||Math.abs(s)>o/2)?r.flexAnimate(l,r.vars.pauseOnAction):p||r.flexAnimate(r.currentSlide,r.vars.pauseOnAction,!0)}e=null;n=null;u=null;i=null;m=0}}},resize:function(){if(!r.animating&&r.is(":visible")){h||r.doMath();if(p)v.smoothHeight();else if(h){r.slides.width(r.computedW);r.update(r.pagingCount);r.setProps()}else if(l){r.viewport.height(r.h);r.setProps(r.h,"setTotal")}else{r.vars.smoothHeight&&v.smoothHeight();r.newSlides.width(r.computedW -);r.setProps(r.computedW,"setTotal")}}},smoothHeight:function(e){if(!l||p){var t=p?r:r.viewport;e?t.animate({height:r.slides.eq(r.animatingTo).height()},e):t.height(r.slides.eq(r.animatingTo).height())}},sync:function(t){var n=e(r.vars.sync).data("flexslider"),i=r.animatingTo;switch(t){case"animate":n.flexAnimate(i,r.vars.pauseOnAction,!1,!0);break;case"play":!n.playing&&!n.asNav&&n.play();break;case"pause":n.pause()}},uniqueID:function(t){t.find("[id]").each(function(){var t=e(this);t.attr("id",t.attr("id")+"_clone")});return t},pauseInvisible:{visProp:null,init:function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)e[t]+"Hidden"in document&&(v.pauseInvisible.visProp=e[t]+"Hidden");if(v.pauseInvisible.visProp){var n=v.pauseInvisible.visProp.replace(/[H|h]idden/,"")+"visibilitychange";document.addEventListener(n,function(){v.pauseInvisible.isHidden()?r.startTimeout?clearTimeout(r.startTimeout):r.pause():r.started?r.play():r.vars.initDelay>0?setTimeout(r.play,r.vars.initDelay):r.play()})}},isHidden:function(){return document[v.pauseInvisible.visProp]||!1}},setToClearWatchedEvent:function(){clearTimeout(f);f=setTimeout(function(){a=""},3e3)}};r.flexAnimate=function(t,n,s,u,a){!r.vars.animationLoop&&t!==r.currentSlide&&(r.direction=t>r.currentSlide?"next":"prev");d&&r.pagingCount===1&&(r.direction=r.currentItem<t?"next":"prev");if(!r.animating&&(r.canAdvance(t,a)||s)&&r.is(":visible")){if(d&&u){var f=e(r.vars.asNavFor).data("flexslider");r.atEnd=t===0||t===r.count-1;f.flexAnimate(t,!0,!1,!0,a);r.direction=r.currentItem<t?"next":"prev";f.direction=r.direction;if(Math.ceil((t+1)/r.visible)-1===r.currentSlide||t===0){r.currentItem=t;r.slides.removeClass(i+"active-slide").eq(t).addClass(i+"active-slide");return!1}r.currentItem=t;r.slides.removeClass(i+"active-slide").eq(t).addClass(i+"active-slide");t=Math.floor(t/r.visible)}r.animating=!0;r.animatingTo=t;n&&r.pause();r.vars.before(r);r.syncExists&&!a&&v.sync("animate");r.vars.controlNav&&v.controlNav.active();h||r.slides.removeClass(i+"active-slide").eq(t).addClass(i+"active-slide");r.atEnd=t===0||t===r.last;r.vars.directionNav&&v.directionNav.update();if(t===r.last){r.vars.end(r);r.vars.animationLoop||r.pause()}if(!p){var m=l?r.slides.filter(":first").height():r.computedW,g,y,b;if(h){g=r.vars.itemMargin;b=(r.itemW+g)*r.move*r.animatingTo;y=b>r.limit&&r.visible!==1?r.limit:b}else r.currentSlide===0&&t===r.count-1&&r.vars.animationLoop&&r.direction!=="next"?y=c?(r.count+r.cloneOffset)*m:0:r.currentSlide===r.last&&t===0&&r.vars.animationLoop&&r.direction!=="prev"?y=c?0:(r.count+1)*m:y=c?(r.count-1-t+r.cloneOffset)*m:(t+r.cloneOffset)*m;r.setProps(y,"",r.vars.animationSpeed);if(r.transitions){if(!r.vars.animationLoop||!r.atEnd){r.animating=!1;r.currentSlide=r.animatingTo}r.container.unbind("webkitTransitionEnd transitionend");r.container.bind("webkitTransitionEnd transitionend",function(){r.wrapup(m)})}else r.container.animate(r.args,r.vars.animationSpeed,r.vars.easing,function(){r.wrapup(m)})}else if(!o){r.slides.eq(r.currentSlide).css({zIndex:1}).animate({opacity:0},r.vars.animationSpeed,r.vars.easing);r.slides.eq(t).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing,r.wrapup)}else{r.slides.eq(r.currentSlide).css({opacity:0,zIndex:1});r.slides.eq(t).css({opacity:1,zIndex:2});r.wrapup(m)}r.vars.smoothHeight&&v.smoothHeight(r.vars.animationSpeed)}};r.wrapup=function(e){!p&&!h&&(r.currentSlide===0&&r.animatingTo===r.last&&r.vars.animationLoop?r.setProps(e,"jumpEnd"):r.currentSlide===r.last&&r.animatingTo===0&&r.vars.animationLoop&&r.setProps(e,"jumpStart"));r.animating=!1;r.currentSlide=r.animatingTo;r.vars.after(r)};r.animateSlides=function(){!r.animating&&m&&r.flexAnimate(r.getTarget("next"))};r.pause=function(){clearInterval(r.animatedSlides);r.animatedSlides=null;r.playing=!1;r.vars.pausePlay&&v.pausePlay.update("play");r.syncExists&&v.sync("pause")};r.play=function(){r.playing&&clearInterval(r.animatedSlides);r.animatedSlides=r.animatedSlides||setInterval(r.animateSlides,r.vars.slideshowSpeed);r.started=r.playing=!0;r.vars.pausePlay&&v.pausePlay.update("pause");r.syncExists&&v.sync("play")};r.stop=function(){r.pause();r.stopped=!0};r.canAdvance=function(e,t){var n=d?r.pagingCount-1:r.last;return t?!0:d&&r.currentItem===r.count-1&&e===0&&r.direction==="prev"?!0:d&&r.currentItem===0&&e===r.pagingCount-1&&r.direction!=="next"?!1:e===r.currentSlide&&!d?!1:r.vars.animationLoop?!0:r.atEnd&&r.currentSlide===0&&e===n&&r.direction!=="next"?!1:r.atEnd&&r.currentSlide===n&&e===0&&r.direction==="next"?!1:!0};r.getTarget=function(e){r.direction=e;return e==="next"?r.currentSlide===r.last?0:r.currentSlide+1:r.currentSlide===0?r.last:r.currentSlide-1};r.setProps=function(e,t,n){var i=function(){var n=e?e:(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo,i=function(){if(h)return t==="setTouch"?e:c&&r.animatingTo===r.last?0:c?r.limit-(r.itemW+r.vars.itemMargin)*r.move*r.animatingTo:r.animatingTo===r.last?r.limit:n;switch(t){case"setTotal":return c?(r.count-1-r.currentSlide+r.cloneOffset)*e:(r.currentSlide+r.cloneOffset)*e;case"setTouch":return c?e:e;case"jumpEnd":return c?e:r.count*e;case"jumpStart":return c?r.count*e:e;default:return e}}();return i*-1+"px"}();if(r.transitions){i=l?"translate3d(0,"+i+",0)":"translate3d("+i+",0,0)";n=n!==undefined?n/1e3+"s":"0s";r.container.css("-"+r.pfx+"-transition-duration",n);r.container.css("transition-duration",n)}r.args[r.prop]=i;(r.transitions||n===undefined)&&r.container.css(r.args);r.container.css("transform",i)};r.setup=function(t){if(!p){var n,s;if(t==="init"){r.viewport=e('<div class="'+i+'viewport"></div>').css({overflow:"hidden",position:"relative"}).appendTo(r).append(r.container);r.cloneCount=0;r.cloneOffset=0;if(c){s=e.makeArray(r.slides).reverse();r.slides=e(s);r.container.empty().append(r.slides)}}if(r.vars.animationLoop&&!h){r.cloneCount=2;r.cloneOffset=1;t!=="init"&&r.container.find(".clone").remove();r.container.append(r.slides.first().clone().addClass("clone").attr("aria-hidden","true")).prepend(r.slides.last().clone().addClass("clone").attr("aria-hidden","true"));v.uniqueID(r.slides.first().clone().addClass("clone")).appendTo(r.container);v.uniqueID(r.slides.last().clone().addClass("clone")).prependTo(r.container)}r.newSlides=e(r.vars.selector,r);n=c?r.count-1-r.currentSlide+r.cloneOffset:r.currentSlide+r.cloneOffset;if(l&&!h){r.container.height((r.count+r.cloneCount)*200+"%").css("position","absolute").width("100%");setTimeout(function(){r.newSlides.css({display:"block"});r.doMath();r.viewport.height(r.h);r.setProps(n*r.h,"init")},t==="init"?100:0)}else{r.container.width((r.count+r.cloneCount)*200+"%");r.setProps(n*r.computedW,"init");setTimeout(function(){r.doMath();r.newSlides.css({width:r.computedW,"float":"left",display:"block"});r.vars.smoothHeight&&v.smoothHeight()},t==="init"?100:0)}}else{r.slides.css({width:"100%","float":"left",marginRight:"-100%",position:"relative"});t==="init"&&(o?r.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+r.vars.animationSpeed/1e3+"s ease",zIndex:1}).eq(r.currentSlide).css({opacity:1,zIndex:2}):r.slides.css({opacity:0,display:"block",zIndex:1}).eq(r.currentSlide).css({zIndex:2}).animate({opacity:1},r.vars.animationSpeed,r.vars.easing));r.vars.smoothHeight&&v.smoothHeight()}h||r.slides.removeClass(i+"active-slide").eq(r.currentSlide).addClass(i+"active-slide");r.vars.init(r)};r.doMath=function(){var e=r.slides.first(),t=r.vars.itemMargin,n=r.vars.minItems,i=r.vars.maxItems;r.w=r.viewport===undefined?r.width():r.viewport.width();r.h=e.height();r.boxPadding=e.outerWidth()-e.width();if(h){r.itemT=r.vars.itemWidth+t;r.minW=n?n*r.itemT:r.w;r.maxW=i?i*r.itemT-t:r.w;r.itemW=r.minW>r.w?(r.w-t*(n-1))/n:r.maxW<r.w?(r.w-t*(i-1))/i:r.vars.itemWidth>r.w?r.w:r.vars.itemWidth;r.visible=Math.floor(r.w/r.itemW);r.move=r.vars.move>0&&r.vars.move<r.visible?r.vars.move:r.visible;r.pagingCount=Math.ceil((r.count-r.visible)/r.move+1);r.last=r.pagingCount-1;r.limit=r.pagingCount===1?0:r.vars.itemWidth>r.w?r.itemW*(r.count-1)+t*(r.count-1):(r.itemW+t)*r.count-r.w-t}else{r.itemW=r.w;r.pagingCount=r.count;r.last=r.count-1}r.computedW=r.itemW-r.boxPadding};r.update=function(e,t){r.doMath();if(!h){e<r.currentSlide?r.currentSlide+=1:e<=r.currentSlide&&e!==0&&(r.currentSlide-=1);r.animatingTo=r.currentSlide}if(r.vars.controlNav&&!r.manualControls)if(t==="add"&&!h||r.pagingCount>r.controlNav.length)v.controlNav.update("add");else if(t==="remove"&&!h||r.pagingCount<r.controlNav.length){if(h&&r.currentSlide>r.last){r.currentSlide-=1;r.animatingTo-=1}v.controlNav.update("remove",r.last)}r.vars.directionNav&&v.directionNav.update()};r.addSlide=function(t,n){var i=e(t);r.count+=1;r.last=r.count-1;l&&c?n!==undefined?r.slides.eq(r.count-n).after(i):r.container.prepend(i):n!==undefined?r.slides.eq(n).before(i):r.container.append(i);r.update(n,"add");r.slides=e(r.vars.selector+":not(.clone)",r);r.setup();r.vars.added(r)};r.removeSlide=function(t){var n=isNaN(t)?r.slides.index(e(t)):t;r.count-=1;r.last=r.count-1;isNaN(t)?e(t,r.slides).remove():l&&c?r.slides.eq(r.last).remove():r.slides.eq(t).remove();r.doMath();r.update(n,"remove");r.slides=e(r.vars.selector+":not(.clone)",r);r.setup();r.vars.removed(r)};v.init()};e(window).blur(function(e){focused=!1}).focus(function(e){focused=!0});e.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7e3,animationSpeed:600,initDelay:0,randomize:!1,thumbCaptions:!1,pauseOnAction:!0,pauseOnHover:!1,pauseInvisible:!0,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next",keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:1,maxItems:0,move:0,allowOneSlide:!0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){},init:function(){}};e.fn.flexslider=function(t){t===undefined&&(t={});if(typeof t=="object")return this.each(function(){var n=e(this),r=t.selector?t.selector:".slides > li",i=n.find(r);if(i.length===1&&t.allowOneSlide===!0||i.length===0){i.fadeIn(400);t.start&&t.start(n)}else n.data("flexslider")===undefined&&new e.flexslider(this,t)});var n=e(this).data("flexslider");switch(t){case"play":n.play();break;case"pause":n.pause();break;case"stop":n.stop();break;case"next":n.flexAnimate(n.getTarget("next"),!0);break;case"prev":case"previous":n.flexAnimate(n.getTarget("prev"),!0);break;default:typeof t=="number"&&n.flexAnimate(t,!0)}}})(jQuery); diff --git a/dashboard/js/jquery.form.js b/dashboard/js/jquery.form.js deleted file mode 100644 index 1c3284b1..00000000 --- a/dashboard/js/jquery.form.js +++ /dev/null @@ -1,869 +0,0 @@ -/* - * jQuery Form Plugin - * version: 2.07 (03/04/2008) - * @requires jQuery v1.2.2 or later - * - * Examples at: http://malsup.com/jquery/form/ - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * Revision: $Id$ - */ - (function($) { -/** - * ajaxSubmit() provides a mechanism for submitting an HTML form using AJAX. - * - * ajaxSubmit accepts a single argument which can be either a success callback function - * or an options Object. If a function is provided it will be invoked upon successful - * completion of the submit and will be passed the response from the server. - * If an options Object is provided, the following attributes are supported: - * - * target: Identifies the element(s) in the page to be updated with the server response. - * This value may be specified as a jQuery selection string, a jQuery object, - * or a DOM element. - * default value: null - * - * url: URL to which the form data will be submitted. - * default value: value of form's 'action' attribute - * - * type: The method in which the form data should be submitted, 'GET' or 'POST'. - * default value: value of form's 'method' attribute (or 'GET' if none found) - * - * data: Additional data to add to the request, specified as key/value pairs (see $.ajax). - * - * beforeSubmit: Callback method to be invoked before the form is submitted. - * default value: null - * - * success: Callback method to be invoked after the form has been successfully submitted - * and the response has been returned from the server - * default value: null - * - * dataType: Expected dataType of the response. One of: null, 'xml', 'script', or 'json' - * default value: null - * - * semantic: Boolean flag indicating whether data must be submitted in semantic order (slower). - * default value: false - * - * resetForm: Boolean flag indicating whether the form should be reset if the submit is successful - * - * clearForm: Boolean flag indicating whether the form should be cleared if the submit is successful - * - * - * The 'beforeSubmit' callback can be provided as a hook for running pre-submit logic or for - * validating the form data. If the 'beforeSubmit' callback returns false then the form will - * not be submitted. The 'beforeSubmit' callback is invoked with three arguments: the form data - * in array format, the jQuery object, and the options object passed into ajaxSubmit. - * The form data array takes the following form: - * - * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] - * - * If a 'success' callback method is provided it is invoked after the response has been returned - * from the server. It is passed the responseText or responseXML value (depending on dataType). - * See jQuery.ajax for further details. - * - * - * The dataType option provides a means for specifying how the server response should be handled. - * This maps directly to the jQuery.httpData method. The following values are supported: - * - * 'xml': if dataType == 'xml' the server response is treated as XML and the 'success' - * callback method, if specified, will be passed the responseXML value - * 'json': if dataType == 'json' the server response will be evaluted and passed to - * the 'success' callback, if specified - * 'script': if dataType == 'script' the server response is evaluated in the global context - * - * - * Note that it does not make sense to use both the 'target' and 'dataType' options. If both - * are provided the target will be ignored. - * - * The semantic argument can be used to force form serialization in semantic order. - * This is normally true anyway, unless the form contains input elements of type='image'. - * If your form must be submitted with name/value pairs in semantic order and your form - * contains an input of type='image" then pass true for this arg, otherwise pass false - * (or nothing) to avoid the overhead for this logic. - * - * - * When used on its own, ajaxSubmit() is typically bound to a form's submit event like this: - * - * $("#form-id").submit(function() { - * $(this).ajaxSubmit(options); - * return false; // cancel conventional submit - * }); - * - * When using ajaxForm(), however, this is done for you. - * - * @example - * $('#myForm').ajaxSubmit(function(data) { - * alert('Form submit succeeded! Server returned: ' + data); - * }); - * @desc Submit form and alert server response - * - * - * @example - * var options = { - * target: '#myTargetDiv' - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Submit form and update page element with server response - * - * - * @example - * var options = { - * success: function(responseText) { - * alert(responseText); - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Submit form and alert the server response - * - * - * @example - * var options = { - * beforeSubmit: function(formArray, jqForm) { - * if (formArray.length == 0) { - * alert('Please enter data.'); - * return false; - * } - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Pre-submit validation which aborts the submit operation if form data is empty - * - * - * @example - * var options = { - * url: myJsonUrl.php, - * dataType: 'json', - * success: function(data) { - * // 'data' is an object representing the the evaluated json data - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc json data returned and evaluated - * - * - * @example - * var options = { - * url: myXmlUrl.php, - * dataType: 'xml', - * success: function(responseXML) { - * // responseXML is XML document object - * var data = $('myElement', responseXML).text(); - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc XML data returned from server - * - * - * @example - * var options = { - * resetForm: true - * }; - * $('#myForm').ajaxSubmit(options); - * @desc submit form and reset it if successful - * - * @example - * $('#myForm).submit(function() { - * $(this).ajaxSubmit(); - * return false; - * }); - * @desc Bind form's submit event to use ajaxSubmit - * - * - * @name ajaxSubmit - * @type jQuery - * @param options object literal containing options which control the form submission process - * @cat Plugins/Form - * @return jQuery - */ -$.fn.ajaxSubmit = function(options) { - if (typeof options == 'function') - options = { success: options }; - - options = $.extend({ - url: this.attr('action') || window.location.toString(), - type: this.attr('method') || 'GET' - }, options || {}); - - // hook for manipulating the form data before it is extracted; - // convenient for use with rich editors like tinyMCE or FCKEditor - var veto = {}; - this.trigger('form-pre-serialize', [this, options, veto]); - if (veto.veto) return this; - - var a = this.formToArray(options.semantic); - if (options.data) { - options.extraData = options.data; - for (var n in options.data) - a.push( { name: n, value: options.data[n] } ); - } - - // give pre-submit callback an opportunity to abort the submit - if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) return this; - - // fire vetoable 'validate' event - this.trigger('form-submit-validate', [a, this, options, veto]); - if (veto.veto) return this; - - var q = $.param(a); - - if (options.type.toUpperCase() == 'GET') { - options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; - options.data = null; // data is null for 'get' - } - else - options.data = q; // data is the query string for 'post' - - var $form = this, callbacks = []; - if (options.resetForm) callbacks.push(function() { $form.resetForm(); }); - if (options.clearForm) callbacks.push(function() { $form.clearForm(); }); - - // perform a load on the target only if dataType is not provided - if (!options.dataType && options.target) { - var oldSuccess = options.success || function(){}; - callbacks.push(function(data) { - $(options.target).html(data).each(oldSuccess, arguments); - }); - } - else if (options.success) - callbacks.push(options.success); - - options.success = function(data, status) { - for (var i=0, max=callbacks.length; i < max; i++) - callbacks[i](data, status, $form); - }; - - // are there files to upload? - var files = $('input:file', this).fieldValue(); - var found = false; - for (var j=0; j < files.length; j++) - if (files[j]) - found = true; - - // options.iframe allows user to force iframe mode - if (options.iframe || found) { - // hack to fix Safari hang (thanks to Tim Molendijk for this) - // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d - if ($.browser.safari && options.closeKeepAlive) - $.get(options.closeKeepAlive, fileUpload); - else - fileUpload(); - } - else - $.ajax(options); - - // fire 'notify' event - this.trigger('form-submit-notify', [this, options]); - return this; - - - // private function for handling file uploads (hat tip to YAHOO!) - function fileUpload() { - var form = $form[0]; - var opts = $.extend({}, $.ajaxSettings, options); - - var id = 'jqFormIO' + (new Date().getTime()); - var $io = $('<iframe id="' + id + '" name="' + id + '" />'); - var io = $io[0]; - var op8 = $.browser.opera && window.opera.version() < 9; - if ($.browser.msie || op8) io.src = 'javascript:false;document.write("");'; - $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' }); - - var xhr = { // mock object - responseText: null, - responseXML: null, - status: 0, - statusText: 'n/a', - getAllResponseHeaders: function() {}, - getResponseHeader: function() {}, - setRequestHeader: function() {} - }; - - var g = opts.global; - // trigger ajax global events so that activity/block indicators work like normal - if (g && ! $.active++) $.event.trigger("ajaxStart"); - if (g) $.event.trigger("ajaxSend", [xhr, opts]); - - var cbInvoked = 0; - var timedOut = 0; - - // take a breath so that pending repaints get some cpu time before the upload starts - setTimeout(function() { - // make sure form attrs are set - var t = $form.attr('target'), a = $form.attr('action'); - $form.attr({ - target: id, - encoding: 'multipart/form-data', - enctype: 'multipart/form-data', - method: 'POST', - action: opts.url - }); - - // support timout - if (opts.timeout) - setTimeout(function() { timedOut = true; cb(); }, opts.timeout); - - // add "extra" data to form if provided in options - var extraInputs = []; - try { - if (options.extraData) - for (var n in options.extraData) - extraInputs.push( - $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />') - .appendTo(form)[0]); - - // add iframe to doc and submit the form - $io.appendTo('body'); - io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false); - form.submit(); - } - finally { - // reset attrs and remove "extra" input elements - $form.attr('action', a); - t ? $form.attr('target', t) : $form.removeAttr('target'); - $(extraInputs).remove(); - } - }, 10); - - function cb() { - if (cbInvoked++) return; - - io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false); - - var ok = true; - try { - if (timedOut) throw 'timeout'; - // extract the server response from the iframe - var data, doc; - doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document; - xhr.responseText = doc.body ? doc.body.innerHTML : null; - xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc; - xhr.getResponseHeader = function(header){ - var headers = {'content-type': opts.dataType}; - return headers[header]; - }; - - if (opts.dataType == 'json' || opts.dataType == 'script') { - var ta = doc.getElementsByTagName('textarea')[0]; - xhr.responseText = ta ? ta.value : xhr.responseText; - } - else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { - xhr.responseXML = toXml(xhr.responseText); - } - data = $.httpData(xhr, opts.dataType); - } - catch(e){ - ok = false; - $.handleError(opts, xhr, 'error', e); - } - - // ordering of these callbacks/triggers is odd, but that's how $.ajax does it - if (ok) { - opts.success(data, 'success'); - if (g) $.event.trigger("ajaxSuccess", [xhr, opts]); - } - if (g) $.event.trigger("ajaxComplete", [xhr, opts]); - if (g && ! --$.active) $.event.trigger("ajaxStop"); - if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error'); - - // clean up - setTimeout(function() { - $io.remove(); - xhr.responseXML = null; - }, 100); - }; - - function toXml(s, doc) { - if (window.ActiveXObject) { - doc = new ActiveXObject('Microsoft.XMLDOM'); - doc.async = 'false'; - doc.loadXML(s); - } - else - doc = (new DOMParser()).parseFromString(s, 'text/xml'); - return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null; - }; - }; -}; - -/** - * ajaxForm() provides a mechanism for fully automating form submission. - * - * The advantages of using this method instead of ajaxSubmit() are: - * - * 1: This method will include coordinates for <input type="image" /> elements (if the element - * is used to submit the form). - * 2. This method will include the submit element's name/value data (for the element that was - * used to submit the form). - * 3. This method binds the submit() method to the form for you. - * - * Note that for accurate x/y coordinates of image submit elements in all browsers - * you need to also use the "dimensions" plugin (this method will auto-detect its presence). - * - * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely - * passes the options argument along after properly binding events for submit elements and - * the form itself. See ajaxSubmit for a full description of the options argument. - * - * - * @example - * var options = { - * target: '#myTargetDiv' - * }; - * $('#myForm').ajaxSForm(options); - * @desc Bind form's submit event so that 'myTargetDiv' is updated with the server response - * when the form is submitted. - * - * - * @example - * var options = { - * success: function(responseText) { - * alert(responseText); - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Bind form's submit event so that server response is alerted after the form is submitted. - * - * - * @example - * var options = { - * beforeSubmit: function(formArray, jqForm) { - * if (formArray.length == 0) { - * alert('Please enter data.'); - * return false; - * } - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Bind form's submit event so that pre-submit callback is invoked before the form - * is submitted. - * - * - * @name ajaxForm - * @param options object literal containing options which control the form submission process - * @return jQuery - * @cat Plugins/Form - * @type jQuery - */ -$.fn.ajaxForm = function(options) { - return this.ajaxFormUnbind().bind('submit.form-plugin',function() { - $(this).ajaxSubmit(options); - return false; - }).each(function() { - // store options in hash - $(":submit,input:image", this).bind('click.form-plugin',function(e) { - var $form = this.form; - $form.clk = this; - if (this.type == 'image') { - if (e.offsetX != undefined) { - $form.clk_x = e.offsetX; - $form.clk_y = e.offsetY; - } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin - var offset = $(this).offset(); - $form.clk_x = e.pageX - offset.left; - $form.clk_y = e.pageY - offset.top; - } else { - $form.clk_x = e.pageX - this.offsetLeft; - $form.clk_y = e.pageY - this.offsetTop; - } - } - // clear form vars - setTimeout(function() { $form.clk = $form.clk_x = $form.clk_y = null; }, 10); - }); - }); -}; - - -/** - * ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm - * - * @name ajaxFormUnbind - * @return jQuery - * @cat Plugins/Form - * @type jQuery - */ -$.fn.ajaxFormUnbind = function() { - this.unbind('submit.form-plugin'); - return this.each(function() { - $(":submit,input:image", this).unbind('click.form-plugin'); - }); - -}; - -/** - * formToArray() gathers form element data into an array of objects that can - * be passed to any of the following ajax functions: $.get, $.post, or load. - * Each object in the array has both a 'name' and 'value' property. An example of - * an array for a simple login form might be: - * - * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] - * - * It is this array that is passed to pre-submit callback functions provided to the - * ajaxSubmit() and ajaxForm() methods. - * - * The semantic argument can be used to force form serialization in semantic order. - * This is normally true anyway, unless the form contains input elements of type='image'. - * If your form must be submitted with name/value pairs in semantic order and your form - * contains an input of type='image" then pass true for this arg, otherwise pass false - * (or nothing) to avoid the overhead for this logic. - * - * @example var data = $("#myForm").formToArray(); - * $.post( "myscript.cgi", data ); - * @desc Collect all the data from a form and submit it to the server. - * - * @name formToArray - * @param semantic true if serialization must maintain strict semantic ordering of elements (slower) - * @type Array<Object> - * @cat Plugins/Form - */ -$.fn.formToArray = function(semantic) { - var a = []; - if (this.length == 0) return a; - - var form = this[0]; - var els = semantic ? form.getElementsByTagName('*') : form.elements; - if (!els) return a; - for(var i=0, max=els.length; i < max; i++) { - var el = els[i]; - var n = el.name; - if (!n) continue; - - if (semantic && form.clk && el.type == "image") { - // handle image inputs on the fly when semantic == true - if(!el.disabled && form.clk == el) - a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); - continue; - } - - var v = $.fieldValue(el, true); - if (v && v.constructor == Array) { - for(var j=0, jmax=v.length; j < jmax; j++) - a.push({name: n, value: v[j]}); - } - else if (v !== null && typeof v != 'undefined') - a.push({name: n, value: v}); - } - - if (!semantic && form.clk) { - // input type=='image' are not found in elements array! handle them here - var inputs = form.getElementsByTagName("input"); - for(var i=0, max=inputs.length; i < max; i++) { - var input = inputs[i]; - var n = input.name; - if(n && !input.disabled && input.type == "image" && form.clk == input) - a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); - } - } - return a; -}; - - -/** - * Serializes form data into a 'submittable' string. This method will return a string - * in the format: name1=value1&name2=value2 - * - * The semantic argument can be used to force form serialization in semantic order. - * If your form must be submitted with name/value pairs in semantic order then pass - * true for this arg, otherwise pass false (or nothing) to avoid the overhead for - * this logic (which can be significant for very large forms). - * - * @example var data = $("#myForm").formSerialize(); - * $.ajax('POST', "myscript.cgi", data); - * @desc Collect all the data from a form into a single string - * - * @name formSerialize - * @param semantic true if serialization must maintain strict semantic ordering of elements (slower) - * @type String - * @cat Plugins/Form - */ -$.fn.formSerialize = function(semantic) { - //hand off to jQuery.param for proper encoding - return $.param(this.formToArray(semantic)); -}; - - -/** - * Serializes all field elements in the jQuery object into a query string. - * This method will return a string in the format: name1=value1&name2=value2 - * - * The successful argument controls whether or not serialization is limited to - * 'successful' controls (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). - * The default value of the successful argument is true. - * - * @example var data = $("input").fieldSerialize(); - * @desc Collect the data from all successful input elements into a query string - * - * @example var data = $(":radio").fieldSerialize(); - * @desc Collect the data from all successful radio input elements into a query string - * - * @example var data = $("#myForm :checkbox").fieldSerialize(); - * @desc Collect the data from all successful checkbox input elements in myForm into a query string - * - * @example var data = $("#myForm :checkbox").fieldSerialize(false); - * @desc Collect the data from all checkbox elements in myForm (even the unchecked ones) into a query string - * - * @example var data = $(":input").fieldSerialize(); - * @desc Collect the data from all successful input, select, textarea and button elements into a query string - * - * @name fieldSerialize - * @param successful true if only successful controls should be serialized (default is true) - * @type String - * @cat Plugins/Form - */ -$.fn.fieldSerialize = function(successful) { - var a = []; - this.each(function() { - var n = this.name; - if (!n) return; - var v = $.fieldValue(this, successful); - if (v && v.constructor == Array) { - for (var i=0,max=v.length; i < max; i++) - a.push({name: n, value: v[i]}); - } - else if (v !== null && typeof v != 'undefined') - a.push({name: this.name, value: v}); - }); - //hand off to jQuery.param for proper encoding - return $.param(a); -}; - - -/** - * Returns the value(s) of the element in the matched set. For example, consider the following form: - * - * <form><fieldset> - * <input name="A" type="text" /> - * <input name="A" type="text" /> - * <input name="B" type="checkbox" value="B1" /> - * <input name="B" type="checkbox" value="B2"/> - * <input name="C" type="radio" value="C1" /> - * <input name="C" type="radio" value="C2" /> - * </fieldset></form> - * - * var v = $(':text').fieldValue(); - * // if no values are entered into the text inputs - * v == ['',''] - * // if values entered into the text inputs are 'foo' and 'bar' - * v == ['foo','bar'] - * - * var v = $(':checkbox').fieldValue(); - * // if neither checkbox is checked - * v === undefined - * // if both checkboxes are checked - * v == ['B1', 'B2'] - * - * var v = $(':radio').fieldValue(); - * // if neither radio is checked - * v === undefined - * // if first radio is checked - * v == ['C1'] - * - * The successful argument controls whether or not the field element must be 'successful' - * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). - * The default value of the successful argument is true. If this value is false the value(s) - * for each element is returned. - * - * Note: This method *always* returns an array. If no valid value can be determined the - * array will be empty, otherwise it will contain one or more values. - * - * @example var data = $("#myPasswordElement").fieldValue(); - * alert(data[0]); - * @desc Alerts the current value of the myPasswordElement element - * - * @example var data = $("#myForm :input").fieldValue(); - * @desc Get the value(s) of the form elements in myForm - * - * @example var data = $("#myForm :checkbox").fieldValue(); - * @desc Get the value(s) for the successful checkbox element(s) in the jQuery object. - * - * @example var data = $("#mySingleSelect").fieldValue(); - * @desc Get the value(s) of the select control - * - * @example var data = $(':text').fieldValue(); - * @desc Get the value(s) of the text input or textarea elements - * - * @example var data = $("#myMultiSelect").fieldValue(); - * @desc Get the values for the select-multiple control - * - * @name fieldValue - * @param Boolean successful true if only the values for successful controls should be returned (default is true) - * @type Array<String> - * @cat Plugins/Form - */ -$.fn.fieldValue = function(successful) { - for (var val=[], i=0, max=this.length; i < max; i++) { - var el = this[i]; - var v = $.fieldValue(el, successful); - if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) - continue; - v.constructor == Array ? $.merge(val, v) : val.push(v); - } - return val; -}; - -/** - * Returns the value of the field element. - * - * The successful argument controls whether or not the field element must be 'successful' - * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). - * The default value of the successful argument is true. If the given element is not - * successful and the successful arg is not false then the returned value will be null. - * - * Note: If the successful flag is true (default) but the element is not successful, the return will be null - * Note: The value returned for a successful select-multiple element will always be an array. - * Note: If the element has no value the return value will be undefined. - * - * @example var data = jQuery.fieldValue($("#myPasswordElement")[0]); - * @desc Gets the current value of the myPasswordElement element - * - * @name fieldValue - * @param Element el The DOM element for which the value will be returned - * @param Boolean successful true if value returned must be for a successful controls (default is true) - * @type String or Array<String> or null or undefined - * @cat Plugins/Form - */ -$.fieldValue = function(el, successful) { - var n = el.name, t = el.type, tag = el.tagName.toLowerCase(); - if (typeof successful == 'undefined') successful = true; - - if (successful && (!n || el.disabled || t == 'reset' || t == 'button' || - (t == 'checkbox' || t == 'radio') && !el.checked || - (t == 'submit' || t == 'image') && el.form && el.form.clk != el || - tag == 'select' && el.selectedIndex == -1)) - return null; - - if (tag == 'select') { - var index = el.selectedIndex; - if (index < 0) return null; - var a = [], ops = el.options; - var one = (t == 'select-one'); - var max = (one ? index+1 : ops.length); - for(var i=(one ? index : 0); i < max; i++) { - var op = ops[i]; - if (op.selected) { - // extra pain for IE... - var v = $.browser.msie && !(op.attributes['value'].specified) ? op.text : op.value; - if (one) return v; - a.push(v); - } - } - return a; - } - return el.value; -}; - - -/** - * Clears the form data. Takes the following actions on the form's input fields: - * - input text fields will have their 'value' property set to the empty string - * - select elements will have their 'selectedIndex' property set to -1 - * - checkbox and radio inputs will have their 'checked' property set to false - * - inputs of type submit, button, reset, and hidden will *not* be effected - * - button elements will *not* be effected - * - * @example $('form').clearForm(); - * @desc Clears all forms on the page. - * - * @name clearForm - * @type jQuery - * @cat Plugins/Form - */ -$.fn.clearForm = function() { - return this.each(function() { - $('input,select,textarea', this).clearFields(); - }); -}; - -/** - * Clears the selected form elements. Takes the following actions on the matched elements: - * - input text fields will have their 'value' property set to the empty string - * - select elements will have their 'selectedIndex' property set to -1 - * - checkbox and radio inputs will have their 'checked' property set to false - * - inputs of type submit, button, reset, and hidden will *not* be effected - * - button elements will *not* be effected - * - * @example $('.myInputs').clearFields(); - * @desc Clears all inputs with class myInputs - * - * @name clearFields - * @type jQuery - * @cat Plugins/Form - */ -$.fn.clearFields = $.fn.clearInputs = function() { - return this.each(function() { - var t = this.type, tag = this.tagName.toLowerCase(); - if (t == 'text' || t == 'password' || tag == 'textarea') - this.value = ''; - else if (t == 'checkbox' || t == 'radio') - this.checked = false; - else if (tag == 'select') - this.selectedIndex = -1; - }); -}; - - -/** - * Resets the form data. Causes all form elements to be reset to their original value. - * - * @example $('form').resetForm(); - * @desc Resets all forms on the page. - * - * @name resetForm - * @type jQuery - * @cat Plugins/Form - */ -$.fn.resetForm = function() { - return this.each(function() { - // guard against an input with the name of 'reset' - // note that IE reports the reset function as an 'object' - if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) - this.reset(); - }); -}; - - -/** - * Enables or disables any matching elements. - * - * @example $(':radio').enabled(false); - * @desc Disables all radio buttons - * - * @name select - * @type jQuery - * @cat Plugins/Form - */ -$.fn.enable = function(b) { - if (b == undefined) b = true; - return this.each(function() { - this.disabled = !b - }); -}; - -/** - * Checks/unchecks any matching checkboxes or radio buttons and - * selects/deselects and matching option elements. - * - * @example $(':checkbox').select(); - * @desc Checks all checkboxes - * - * @name select - * @type jQuery - * @cat Plugins/Form - */ -$.fn.select = function(select) { - if (select == undefined) select = true; - return this.each(function() { - var t = this.type; - if (t == 'checkbox' || t == 'radio') - this.checked = select; - else if (this.tagName.toLowerCase() == 'option') { - var $sel = $(this).parent('select'); - if (select && $sel[0] && $sel[0].type == 'select-one') { - // deselect all other options - $sel.find('option').select(false); - } - this.selected = select; - } - }); -}; - -})(jQuery); diff --git a/dashboard/js/jquery.isotope.js b/dashboard/js/jquery.isotope.js deleted file mode 100644 index ea4afada..00000000 --- a/dashboard/js/jquery.isotope.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Isotope v1.5.25 - * An exquisite jQuery plugin for magical layouts - * http://isotope.metafizzy.co - * - * Commercial use requires one-time purchase of a commercial license - * http://isotope.metafizzy.co/docs/license.html - * - * Non-commercial use is licensed under the MIT License - * - * Copyright 2013 Metafizzy - */ -(function(a,b,c){"use strict";var d=a.document,e=a.Modernizr,f=function(a){return a.charAt(0).toUpperCase()+a.slice(1)},g="Moz Webkit O Ms".split(" "),h=function(a){var b=d.documentElement.style,c;if(typeof b[a]=="string")return a;a=f(a);for(var e=0,h=g.length;e<h;e++){c=g[e]+a;if(typeof b[c]=="string")return c}},i=h("transform"),j=h("transitionProperty"),k={csstransforms:function(){return!!i},csstransforms3d:function(){var a=!!h("perspective");if(a){var c=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),d="@media ("+c.join("transform-3d),(")+"modernizr)",e=b("<style>"+d+"{#modernizr{height:3px}}"+"</style>").appendTo("head"),f=b('<div id="modernizr" />').appendTo("html");a=f.height()===3,f.remove(),e.remove()}return a},csstransitions:function(){return!!j}},l;if(e)for(l in k)e.hasOwnProperty(l)||e.addTest(l,k[l]);else{e=a.Modernizr={_version:"1.6ish: miniModernizr for Isotope"};var m=" ",n;for(l in k)n=k[l](),e[l]=n,m+=" "+(n?"":"no-")+l;b("html").addClass(m)}if(e.csstransforms){var o=e.csstransforms3d?{translate:function(a){return"translate3d("+a[0]+"px, "+a[1]+"px, 0) "},scale:function(a){return"scale3d("+a+", "+a+", 1) "}}:{translate:function(a){return"translate("+a[0]+"px, "+a[1]+"px) "},scale:function(a){return"scale("+a+") "}},p=function(a,c,d){var e=b.data(a,"isoTransform")||{},f={},g,h={},j;f[c]=d,b.extend(e,f);for(g in e)j=e[g],h[g]=o[g](j);var k=h.translate||"",l=h.scale||"",m=k+l;b.data(a,"isoTransform",e),a.style[i]=m};b.cssNumber.scale=!0,b.cssHooks.scale={set:function(a,b){p(a,"scale",b)},get:function(a,c){var d=b.data(a,"isoTransform");return d&&d.scale?d.scale:1}},b.fx.step.scale=function(a){b.cssHooks.scale.set(a.elem,a.now+a.unit)},b.cssNumber.translate=!0,b.cssHooks.translate={set:function(a,b){p(a,"translate",b)},get:function(a,c){var d=b.data(a,"isoTransform");return d&&d.translate?d.translate:[0,0]}}}var q,r;e.csstransitions&&(q={WebkitTransitionProperty:"webkitTransitionEnd",MozTransitionProperty:"transitionend",OTransitionProperty:"oTransitionEnd otransitionend",transitionProperty:"transitionend"}[j],r=h("transitionDuration"));var s=b.event,t=b.event.handle?"handle":"dispatch",u;s.special.smartresize={setup:function(){b(this).bind("resize",s.special.smartresize.handler)},teardown:function(){b(this).unbind("resize",s.special.smartresize.handler)},handler:function(a,b){var c=this,d=arguments;a.type="smartresize",u&&clearTimeout(u),u=setTimeout(function(){s[t].apply(c,d)},b==="execAsap"?0:100)}},b.fn.smartresize=function(a){return a?this.bind("smartresize",a):this.trigger("smartresize",["execAsap"])},b.Isotope=function(a,c,d){this.element=b(c),this._create(a),this._init(d)};var v=["width","height"],w=b(a);b.Isotope.settings={resizable:!0,layoutMode:"masonry",containerClass:"isotope",itemClass:"isotope-item",hiddenClass:"isotope-hidden",hiddenStyle:{opacity:0,scale:.001},visibleStyle:{opacity:1,scale:1},containerStyle:{position:"relative",overflow:"hidden"},animationEngine:"best-available",animationOptions:{queue:!1,duration:800},sortBy:"original-order",sortAscending:!0,resizesContainer:!0,transformsEnabled:!0,itemPositionDataEnabled:!1},b.Isotope.prototype={_create:function(a){this.options=b.extend({},b.Isotope.settings,a),this.styleQueue=[],this.elemCount=0;var c=this.element[0].style;this.originalStyle={};var d=v.slice(0);for(var e in this.options.containerStyle)d.push(e);for(var f=0,g=d.length;f<g;f++)e=d[f],this.originalStyle[e]=c[e]||"";this.element.css(this.options.containerStyle),this._updateAnimationEngine(),this._updateUsingTransforms();var h={"original-order":function(a,b){return b.elemCount++,b.elemCount},random:function(){return Math.random()}};this.options.getSortData=b.extend(this.options.getSortData,h),this.reloadItems(),this.offset={left:parseInt(this.element.css("padding-left")||0,10),top:parseInt(this.element.css("padding-top")||0,10)};var i=this;setTimeout(function(){i.element.addClass(i.options.containerClass)},0),this.options.resizable&&w.bind("smartresize.isotope",function(){i.resize()}),this.element.delegate("."+this.options.hiddenClass,"click",function(){return!1})},_getAtoms:function(a){var b=this.options.itemSelector,c=b?a.filter(b).add(a.find(b)):a,d={position:"absolute"};return c=c.filter(function(a,b){return b.nodeType===1}),this.usingTransforms&&(d.left=0,d.top=0),c.css(d).addClass(this.options.itemClass),this.updateSortData(c,!0),c},_init:function(a){this.$filteredAtoms=this._filter(this.$allAtoms),this._sort(),this.reLayout(a)},option:function(a){if(b.isPlainObject(a)){this.options=b.extend(!0,this.options,a);var c;for(var d in a)c="_update"+f(d),this[c]&&this[c]()}},_updateAnimationEngine:function(){var a=this.options.animationEngine.toLowerCase().replace(/[ _\-]/g,""),b;switch(a){case"css":case"none":b=!1;break;case"jquery":b=!0;break;default:b=!e.csstransitions}this.isUsingJQueryAnimation=b,this._updateUsingTransforms()},_updateTransformsEnabled:function(){this._updateUsingTransforms()},_updateUsingTransforms:function(){var a=this.usingTransforms=this.options.transformsEnabled&&e.csstransforms&&e.csstransitions&&!this.isUsingJQueryAnimation;a||(delete this.options.hiddenStyle.scale,delete this.options.visibleStyle.scale),this.getPositionStyles=a?this._translate:this._positionAbs},_filter:function(a){var b=this.options.filter===""?"*":this.options.filter;if(!b)return a;var c=this.options.hiddenClass,d="."+c,e=a.filter(d),f=e;if(b!=="*"){f=e.filter(b);var g=a.not(d).not(b).addClass(c);this.styleQueue.push({$el:g,style:this.options.hiddenStyle})}return this.styleQueue.push({$el:f,style:this.options.visibleStyle}),f.removeClass(c),a.filter(b)},updateSortData:function(a,c){var d=this,e=this.options.getSortData,f,g;a.each(function(){f=b(this),g={};for(var a in e)!c&&a==="original-order"?g[a]=b.data(this,"isotope-sort-data")[a]:g[a]=e[a](f,d);b.data(this,"isotope-sort-data",g)})},_sort:function(){var a=this.options.sortBy,b=this._getSorter,c=this.options.sortAscending?1:-1,d=function(d,e){var f=b(d,a),g=b(e,a);return f===g&&a!=="original-order"&&(f=b(d,"original-order"),g=b(e,"original-order")),(f>g?1:f<g?-1:0)*c};this.$filteredAtoms.sort(d)},_getSorter:function(a,c){return b.data(a,"isotope-sort-data")[c]},_translate:function(a,b){return{translate:[a,b]}},_positionAbs:function(a,b){return{left:a,top:b}},_pushPosition:function(a,b,c){b=Math.round(b+this.offset.left),c=Math.round(c+this.offset.top);var d=this.getPositionStyles(b,c);this.styleQueue.push({$el:a,style:d}),this.options.itemPositionDataEnabled&&a.data("isotope-item-position",{x:b,y:c})},layout:function(a,b){var c=this.options.layoutMode;this["_"+c+"Layout"](a);if(this.options.resizesContainer){var d=this["_"+c+"GetContainerSize"]();this.styleQueue.push({$el:this.element,style:d})}this._processStyleQueue(a,b),this.isLaidOut=!0},_processStyleQueue:function(a,c){var d=this.isLaidOut?this.isUsingJQueryAnimation?"animate":"css":"css",f=this.options.animationOptions,g=this.options.onLayout,h,i,j,k;i=function(a,b){b.$el[d](b.style,f)};if(this._isInserting&&this.isUsingJQueryAnimation)i=function(a,b){h=b.$el.hasClass("no-transition")?"css":d,b.$el[h](b.style,f)};else if(c||g||f.complete){var l=!1,m=[c,g,f.complete],n=this;j=!0,k=function(){if(l)return;var b;for(var c=0,d=m.length;c<d;c++)b=m[c],typeof b=="function"&&b.call(n.element,a,n);l=!0};if(this.isUsingJQueryAnimation&&d==="animate")f.complete=k,j=!1;else if(e.csstransitions){var o=0,p=this.styleQueue[0],s=p&&p.$el,t;while(!s||!s.length){t=this.styleQueue[o++];if(!t)return;s=t.$el}var u=parseFloat(getComputedStyle(s[0])[r]);u>0&&(i=function(a,b){b.$el[d](b.style,f).one(q,k)},j=!1)}}b.each(this.styleQueue,i),j&&k(),this.styleQueue=[]},resize:function(){this["_"+this.options.layoutMode+"ResizeChanged"]()&&this.reLayout()},reLayout:function(a){this["_"+this.options.layoutMode+"Reset"](),this.layout(this.$filteredAtoms,a)},addItems:function(a,b){var c=this._getAtoms(a);this.$allAtoms=this.$allAtoms.add(c),b&&b(c)},insert:function(a,b){this.element.append(a);var c=this;this.addItems(a,function(a){var d=c._filter(a);c._addHideAppended(d),c._sort(),c.reLayout(),c._revealAppended(d,b)})},appended:function(a,b){var c=this;this.addItems(a,function(a){c._addHideAppended(a),c.layout(a),c._revealAppended(a,b)})},_addHideAppended:function(a){this.$filteredAtoms=this.$filteredAtoms.add(a),a.addClass("no-transition"),this._isInserting=!0,this.styleQueue.push({$el:a,style:this.options.hiddenStyle})},_revealAppended:function(a,b){var c=this;setTimeout(function(){a.removeClass("no-transition"),c.styleQueue.push({$el:a,style:c.options.visibleStyle}),c._isInserting=!1,c._processStyleQueue(a,b)},10)},reloadItems:function(){this.$allAtoms=this._getAtoms(this.element.children())},remove:function(a,b){this.$allAtoms=this.$allAtoms.not(a),this.$filteredAtoms=this.$filteredAtoms.not(a);var c=this,d=function(){a.remove(),b&&b.call(c.element)};a.filter(":not(."+this.options.hiddenClass+")").length?(this.styleQueue.push({$el:a,style:this.options.hiddenStyle}),this._sort(),this.reLayout(d)):d()},shuffle:function(a){this.updateSortData(this.$allAtoms),this.options.sortBy="random",this._sort(),this.reLayout(a)},destroy:function(){var a=this.usingTransforms,b=this.options;this.$allAtoms.removeClass(b.hiddenClass+" "+b.itemClass).each(function(){var b=this.style;b.position="",b.top="",b.left="",b.opacity="",a&&(b[i]="")});var c=this.element[0].style;for(var d in this.originalStyle)c[d]=this.originalStyle[d];this.element.unbind(".isotope").undelegate("."+b.hiddenClass,"click").removeClass(b.containerClass).removeData("isotope"),w.unbind(".isotope")},_getSegments:function(a){var b=this.options.layoutMode,c=a?"rowHeight":"columnWidth",d=a?"height":"width",e=a?"rows":"cols",g=this.element[d](),h,i=this.options[b]&&this.options[b][c]||this.$filteredAtoms["outer"+f(d)](!0)||g;h=Math.floor(g/i),h=Math.max(h,1),this[b][e]=h,this[b][c]=i},_checkIfSegmentsChanged:function(a){var b=this.options.layoutMode,c=a?"rows":"cols",d=this[b][c];return this._getSegments(a),this[b][c]!==d},_masonryReset:function(){this.masonry={},this._getSegments();var a=this.masonry.cols;this.masonry.colYs=[];while(a--)this.masonry.colYs.push(0)},_masonryLayout:function(a){var c=this,d=c.masonry;a.each(function(){var a=b(this),e=Math.ceil(a.outerWidth(!0)/d.columnWidth);e=Math.min(e,d.cols);if(e===1)c._masonryPlaceBrick(a,d.colYs);else{var f=d.cols+1-e,g=[],h,i;for(i=0;i<f;i++)h=d.colYs.slice(i,i+e),g[i]=Math.max.apply(Math,h);c._masonryPlaceBrick(a,g)}})},_masonryPlaceBrick:function(a,b){var c=Math.min.apply(Math,b),d=0;for(var e=0,f=b.length;e<f;e++)if(b[e]===c){d=e;break}var g=this.masonry.columnWidth*d,h=c;this._pushPosition(a,g,h);var i=c+a.outerHeight(!0),j=this.masonry.cols+1-f;for(e=0;e<j;e++)this.masonry.colYs[d+e]=i},_masonryGetContainerSize:function(){var a=Math.max.apply(Math,this.masonry.colYs);return{height:a}},_masonryResizeChanged:function(){return this._checkIfSegmentsChanged()},_fitRowsReset:function(){this.fitRows={x:0,y:0,height:0}},_fitRowsLayout:function(a){var c=this,d=this.element.width(),e=this.fitRows;a.each(function(){var a=b(this),f=a.outerWidth(!0),g=a.outerHeight(!0);e.x!==0&&f+e.x>d&&(e.x=0,e.y=e.height),c._pushPosition(a,e.x,e.y),e.height=Math.max(e.y+g,e.height),e.x+=f})},_fitRowsGetContainerSize:function(){return{height:this.fitRows.height}},_fitRowsResizeChanged:function(){return!0},_cellsByRowReset:function(){this.cellsByRow={index:0},this._getSegments(),this._getSegments(!0)},_cellsByRowLayout:function(a){var c=this,d=this.cellsByRow;a.each(function(){var a=b(this),e=d.index%d.cols,f=Math.floor(d.index/d.cols),g=(e+.5)*d.columnWidth-a.outerWidth(!0)/2,h=(f+.5)*d.rowHeight-a.outerHeight(!0)/2;c._pushPosition(a,g,h),d.index++})},_cellsByRowGetContainerSize:function(){return{height:Math.ceil(this.$filteredAtoms.length/this.cellsByRow.cols)*this.cellsByRow.rowHeight+this.offset.top}},_cellsByRowResizeChanged:function(){return this._checkIfSegmentsChanged()},_straightDownReset:function(){this.straightDown={y:0}},_straightDownLayout:function(a){var c=this;a.each(function(a){var d=b(this);c._pushPosition(d,0,c.straightDown.y),c.straightDown.y+=d.outerHeight(!0)})},_straightDownGetContainerSize:function(){return{height:this.straightDown.y}},_straightDownResizeChanged:function(){return!0},_masonryHorizontalReset:function(){this.masonryHorizontal={},this._getSegments(!0);var a=this.masonryHorizontal.rows;this.masonryHorizontal.rowXs=[];while(a--)this.masonryHorizontal.rowXs.push(0)},_masonryHorizontalLayout:function(a){var c=this,d=c.masonryHorizontal;a.each(function(){var a=b(this),e=Math.ceil(a.outerHeight(!0)/d.rowHeight);e=Math.min(e,d.rows);if(e===1)c._masonryHorizontalPlaceBrick(a,d.rowXs);else{var f=d.rows+1-e,g=[],h,i;for(i=0;i<f;i++)h=d.rowXs.slice(i,i+e),g[i]=Math.max.apply(Math,h);c._masonryHorizontalPlaceBrick(a,g)}})},_masonryHorizontalPlaceBrick:function(a,b){var c=Math.min.apply(Math,b),d=0;for(var e=0,f=b.length;e<f;e++)if(b[e]===c){d=e;break}var g=c,h=this.masonryHorizontal.rowHeight*d;this._pushPosition(a,g,h);var i=c+a.outerWidth(!0),j=this.masonryHorizontal.rows+1-f;for(e=0;e<j;e++)this.masonryHorizontal.rowXs[d+e]=i},_masonryHorizontalGetContainerSize:function(){var a=Math.max.apply(Math,this.masonryHorizontal.rowXs);return{width:a}},_masonryHorizontalResizeChanged:function(){return this._checkIfSegmentsChanged(!0)},_fitColumnsReset:function(){this.fitColumns={x:0,y:0,width:0}},_fitColumnsLayout:function(a){var c=this,d=this.element.height(),e=this.fitColumns;a.each(function(){var a=b(this),f=a.outerWidth(!0),g=a.outerHeight(!0);e.y!==0&&g+e.y>d&&(e.x=e.width,e.y=0),c._pushPosition(a,e.x,e.y),e.width=Math.max(e.x+f,e.width),e.y+=g})},_fitColumnsGetContainerSize:function(){return{width:this.fitColumns.width}},_fitColumnsResizeChanged:function(){return!0},_cellsByColumnReset:function(){this.cellsByColumn={index:0},this._getSegments(),this._getSegments(!0)},_cellsByColumnLayout:function(a){var c=this,d=this.cellsByColumn;a.each(function(){var a=b(this),e=Math.floor(d.index/d.rows),f=d.index%d.rows,g=(e+.5)*d.columnWidth-a.outerWidth(!0)/2,h=(f+.5)*d.rowHeight-a.outerHeight(!0)/2;c._pushPosition(a,g,h),d.index++})},_cellsByColumnGetContainerSize:function(){return{width:Math.ceil(this.$filteredAtoms.length/this.cellsByColumn.rows)*this.cellsByColumn.columnWidth}},_cellsByColumnResizeChanged:function(){return this._checkIfSegmentsChanged(!0)},_straightAcrossReset:function(){this.straightAcross={x:0}},_straightAcrossLayout:function(a){var c=this;a.each(function(a){var d=b(this);c._pushPosition(d,c.straightAcross.x,0),c.straightAcross.x+=d.outerWidth(!0)})},_straightAcrossGetContainerSize:function(){return{width:this.straightAcross.x}},_straightAcrossResizeChanged:function(){return!0}},b.fn.imagesLoaded=function(a){function h(){a.call(c,d)}function i(a){var c=a.target;c.src!==f&&b.inArray(c,g)===-1&&(g.push(c),--e<=0&&(setTimeout(h),d.unbind(".imagesLoaded",i)))}var c=this,d=c.find("img").add(c.filter("img")),e=d.length,f="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",g=[];return e||h(),d.bind("load.imagesLoaded error.imagesLoaded",i).each(function(){var a=this.src;this.src=f,this.src=a}),c};var x=function(b){a.console&&a.console.error(b)};b.fn.isotope=function(a,c){if(typeof a=="string"){var d=Array.prototype.slice.call(arguments,1);this.each(function(){var c=b.data(this,"isotope");if(!c){x("cannot call methods on isotope prior to initialization; attempted to call method '"+a+"'");return}if(!b.isFunction(c[a])||a.charAt(0)==="_"){x("no such method '"+a+"' for isotope instance");return}c[a].apply(c,d)})}else this.each(function(){var d=b.data(this,"isotope");d?(d.option(a),d._init(c)):b.data(this,"isotope",new b.Isotope(a,this,c))});return this}})(window,jQuery); \ No newline at end of file diff --git a/dashboard/js/jquery.localscroll-1.2.7-min.js b/dashboard/js/jquery.localscroll-1.2.7-min.js deleted file mode 100644 index fa583a45..00000000 --- a/dashboard/js/jquery.localscroll-1.2.7-min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * jQuery.LocalScroll - Animated scrolling navigation, using anchors. - * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com - * Dual licensed under MIT and GPL. - * Date: 3/11/2009 - * @author Ariel Flesler - * @version 1.2.7 - **/ -;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery); \ No newline at end of file diff --git a/dashboard/js/jquery.nav.js b/dashboard/js/jquery.nav.js deleted file mode 100644 index 0f840e4d..00000000 --- a/dashboard/js/jquery.nav.js +++ /dev/null @@ -1,223 +0,0 @@ -/* - * jQuery One Page Nav Plugin - * http://github.com/davist11/jQuery-One-Page-Nav - * - * Copyright (c) 2010 Trevor Davis (http://trevordavis.net) - * Dual licensed under the MIT and GPL licenses. - * Uses the same license as jQuery, see: - * http://jquery.org/license - * - * @version 2.2 - * - * Example usage: - * $('#nav').onePageNav({ - * currentClass: 'current', - * changeHash: false, - * scrollSpeed: 750 - * }); - */ - -;(function($, window, document, undefined){ - - // our plugin constructor - var OnePageNav = function(elem, options){ - this.elem = elem; - this.$elem = $(elem); - this.options = options; - this.metadata = this.$elem.data('plugin-options'); - this.$nav = this.$elem.find('a'); - this.$win = $(window); - this.sections = {}; - this.didScroll = false; - this.$doc = $(document); - this.docHeight = this.$doc.height(); - }; - - // the plugin prototype - OnePageNav.prototype = { - defaults: { - currentClass: 'current', - changeHash: false, - easing: 'swing', - filter: '', - scrollSpeed: 750, - scrollOffset: 0, - scrollThreshold: 0.5, - begin: false, - end: false, - scrollChange: false - }, - - init: function() { - var self = this; - - // Introduce defaults that can be extended either - // globally or using an object literal. - self.config = $.extend({}, self.defaults, self.options, self.metadata); - - //Filter any links out of the nav - if(self.config.filter !== '') { - self.$nav = self.$nav.filter(self.config.filter); - } - - //Handle clicks on the nav - self.$nav.on('click.onePageNav', $.proxy(self.handleClick, self)); - - //Get the section positions - self.getPositions(); - - //Handle scroll changes - self.bindInterval(); - - //Update the positions on resize too - self.$win.on('resize.onePageNav', $.proxy(self.getPositions, self)); - - return this; - }, - - adjustNav: function(self, $parent) { - self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass); - $parent.addClass(self.config.currentClass); - }, - - bindInterval: function() { - var self = this; - var docHeight; - - self.$win.on('scroll.onePageNav', function() { - self.didScroll = true; - }); - - self.t = setInterval(function() { - docHeight = self.$doc.height(); - - //If it was scrolled - if(self.didScroll) { - self.didScroll = false; - self.scrollChange(); - } - - //If the document height changes - if(docHeight !== self.docHeight) { - self.docHeight = docHeight; - self.getPositions(); - } - }, 250); - }, - - getHash: function($link) { - return $link.attr('href').split('#')[1]; - }, - - getPositions: function() { - var self = this; - var linkHref; - var topPos; - var $target; - - self.$nav.each(function() { - linkHref = self.getHash($(this)); - $target = $('#' + linkHref); - - if($target.length) { - topPos = $target.offset().top; - self.sections[linkHref] = Math.round(topPos) - self.config.scrollOffset; - } - }); - }, - - getSection: function(windowPos) { - var returnValue = null; - var windowHeight = Math.round(this.$win.height() * this.config.scrollThreshold); - - for(var section in this.sections) { - if((this.sections[section] - windowHeight) < windowPos) { - returnValue = section; - } - } - - return returnValue; - }, - - handleClick: function(e) { - var self = this; - var $link = $(e.currentTarget); - var $parent = $link.parent(); - var newLoc = '#' + self.getHash($link); - - if(!$parent.hasClass(self.config.currentClass)) { - //Start callback - if(self.config.begin) { - self.config.begin(); - } - - //Change the highlighted nav item - self.adjustNav(self, $parent); - - //Removing the auto-adjust on scroll - self.unbindInterval(); - - //Scroll to the correct position - $.scrollTo(newLoc, self.config.scrollSpeed, { - axis: 'y', - easing: self.config.easing, - offset: { - top: -self.config.scrollOffset - }, - onAfter: function() { - //Do we need to change the hash? - if(self.config.changeHash) { - window.location.hash = newLoc; - } - - //Add the auto-adjust on scroll back in - self.bindInterval(); - - //End callback - if(self.config.end) { - self.config.end(); - } - } - }); - } - - e.preventDefault(); - }, - - scrollChange: function() { - var windowTop = this.$win.scrollTop(); - var position = this.getSection(windowTop); - var $parent; - - //If the position is set - if(position !== null) { - $parent = this.$elem.find('a[href$="#' + position + '"]').parent(); - - //If it's not already the current section - if(!$parent.hasClass(this.config.currentClass)) { - //Change the highlighted nav item - this.adjustNav(this, $parent); - - //If there is a scrollChange callback - if(this.config.scrollChange) { - this.config.scrollChange($parent); - } - } - } - }, - - unbindInterval: function() { - clearInterval(this.t); - this.$win.unbind('scroll.onePageNav'); - } - }; - - OnePageNav.defaults = OnePageNav.prototype.defaults; - - $.fn.onePageNav = function(options) { - return this.each(function() { - new OnePageNav(this, options).init(); - }); - }; - -})( jQuery, window , document ); \ No newline at end of file diff --git a/dashboard/js/jquery.scrollTo-1.4.3.1-min.js b/dashboard/js/jquery.scrollTo-1.4.3.1-min.js deleted file mode 100644 index 8b5f447d..00000000 --- a/dashboard/js/jquery.scrollTo-1.4.3.1-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) 2007-2012 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com - * Dual licensed under MIT and GPL. - * @author Ariel Flesler - * @version 1.4.3.1 - */ -;(function($){var h=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};h.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};h.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(e,f,g){if(typeof f=='object'){g=f;f=0}if(typeof g=='function')g={onAfter:g};if(e=='max')e=9e9;g=$.extend({},h.defaults,g);f=f||g.duration;g.queue=g.queue&&g.axis.length>1;if(g.queue)f/=2;g.offset=both(g.offset);g.over=both(g.over);return this._scrollable().each(function(){if(e==null)return;var d=this,$elem=$(d),targ=e,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(g.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=h.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(g.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=g.offset[pos]||0;if(g.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*g.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(g.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&g.queue){if(old!=attr[key])animate(g.onAfterFirst);delete attr[key]}});animate(g.onAfter);function animate(a){$elem.animate(attr,f,g.easing,a&&function(){a.call(this,e,g)})}}).end()};h.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); \ No newline at end of file diff --git a/dashboard/js/jquery.scrollbar.js b/dashboard/js/jquery.scrollbar.js deleted file mode 100644 index ff35cb9e..00000000 --- a/dashboard/js/jquery.scrollbar.js +++ /dev/null @@ -1,1576 +0,0 @@ -/* perfect-scrollbar v0.6.11 */ -(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<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ -'use strict'; - -var ps = require('../main'); -var psInstances = require('../plugin/instances'); - -function mountJQuery(jQuery) { - jQuery.fn.perfectScrollbar = function (settingOrCommand) { - return this.each(function () { - if (typeof settingOrCommand === 'object' || - typeof settingOrCommand === 'undefined') { - // If it's an object or none, initialize. - var settings = settingOrCommand; - - if (!psInstances.get(this)) { - ps.initialize(this, settings); - } - } else { - // Unless, it may be a command. - var command = settingOrCommand; - - if (command === 'update') { - ps.update(this); - } else if (command === 'destroy') { - ps.destroy(this); - } - } - }); - }; -} - -if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], mountJQuery); -} else { - var jq = window.jQuery ? window.jQuery : window.$; - if (typeof jq !== 'undefined') { - mountJQuery(jq); - } -} - -module.exports = mountJQuery; - -},{"../main":7,"../plugin/instances":18}],2:[function(require,module,exports){ -'use strict'; - -function oldAdd(element, className) { - var classes = element.className.split(' '); - if (classes.indexOf(className) < 0) { - classes.push(className); - } - element.className = classes.join(' '); -} - -function oldRemove(element, className) { - var classes = element.className.split(' '); - var idx = classes.indexOf(className); - if (idx >= 0) { - classes.splice(idx, 1); - } - element.className = classes.join(' '); -} - -exports.add = function (element, className) { - if (element.classList) { - element.classList.add(className); - } else { - oldAdd(element, className); - } -}; - -exports.remove = function (element, className) { - if (element.classList) { - element.classList.remove(className); - } else { - oldRemove(element, className); - } -}; - -exports.list = function (element) { - if (element.classList) { - return Array.prototype.slice.apply(element.classList); - } else { - return element.className.split(' '); - } -}; - -},{}],3:[function(require,module,exports){ -'use strict'; - -var DOM = {}; - -DOM.e = function (tagName, className) { - var element = document.createElement(tagName); - element.className = className; - return element; -}; - -DOM.appendTo = function (child, parent) { - parent.appendChild(child); - return child; -}; - -function cssGet(element, styleName) { - return window.getComputedStyle(element)[styleName]; -} - -function cssSet(element, styleName, styleValue) { - if (typeof styleValue === 'number') { - styleValue = styleValue.toString() + 'px'; - } - element.style[styleName] = styleValue; - return element; -} - -function cssMultiSet(element, obj) { - for (var key in obj) { - var val = obj[key]; - if (typeof val === 'number') { - val = val.toString() + 'px'; - } - element.style[key] = val; - } - return element; -} - -DOM.css = function (element, styleNameOrObject, styleValue) { - if (typeof styleNameOrObject === 'object') { - // multiple set with object - return cssMultiSet(element, styleNameOrObject); - } else { - if (typeof styleValue === 'undefined') { - return cssGet(element, styleNameOrObject); - } else { - return cssSet(element, styleNameOrObject, styleValue); - } - } -}; - -DOM.matches = function (element, query) { - if (typeof element.matches !== 'undefined') { - return element.matches(query); - } else { - if (typeof element.matchesSelector !== 'undefined') { - return element.matchesSelector(query); - } else if (typeof element.webkitMatchesSelector !== 'undefined') { - return element.webkitMatchesSelector(query); - } else if (typeof element.mozMatchesSelector !== 'undefined') { - return element.mozMatchesSelector(query); - } else if (typeof element.msMatchesSelector !== 'undefined') { - return element.msMatchesSelector(query); - } - } -}; - -DOM.remove = function (element) { - if (typeof element.remove !== 'undefined') { - element.remove(); - } else { - if (element.parentNode) { - element.parentNode.removeChild(element); - } - } -}; - -DOM.queryChildren = function (element, selector) { - return Array.prototype.filter.call(element.childNodes, function (child) { - return DOM.matches(child, selector); - }); -}; - -module.exports = DOM; - -},{}],4:[function(require,module,exports){ -'use strict'; - -var EventElement = function (element) { - this.element = element; - this.events = {}; -}; - -EventElement.prototype.bind = function (eventName, handler) { - if (typeof this.events[eventName] === 'undefined') { - this.events[eventName] = []; - } - this.events[eventName].push(handler); - this.element.addEventListener(eventName, handler, false); -}; - -EventElement.prototype.unbind = function (eventName, handler) { - var isHandlerProvided = (typeof handler !== 'undefined'); - this.events[eventName] = this.events[eventName].filter(function (hdlr) { - if (isHandlerProvided && hdlr !== handler) { - return true; - } - this.element.removeEventListener(eventName, hdlr, false); - return false; - }, this); -}; - -EventElement.prototype.unbindAll = function () { - for (var name in this.events) { - this.unbind(name); - } -}; - -var EventManager = function () { - this.eventElements = []; -}; - -EventManager.prototype.eventElement = function (element) { - var ee = this.eventElements.filter(function (eventElement) { - return eventElement.element === element; - })[0]; - if (typeof ee === 'undefined') { - ee = new EventElement(element); - this.eventElements.push(ee); - } - return ee; -}; - -EventManager.prototype.bind = function (element, eventName, handler) { - this.eventElement(element).bind(eventName, handler); -}; - -EventManager.prototype.unbind = function (element, eventName, handler) { - this.eventElement(element).unbind(eventName, handler); -}; - -EventManager.prototype.unbindAll = function () { - for (var i = 0; i < this.eventElements.length; i++) { - this.eventElements[i].unbindAll(); - } -}; - -EventManager.prototype.once = function (element, eventName, handler) { - var ee = this.eventElement(element); - var onceHandler = function (e) { - ee.unbind(eventName, onceHandler); - handler(e); - }; - ee.bind(eventName, onceHandler); -}; - -module.exports = EventManager; - -},{}],5:[function(require,module,exports){ -'use strict'; - -module.exports = (function () { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); - } - return function () { - return s4() + s4() + '-' + s4() + '-' + s4() + '-' + - s4() + '-' + s4() + s4() + s4(); - }; -})(); - -},{}],6:[function(require,module,exports){ -'use strict'; - -var cls = require('./class'); -var dom = require('./dom'); - -var toInt = exports.toInt = function (x) { - return parseInt(x, 10) || 0; -}; - -var clone = exports.clone = function (obj) { - if (obj === null) { - return null; - } else if (obj.constructor === Array) { - return obj.map(clone); - } else if (typeof obj === 'object') { - var result = {}; - for (var key in obj) { - result[key] = clone(obj[key]); - } - return result; - } else { - return obj; - } -}; - -exports.extend = function (original, source) { - var result = clone(original); - for (var key in source) { - result[key] = clone(source[key]); - } - return result; -}; - -exports.isEditable = function (el) { - return dom.matches(el, "input,[contenteditable]") || - dom.matches(el, "select,[contenteditable]") || - dom.matches(el, "textarea,[contenteditable]") || - dom.matches(el, "button,[contenteditable]"); -}; - -exports.removePsClasses = function (element) { - var clsList = cls.list(element); - for (var i = 0; i < clsList.length; i++) { - var className = clsList[i]; - if (className.indexOf('ps-') === 0) { - cls.remove(element, className); - } - } -}; - -exports.outerWidth = function (element) { - return toInt(dom.css(element, 'width')) + - toInt(dom.css(element, 'paddingLeft')) + - toInt(dom.css(element, 'paddingRight')) + - toInt(dom.css(element, 'borderLeftWidth')) + - toInt(dom.css(element, 'borderRightWidth')); -}; - -exports.startScrolling = function (element, axis) { - cls.add(element, 'ps-in-scrolling'); - if (typeof axis !== 'undefined') { - cls.add(element, 'ps-' + axis); - } else { - cls.add(element, 'ps-x'); - cls.add(element, 'ps-y'); - } -}; - -exports.stopScrolling = function (element, axis) { - cls.remove(element, 'ps-in-scrolling'); - if (typeof axis !== 'undefined') { - cls.remove(element, 'ps-' + axis); - } else { - cls.remove(element, 'ps-x'); - cls.remove(element, 'ps-y'); - } -}; - -exports.env = { - isWebKit: 'WebkitAppearance' in document.documentElement.style, - supportsTouch: (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch), - supportsIePointer: window.navigator.msMaxTouchPoints !== null -}; - -},{"./class":2,"./dom":3}],7:[function(require,module,exports){ -'use strict'; - -var destroy = require('./plugin/destroy'); -var initialize = require('./plugin/initialize'); -var update = require('./plugin/update'); - -module.exports = { - initialize: initialize, - update: update, - destroy: destroy -}; - -},{"./plugin/destroy":9,"./plugin/initialize":17,"./plugin/update":21}],8:[function(require,module,exports){ -'use strict'; - -module.exports = { - handlers: ['click-rail', 'drag-scrollbar', 'keyboard', 'wheel', 'touch'], - maxScrollbarLength: null, - minScrollbarLength: null, - scrollXMarginOffset: 0, - scrollYMarginOffset: 0, - stopPropagationOnClick: true, - suppressScrollX: false, - suppressScrollY: false, - swipePropagation: true, - useBothWheelAxes: false, - wheelPropagation: false, - wheelSpeed: 1, - theme: 'default' -}; - -},{}],9:[function(require,module,exports){ -'use strict'; - -var _ = require('../lib/helper'); -var dom = require('../lib/dom'); -var instances = require('./instances'); - -module.exports = function (element) { - var i = instances.get(element); - - if (!i) { - return; - } - - i.event.unbindAll(); - dom.remove(i.scrollbarX); - dom.remove(i.scrollbarY); - dom.remove(i.scrollbarXRail); - dom.remove(i.scrollbarYRail); - _.removePsClasses(element); - - instances.remove(element); -}; - -},{"../lib/dom":3,"../lib/helper":6,"./instances":18}],10:[function(require,module,exports){ -'use strict'; - -var _ = require('../../lib/helper'); -var instances = require('../instances'); -var updateGeometry = require('../update-geometry'); -var updateScroll = require('../update-scroll'); - -function bindClickRailHandler(element, i) { - function pageOffset(el) { - return el.getBoundingClientRect(); - } - var stopPropagation = function (e) { e.stopPropagation(); }; - - if (i.settings.stopPropagationOnClick) { - i.event.bind(i.scrollbarY, 'click', stopPropagation); - } - i.event.bind(i.scrollbarYRail, 'click', function (e) { - var halfOfScrollbarLength = _.toInt(i.scrollbarYHeight / 2); - var positionTop = i.railYRatio * (e.pageY - window.pageYOffset - pageOffset(i.scrollbarYRail).top - halfOfScrollbarLength); - var maxPositionTop = i.railYRatio * (i.railYHeight - i.scrollbarYHeight); - var positionRatio = positionTop / maxPositionTop; - - if (positionRatio < 0) { - positionRatio = 0; - } else if (positionRatio > 1) { - positionRatio = 1; - } - - updateScroll(element, 'top', (i.contentHeight - i.containerHeight) * positionRatio); - updateGeometry(element); - - e.stopPropagation(); - }); - - if (i.settings.stopPropagationOnClick) { - i.event.bind(i.scrollbarX, 'click', stopPropagation); - } - i.event.bind(i.scrollbarXRail, 'click', function (e) { - var halfOfScrollbarLength = _.toInt(i.scrollbarXWidth / 2); - var positionLeft = i.railXRatio * (e.pageX - window.pageXOffset - pageOffset(i.scrollbarXRail).left - halfOfScrollbarLength); - var maxPositionLeft = i.railXRatio * (i.railXWidth - i.scrollbarXWidth); - var positionRatio = positionLeft / maxPositionLeft; - - if (positionRatio < 0) { - positionRatio = 0; - } else if (positionRatio > 1) { - positionRatio = 1; - } - - updateScroll(element, 'left', ((i.contentWidth - i.containerWidth) * positionRatio) - i.negativeScrollAdjustment); - updateGeometry(element); - - e.stopPropagation(); - }); -} - -module.exports = function (element) { - var i = instances.get(element); - bindClickRailHandler(element, i); -}; - -},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],11:[function(require,module,exports){ -'use strict'; - -var _ = require('../../lib/helper'); -var dom = require('../../lib/dom'); -var instances = require('../instances'); -var updateGeometry = require('../update-geometry'); -var updateScroll = require('../update-scroll'); - -function bindMouseScrollXHandler(element, i) { - var currentLeft = null; - var currentPageX = null; - - function updateScrollLeft(deltaX) { - var newLeft = currentLeft + (deltaX * i.railXRatio); - var maxLeft = Math.max(0, i.scrollbarXRail.getBoundingClientRect().left) + (i.railXRatio * (i.railXWidth - i.scrollbarXWidth)); - - if (newLeft < 0) { - i.scrollbarXLeft = 0; - } else if (newLeft > maxLeft) { - i.scrollbarXLeft = maxLeft; - } else { - i.scrollbarXLeft = newLeft; - } - - var scrollLeft = _.toInt(i.scrollbarXLeft * (i.contentWidth - i.containerWidth) / (i.containerWidth - (i.railXRatio * i.scrollbarXWidth))) - i.negativeScrollAdjustment; - updateScroll(element, 'left', scrollLeft); - } - - var mouseMoveHandler = function (e) { - updateScrollLeft(e.pageX - currentPageX); - updateGeometry(element); - e.stopPropagation(); - e.preventDefault(); - }; - - var mouseUpHandler = function () { - _.stopScrolling(element, 'x'); - i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler); - }; - - i.event.bind(i.scrollbarX, 'mousedown', function (e) { - currentPageX = e.pageX; - currentLeft = _.toInt(dom.css(i.scrollbarX, 'left')) * i.railXRatio; - _.startScrolling(element, 'x'); - - i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler); - i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler); - - e.stopPropagation(); - e.preventDefault(); - }); -} - -function bindMouseScrollYHandler(element, i) { - var currentTop = null; - var currentPageY = null; - - function updateScrollTop(deltaY) { - var newTop = currentTop + (deltaY * i.railYRatio); - var maxTop = Math.max(0, i.scrollbarYRail.getBoundingClientRect().top) + (i.railYRatio * (i.railYHeight - i.scrollbarYHeight)); - - if (newTop < 0) { - i.scrollbarYTop = 0; - } else if (newTop > maxTop) { - i.scrollbarYTop = maxTop; - } else { - i.scrollbarYTop = newTop; - } - - var scrollTop = _.toInt(i.scrollbarYTop * (i.contentHeight - i.containerHeight) / (i.containerHeight - (i.railYRatio * i.scrollbarYHeight))); - updateScroll(element, 'top', scrollTop); - } - - var mouseMoveHandler = function (e) { - updateScrollTop(e.pageY - currentPageY); - updateGeometry(element); - e.stopPropagation(); - e.preventDefault(); - }; - - var mouseUpHandler = function () { - _.stopScrolling(element, 'y'); - i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler); - }; - - i.event.bind(i.scrollbarY, 'mousedown', function (e) { - currentPageY = e.pageY; - currentTop = _.toInt(dom.css(i.scrollbarY, 'top')) * i.railYRatio; - _.startScrolling(element, 'y'); - - i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler); - i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler); - - e.stopPropagation(); - e.preventDefault(); - }); -} - -module.exports = function (element) { - var i = instances.get(element); - bindMouseScrollXHandler(element, i); - bindMouseScrollYHandler(element, i); -}; - -},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],12:[function(require,module,exports){ -'use strict'; - -var _ = require('../../lib/helper'); -var dom = require('../../lib/dom'); -var instances = require('../instances'); -var updateGeometry = require('../update-geometry'); -var updateScroll = require('../update-scroll'); - -function bindKeyboardHandler(element, i) { - var hovered = false; - i.event.bind(element, 'mouseenter', function () { - hovered = true; - }); - i.event.bind(element, 'mouseleave', function () { - hovered = false; - }); - - var shouldPrevent = false; - function shouldPreventDefault(deltaX, deltaY) { - var scrollTop = element.scrollTop; - if (deltaX === 0) { - if (!i.scrollbarYActive) { - return false; - } - if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) { - return !i.settings.wheelPropagation; - } - } - - var scrollLeft = element.scrollLeft; - if (deltaY === 0) { - if (!i.scrollbarXActive) { - return false; - } - if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) { - return !i.settings.wheelPropagation; - } - } - return true; - } - - i.event.bind(i.ownerDocument, 'keydown', function (e) { - if (e.isDefaultPrevented && e.isDefaultPrevented()) { - return; - } - - var focused = dom.matches(i.scrollbarX, ':focus') || - dom.matches(i.scrollbarY, ':focus'); - - if (!hovered && !focused) { - return; - } - - var activeElement = document.activeElement ? document.activeElement : i.ownerDocument.activeElement; - if (activeElement) { - if (activeElement.tagName === 'IFRAME') { - activeElement = activeElement.contentDocument.activeElement; - } else { - // go deeper if element is a webcomponent - while (activeElement.shadowRoot) { - activeElement = activeElement.shadowRoot.activeElement; - } - } - if (_.isEditable(activeElement)) { - return; - } - } - - var deltaX = 0; - var deltaY = 0; - - switch (e.which) { - case 37: // left - deltaX = -30; - break; - case 38: // up - deltaY = 30; - break; - case 39: // right - deltaX = 30; - break; - case 40: // down - deltaY = -30; - break; - case 33: // page up - deltaY = 90; - break; - case 32: // space bar - if (e.shiftKey) { - deltaY = 90; - } else { - deltaY = -90; - } - break; - case 34: // page down - deltaY = -90; - break; - case 35: // end - if (e.ctrlKey) { - deltaY = -i.contentHeight; - } else { - deltaY = -i.containerHeight; - } - break; - case 36: // home - if (e.ctrlKey) { - deltaY = element.scrollTop; - } else { - deltaY = i.containerHeight; - } - break; - default: - return; - } - - updateScroll(element, 'top', element.scrollTop - deltaY); - updateScroll(element, 'left', element.scrollLeft + deltaX); - updateGeometry(element); - - shouldPrevent = shouldPreventDefault(deltaX, deltaY); - if (shouldPrevent) { - e.preventDefault(); - } - }); -} - -module.exports = function (element) { - var i = instances.get(element); - bindKeyboardHandler(element, i); -}; - -},{"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],13:[function(require,module,exports){ -'use strict'; - -var instances = require('../instances'); -var updateGeometry = require('../update-geometry'); -var updateScroll = require('../update-scroll'); - -function bindMouseWheelHandler(element, i) { - var shouldPrevent = false; - - function shouldPreventDefault(deltaX, deltaY) { - var scrollTop = element.scrollTop; - if (deltaX === 0) { - if (!i.scrollbarYActive) { - return false; - } - if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)) { - return !i.settings.wheelPropagation; - } - } - - var scrollLeft = element.scrollLeft; - if (deltaY === 0) { - if (!i.scrollbarXActive) { - return false; - } - if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)) { - return !i.settings.wheelPropagation; - } - } - return true; - } - - function getDeltaFromEvent(e) { - var deltaX = e.deltaX; - var deltaY = -1 * e.deltaY; - - if (typeof deltaX === "undefined" || typeof deltaY === "undefined") { - // OS X Safari - deltaX = -1 * e.wheelDeltaX / 6; - deltaY = e.wheelDeltaY / 6; - } - - if (e.deltaMode && e.deltaMode === 1) { - // Firefox in deltaMode 1: Line scrolling - deltaX *= 10; - deltaY *= 10; - } - - if (deltaX !== deltaX && deltaY !== deltaY/* NaN checks */) { - // IE in some mouse drivers - deltaX = 0; - deltaY = e.wheelDelta; - } - - return [deltaX, deltaY]; - } - - function shouldBeConsumedByChild(deltaX, deltaY) { - var child = element.querySelector('textarea:hover, .ps-child:hover'); - if (child) { - if (child.tagName !== 'TEXTAREA' && !window.getComputedStyle(child).overflow.match(/(scroll|auto)/)) { - return false; - } - - var maxScrollTop = child.scrollHeight - child.clientHeight; - if (maxScrollTop > 0) { - if (!(child.scrollTop === 0 && deltaY > 0) && !(child.scrollTop === maxScrollTop && deltaY < 0)) { - return true; - } - } - var maxScrollLeft = child.scrollLeft - child.clientWidth; - if (maxScrollLeft > 0) { - if (!(child.scrollLeft === 0 && deltaX < 0) && !(child.scrollLeft === maxScrollLeft && deltaX > 0)) { - return true; - } - } - } - return false; - } - - function mousewheelHandler(e) { - var delta = getDeltaFromEvent(e); - - var deltaX = delta[0]; - var deltaY = delta[1]; - - if (shouldBeConsumedByChild(deltaX, deltaY)) { - return; - } - - shouldPrevent = false; - if (!i.settings.useBothWheelAxes) { - // deltaX will only be used for horizontal scrolling and deltaY will - // only be used for vertical scrolling - this is the default - updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed)); - updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed)); - } else if (i.scrollbarYActive && !i.scrollbarXActive) { - // only vertical scrollbar is active and useBothWheelAxes option is - // active, so let's scroll vertical bar using both mouse wheel axes - if (deltaY) { - updateScroll(element, 'top', element.scrollTop - (deltaY * i.settings.wheelSpeed)); - } else { - updateScroll(element, 'top', element.scrollTop + (deltaX * i.settings.wheelSpeed)); - } - shouldPrevent = true; - } else if (i.scrollbarXActive && !i.scrollbarYActive) { - // useBothWheelAxes and only horizontal bar is active, so use both - // wheel axes for horizontal bar - if (deltaX) { - updateScroll(element, 'left', element.scrollLeft + (deltaX * i.settings.wheelSpeed)); - } else { - updateScroll(element, 'left', element.scrollLeft - (deltaY * i.settings.wheelSpeed)); - } - shouldPrevent = true; - } - - updateGeometry(element); - - shouldPrevent = (shouldPrevent || shouldPreventDefault(deltaX, deltaY)); - if (shouldPrevent) { - e.stopPropagation(); - e.preventDefault(); - } - } - - if (typeof window.onwheel !== "undefined") { - i.event.bind(element, 'wheel', mousewheelHandler); - } else if (typeof window.onmousewheel !== "undefined") { - i.event.bind(element, 'mousewheel', mousewheelHandler); - } -} - -module.exports = function (element) { - var i = instances.get(element); - bindMouseWheelHandler(element, i); -}; - -},{"../instances":18,"../update-geometry":19,"../update-scroll":20}],14:[function(require,module,exports){ -'use strict'; - -var instances = require('../instances'); -var updateGeometry = require('../update-geometry'); - -function bindNativeScrollHandler(element, i) { - i.event.bind(element, 'scroll', function () { - updateGeometry(element); - }); -} - -module.exports = function (element) { - var i = instances.get(element); - bindNativeScrollHandler(element, i); -}; - -},{"../instances":18,"../update-geometry":19}],15:[function(require,module,exports){ -'use strict'; - -var _ = require('../../lib/helper'); -var instances = require('../instances'); -var updateGeometry = require('../update-geometry'); -var updateScroll = require('../update-scroll'); - -function bindSelectionHandler(element, i) { - function getRangeNode() { - var selection = window.getSelection ? window.getSelection() : - document.getSelection ? document.getSelection() : ''; - if (selection.toString().length === 0) { - return null; - } else { - return selection.getRangeAt(0).commonAncestorContainer; - } - } - - var scrollingLoop = null; - var scrollDiff = {top: 0, left: 0}; - function startScrolling() { - if (!scrollingLoop) { - scrollingLoop = setInterval(function () { - if (!instances.get(element)) { - clearInterval(scrollingLoop); - return; - } - - updateScroll(element, 'top', element.scrollTop + scrollDiff.top); - updateScroll(element, 'left', element.scrollLeft + scrollDiff.left); - updateGeometry(element); - }, 50); // every .1 sec - } - } - function stopScrolling() { - if (scrollingLoop) { - clearInterval(scrollingLoop); - scrollingLoop = null; - } - _.stopScrolling(element); - } - - var isSelected = false; - i.event.bind(i.ownerDocument, 'selectionchange', function () { - if (element.contains(getRangeNode())) { - isSelected = true; - } else { - isSelected = false; - stopScrolling(); - } - }); - i.event.bind(window, 'mouseup', function () { - if (isSelected) { - isSelected = false; - stopScrolling(); - } - }); - - i.event.bind(window, 'mousemove', function (e) { - if (isSelected) { - var mousePosition = {x: e.pageX, y: e.pageY}; - var containerGeometry = { - left: element.offsetLeft, - right: element.offsetLeft + element.offsetWidth, - top: element.offsetTop, - bottom: element.offsetTop + element.offsetHeight - }; - - if (mousePosition.x < containerGeometry.left + 3) { - scrollDiff.left = -5; - _.startScrolling(element, 'x'); - } else if (mousePosition.x > containerGeometry.right - 3) { - scrollDiff.left = 5; - _.startScrolling(element, 'x'); - } else { - scrollDiff.left = 0; - } - - if (mousePosition.y < containerGeometry.top + 3) { - if (containerGeometry.top + 3 - mousePosition.y < 5) { - scrollDiff.top = -5; - } else { - scrollDiff.top = -20; - } - _.startScrolling(element, 'y'); - } else if (mousePosition.y > containerGeometry.bottom - 3) { - if (mousePosition.y - containerGeometry.bottom + 3 < 5) { - scrollDiff.top = 5; - } else { - scrollDiff.top = 20; - } - _.startScrolling(element, 'y'); - } else { - scrollDiff.top = 0; - } - - if (scrollDiff.top === 0 && scrollDiff.left === 0) { - stopScrolling(); - } else { - startScrolling(); - } - } - }); -} - -module.exports = function (element) { - var i = instances.get(element); - bindSelectionHandler(element, i); -}; - -},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],16:[function(require,module,exports){ -'use strict'; - -var _ = require('../../lib/helper'); -var instances = require('../instances'); -var updateGeometry = require('../update-geometry'); -var updateScroll = require('../update-scroll'); - -function bindTouchHandler(element, i, supportsTouch, supportsIePointer) { - function shouldPreventDefault(deltaX, deltaY) { - var scrollTop = element.scrollTop; - var scrollLeft = element.scrollLeft; - var magnitudeX = Math.abs(deltaX); - var magnitudeY = Math.abs(deltaY); - - if (magnitudeY > magnitudeX) { - // user is perhaps trying to swipe up/down the page - - if (((deltaY < 0) && (scrollTop === i.contentHeight - i.containerHeight)) || - ((deltaY > 0) && (scrollTop === 0))) { - return !i.settings.swipePropagation; - } - } else if (magnitudeX > magnitudeY) { - // user is perhaps trying to swipe left/right across the page - - if (((deltaX < 0) && (scrollLeft === i.contentWidth - i.containerWidth)) || - ((deltaX > 0) && (scrollLeft === 0))) { - return !i.settings.swipePropagation; - } - } - - return true; - } - - function applyTouchMove(differenceX, differenceY) { - updateScroll(element, 'top', element.scrollTop - differenceY); - updateScroll(element, 'left', element.scrollLeft - differenceX); - - updateGeometry(element); - } - - var startOffset = {}; - var startTime = 0; - var speed = {}; - var easingLoop = null; - var inGlobalTouch = false; - var inLocalTouch = false; - - function globalTouchStart() { - inGlobalTouch = true; - } - function globalTouchEnd() { - inGlobalTouch = false; - } - - function getTouch(e) { - if (e.targetTouches) { - return e.targetTouches[0]; - } else { - // Maybe IE pointer - return e; - } - } - function shouldHandle(e) { - if (e.targetTouches && e.targetTouches.length === 1) { - return true; - } - if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) { - return true; - } - return false; - } - function touchStart(e) { - if (shouldHandle(e)) { - inLocalTouch = true; - - var touch = getTouch(e); - - startOffset.pageX = touch.pageX; - startOffset.pageY = touch.pageY; - - startTime = (new Date()).getTime(); - - if (easingLoop !== null) { - clearInterval(easingLoop); - } - - e.stopPropagation(); - } - } - function touchMove(e) { - if (!inLocalTouch && i.settings.swipePropagation) { - touchStart(e); - } - if (!inGlobalTouch && inLocalTouch && shouldHandle(e)) { - var touch = getTouch(e); - - var currentOffset = {pageX: touch.pageX, pageY: touch.pageY}; - - var differenceX = currentOffset.pageX - startOffset.pageX; - var differenceY = currentOffset.pageY - startOffset.pageY; - - applyTouchMove(differenceX, differenceY); - startOffset = currentOffset; - - var currentTime = (new Date()).getTime(); - - var timeGap = currentTime - startTime; - if (timeGap > 0) { - speed.x = differenceX / timeGap; - speed.y = differenceY / timeGap; - startTime = currentTime; - } - - if (shouldPreventDefault(differenceX, differenceY)) { - e.stopPropagation(); - e.preventDefault(); - } - } - } - function touchEnd() { - if (!inGlobalTouch && inLocalTouch) { - inLocalTouch = false; - - clearInterval(easingLoop); - easingLoop = setInterval(function () { - if (!instances.get(element)) { - clearInterval(easingLoop); - return; - } - - if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) { - clearInterval(easingLoop); - return; - } - - applyTouchMove(speed.x * 30, speed.y * 30); - - speed.x *= 0.8; - speed.y *= 0.8; - }, 10); - } - } - - if (supportsTouch) { - i.event.bind(window, 'touchstart', globalTouchStart); - i.event.bind(window, 'touchend', globalTouchEnd); - i.event.bind(element, 'touchstart', touchStart); - i.event.bind(element, 'touchmove', touchMove); - i.event.bind(element, 'touchend', touchEnd); - } - - if (supportsIePointer) { - if (window.PointerEvent) { - i.event.bind(window, 'pointerdown', globalTouchStart); - i.event.bind(window, 'pointerup', globalTouchEnd); - i.event.bind(element, 'pointerdown', touchStart); - i.event.bind(element, 'pointermove', touchMove); - i.event.bind(element, 'pointerup', touchEnd); - } else if (window.MSPointerEvent) { - i.event.bind(window, 'MSPointerDown', globalTouchStart); - i.event.bind(window, 'MSPointerUp', globalTouchEnd); - i.event.bind(element, 'MSPointerDown', touchStart); - i.event.bind(element, 'MSPointerMove', touchMove); - i.event.bind(element, 'MSPointerUp', touchEnd); - } - } -} - -module.exports = function (element) { - if (!_.env.supportsTouch && !_.env.supportsIePointer) { - return; - } - - var i = instances.get(element); - bindTouchHandler(element, i, _.env.supportsTouch, _.env.supportsIePointer); -}; - -},{"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],17:[function(require,module,exports){ -'use strict'; - -var _ = require('../lib/helper'); -var cls = require('../lib/class'); -var instances = require('./instances'); -var updateGeometry = require('./update-geometry'); - -// Handlers -var handlers = { - 'click-rail': require('./handler/click-rail'), - 'drag-scrollbar': require('./handler/drag-scrollbar'), - 'keyboard': require('./handler/keyboard'), - 'wheel': require('./handler/mouse-wheel'), - 'touch': require('./handler/touch'), - 'selection': require('./handler/selection') -}; -var nativeScrollHandler = require('./handler/native-scroll'); - -module.exports = function (element, userSettings) { - userSettings = typeof userSettings === 'object' ? userSettings : {}; - - cls.add(element, 'ps-container'); - - // Create a plugin instance. - var i = instances.add(element); - - i.settings = _.extend(i.settings, userSettings); - cls.add(element, 'ps-theme-' + i.settings.theme); - - i.settings.handlers.forEach(function (handlerName) { - handlers[handlerName](element); - }); - - nativeScrollHandler(element); - - updateGeometry(element); -}; - -},{"../lib/class":2,"../lib/helper":6,"./handler/click-rail":10,"./handler/drag-scrollbar":11,"./handler/keyboard":12,"./handler/mouse-wheel":13,"./handler/native-scroll":14,"./handler/selection":15,"./handler/touch":16,"./instances":18,"./update-geometry":19}],18:[function(require,module,exports){ -'use strict'; - -var _ = require('../lib/helper'); -var cls = require('../lib/class'); -var defaultSettings = require('./default-setting'); -var dom = require('../lib/dom'); -var EventManager = require('../lib/event-manager'); -var guid = require('../lib/guid'); - -var instances = {}; - -function Instance(element) { - var i = this; - - i.settings = _.clone(defaultSettings); - i.containerWidth = null; - i.containerHeight = null; - i.contentWidth = null; - i.contentHeight = null; - - i.isRtl = dom.css(element, 'direction') === "rtl"; - i.isNegativeScroll = (function () { - var originalScrollLeft = element.scrollLeft; - var result = null; - element.scrollLeft = -1; - result = element.scrollLeft < 0; - element.scrollLeft = originalScrollLeft; - return result; - })(); - i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0; - i.event = new EventManager(); - i.ownerDocument = element.ownerDocument || document; - - function focus() { - cls.add(element, 'ps-focus'); - } - - function blur() { - cls.remove(element, 'ps-focus'); - } - - i.scrollbarXRail = dom.appendTo(dom.e('div', 'ps-scrollbar-x-rail'), element); - i.scrollbarX = dom.appendTo(dom.e('div', 'ps-scrollbar-x'), i.scrollbarXRail); - i.scrollbarX.setAttribute('tabindex', 0); - i.event.bind(i.scrollbarX, 'focus', focus); - i.event.bind(i.scrollbarX, 'blur', blur); - i.scrollbarXActive = null; - i.scrollbarXWidth = null; - i.scrollbarXLeft = null; - i.scrollbarXBottom = _.toInt(dom.css(i.scrollbarXRail, 'bottom')); - i.isScrollbarXUsingBottom = i.scrollbarXBottom === i.scrollbarXBottom; // !isNaN - i.scrollbarXTop = i.isScrollbarXUsingBottom ? null : _.toInt(dom.css(i.scrollbarXRail, 'top')); - i.railBorderXWidth = _.toInt(dom.css(i.scrollbarXRail, 'borderLeftWidth')) + _.toInt(dom.css(i.scrollbarXRail, 'borderRightWidth')); - // Set rail to display:block to calculate margins - dom.css(i.scrollbarXRail, 'display', 'block'); - i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight')); - dom.css(i.scrollbarXRail, 'display', ''); - i.railXWidth = null; - i.railXRatio = null; - - i.scrollbarYRail = dom.appendTo(dom.e('div', 'ps-scrollbar-y-rail'), element); - i.scrollbarY = dom.appendTo(dom.e('div', 'ps-scrollbar-y'), i.scrollbarYRail); - i.scrollbarY.setAttribute('tabindex', 0); - i.event.bind(i.scrollbarY, 'focus', focus); - i.event.bind(i.scrollbarY, 'blur', blur); - i.scrollbarYActive = null; - i.scrollbarYHeight = null; - i.scrollbarYTop = null; - i.scrollbarYRight = _.toInt(dom.css(i.scrollbarYRail, 'right')); - i.isScrollbarYUsingRight = i.scrollbarYRight === i.scrollbarYRight; // !isNaN - i.scrollbarYLeft = i.isScrollbarYUsingRight ? null : _.toInt(dom.css(i.scrollbarYRail, 'left')); - i.scrollbarYOuterWidth = i.isRtl ? _.outerWidth(i.scrollbarY) : null; - i.railBorderYWidth = _.toInt(dom.css(i.scrollbarYRail, 'borderTopWidth')) + _.toInt(dom.css(i.scrollbarYRail, 'borderBottomWidth')); - dom.css(i.scrollbarYRail, 'display', 'block'); - i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom')); - dom.css(i.scrollbarYRail, 'display', ''); - i.railYHeight = null; - i.railYRatio = null; -} - -function getId(element) { - return element.getAttribute('data-ps-id'); -} - -function setId(element, id) { - element.setAttribute('data-ps-id', id); -} - -function removeId(element) { - element.removeAttribute('data-ps-id'); -} - -exports.add = function (element) { - var newId = guid(); - setId(element, newId); - instances[newId] = new Instance(element); - return instances[newId]; -}; - -exports.remove = function (element) { - delete instances[getId(element)]; - removeId(element); -}; - -exports.get = function (element) { - return instances[getId(element)]; -}; - -},{"../lib/class":2,"../lib/dom":3,"../lib/event-manager":4,"../lib/guid":5,"../lib/helper":6,"./default-setting":8}],19:[function(require,module,exports){ -'use strict'; - -var _ = require('../lib/helper'); -var cls = require('../lib/class'); -var dom = require('../lib/dom'); -var instances = require('./instances'); -var updateScroll = require('./update-scroll'); - -function getThumbSize(i, thumbSize) { - if (i.settings.minScrollbarLength) { - thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength); - } - if (i.settings.maxScrollbarLength) { - thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength); - } - return thumbSize; -} - -function updateCss(element, i) { - var xRailOffset = {width: i.railXWidth}; - if (i.isRtl) { - xRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth; - } else { - xRailOffset.left = element.scrollLeft; - } - if (i.isScrollbarXUsingBottom) { - xRailOffset.bottom = i.scrollbarXBottom - element.scrollTop; - } else { - xRailOffset.top = i.scrollbarXTop + element.scrollTop; - } - dom.css(i.scrollbarXRail, xRailOffset); - - var yRailOffset = {top: element.scrollTop, height: i.railYHeight}; - if (i.isScrollbarYUsingRight) { - if (i.isRtl) { - yRailOffset.right = i.contentWidth - (i.negativeScrollAdjustment + element.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth; - } else { - yRailOffset.right = i.scrollbarYRight - element.scrollLeft; - } - } else { - if (i.isRtl) { - yRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth * 2 - i.contentWidth - i.scrollbarYLeft - i.scrollbarYOuterWidth; - } else { - yRailOffset.left = i.scrollbarYLeft + element.scrollLeft; - } - } - dom.css(i.scrollbarYRail, yRailOffset); - - dom.css(i.scrollbarX, {left: i.scrollbarXLeft, width: i.scrollbarXWidth - i.railBorderXWidth}); - dom.css(i.scrollbarY, {top: i.scrollbarYTop, height: i.scrollbarYHeight - i.railBorderYWidth}); -} - -module.exports = function (element) { - var i = instances.get(element); - - i.containerWidth = element.clientWidth; - i.containerHeight = element.clientHeight; - i.contentWidth = element.scrollWidth; - i.contentHeight = element.scrollHeight; - - var existingRails; - if (!element.contains(i.scrollbarXRail)) { - existingRails = dom.queryChildren(element, '.ps-scrollbar-x-rail'); - if (existingRails.length > 0) { - existingRails.forEach(function (rail) { - dom.remove(rail); - }); - } - dom.appendTo(i.scrollbarXRail, element); - } - if (!element.contains(i.scrollbarYRail)) { - existingRails = dom.queryChildren(element, '.ps-scrollbar-y-rail'); - if (existingRails.length > 0) { - existingRails.forEach(function (rail) { - dom.remove(rail); - }); - } - dom.appendTo(i.scrollbarYRail, element); - } - - if (!i.settings.suppressScrollX && i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth) { - i.scrollbarXActive = true; - i.railXWidth = i.containerWidth - i.railXMarginWidth; - i.railXRatio = i.containerWidth / i.railXWidth; - i.scrollbarXWidth = getThumbSize(i, _.toInt(i.railXWidth * i.containerWidth / i.contentWidth)); - i.scrollbarXLeft = _.toInt((i.negativeScrollAdjustment + element.scrollLeft) * (i.railXWidth - i.scrollbarXWidth) / (i.contentWidth - i.containerWidth)); - } else { - i.scrollbarXActive = false; - } - - if (!i.settings.suppressScrollY && i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight) { - i.scrollbarYActive = true; - i.railYHeight = i.containerHeight - i.railYMarginHeight; - i.railYRatio = i.containerHeight / i.railYHeight; - i.scrollbarYHeight = getThumbSize(i, _.toInt(i.railYHeight * i.containerHeight / i.contentHeight)); - i.scrollbarYTop = _.toInt(element.scrollTop * (i.railYHeight - i.scrollbarYHeight) / (i.contentHeight - i.containerHeight)); - } else { - i.scrollbarYActive = false; - } - - if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) { - i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth; - } - if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) { - i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight; - } - - updateCss(element, i); - - if (i.scrollbarXActive) { - cls.add(element, 'ps-active-x'); - } else { - cls.remove(element, 'ps-active-x'); - i.scrollbarXWidth = 0; - i.scrollbarXLeft = 0; - updateScroll(element, 'left', 0); - } - if (i.scrollbarYActive) { - cls.add(element, 'ps-active-y'); - } else { - cls.remove(element, 'ps-active-y'); - i.scrollbarYHeight = 0; - i.scrollbarYTop = 0; - updateScroll(element, 'top', 0); - } -}; - -},{"../lib/class":2,"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-scroll":20}],20:[function(require,module,exports){ -'use strict'; - -var instances = require('./instances'); - -var upEvent = document.createEvent('Event'); -var downEvent = document.createEvent('Event'); -var leftEvent = document.createEvent('Event'); -var rightEvent = document.createEvent('Event'); -var yEvent = document.createEvent('Event'); -var xEvent = document.createEvent('Event'); -var xStartEvent = document.createEvent('Event'); -var xEndEvent = document.createEvent('Event'); -var yStartEvent = document.createEvent('Event'); -var yEndEvent = document.createEvent('Event'); -var lastTop; -var lastLeft; - -upEvent.initEvent('ps-scroll-up', true, true); -downEvent.initEvent('ps-scroll-down', true, true); -leftEvent.initEvent('ps-scroll-left', true, true); -rightEvent.initEvent('ps-scroll-right', true, true); -yEvent.initEvent('ps-scroll-y', true, true); -xEvent.initEvent('ps-scroll-x', true, true); -xStartEvent.initEvent('ps-x-reach-start', true, true); -xEndEvent.initEvent('ps-x-reach-end', true, true); -yStartEvent.initEvent('ps-y-reach-start', true, true); -yEndEvent.initEvent('ps-y-reach-end', true, true); - -module.exports = function (element, axis, value) { - if (typeof element === 'undefined') { - throw 'You must provide an element to the update-scroll function'; - } - - if (typeof axis === 'undefined') { - throw 'You must provide an axis to the update-scroll function'; - } - - if (typeof value === 'undefined') { - throw 'You must provide a value to the update-scroll function'; - } - - if (axis === 'top' && value <= 0) { - element.scrollTop = value = 0; // don't allow negative scroll - element.dispatchEvent(yStartEvent); - } - - if (axis === 'left' && value <= 0) { - element.scrollLeft = value = 0; // don't allow negative scroll - element.dispatchEvent(xStartEvent); - } - - var i = instances.get(element); - - if (axis === 'top' && value >= i.contentHeight - i.containerHeight) { - // don't allow scroll past container - value = i.contentHeight - i.containerHeight; - if (value - element.scrollTop <= 1) { - // mitigates rounding errors on non-subpixel scroll values - value = element.scrollTop; - } else { - element.scrollTop = value; - } - element.dispatchEvent(yEndEvent); - } - - if (axis === 'left' && value >= i.contentWidth - i.containerWidth) { - // don't allow scroll past container - value = i.contentWidth - i.containerWidth; - if (value - element.scrollLeft <= 1) { - // mitigates rounding errors on non-subpixel scroll values - value = element.scrollLeft; - } else { - element.scrollLeft = value; - } - element.dispatchEvent(xEndEvent); - } - - if (!lastTop) { - lastTop = element.scrollTop; - } - - if (!lastLeft) { - lastLeft = element.scrollLeft; - } - - if (axis === 'top' && value < lastTop) { - element.dispatchEvent(upEvent); - } - - if (axis === 'top' && value > lastTop) { - element.dispatchEvent(downEvent); - } - - if (axis === 'left' && value < lastLeft) { - element.dispatchEvent(leftEvent); - } - - if (axis === 'left' && value > lastLeft) { - element.dispatchEvent(rightEvent); - } - - if (axis === 'top') { - element.scrollTop = lastTop = value; - element.dispatchEvent(yEvent); - } - - if (axis === 'left') { - element.scrollLeft = lastLeft = value; - element.dispatchEvent(xEvent); - } - -}; - -},{"./instances":18}],21:[function(require,module,exports){ -'use strict'; - -var _ = require('../lib/helper'); -var dom = require('../lib/dom'); -var instances = require('./instances'); -var updateGeometry = require('./update-geometry'); -var updateScroll = require('./update-scroll'); - -module.exports = function (element) { - var i = instances.get(element); - - if (!i) { - return; - } - - // Recalcuate negative scrollLeft adjustment - i.negativeScrollAdjustment = i.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0; - - // Recalculate rail margins - dom.css(i.scrollbarXRail, 'display', 'block'); - dom.css(i.scrollbarYRail, 'display', 'block'); - i.railXMarginWidth = _.toInt(dom.css(i.scrollbarXRail, 'marginLeft')) + _.toInt(dom.css(i.scrollbarXRail, 'marginRight')); - i.railYMarginHeight = _.toInt(dom.css(i.scrollbarYRail, 'marginTop')) + _.toInt(dom.css(i.scrollbarYRail, 'marginBottom')); - - // Hide scrollbars not to affect scrollWidth and scrollHeight - dom.css(i.scrollbarXRail, 'display', 'none'); - dom.css(i.scrollbarYRail, 'display', 'none'); - - updateGeometry(element); - - // Update top/left scroll to trigger events - updateScroll(element, 'top', element.scrollTop); - updateScroll(element, 'left', element.scrollLeft); - - dom.css(i.scrollbarXRail, 'display', ''); - dom.css(i.scrollbarYRail, 'display', ''); -}; - -},{"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-geometry":19,"./update-scroll":20}]},{},[1]); diff --git a/dashboard/js/jquery.sticky.js b/dashboard/js/jquery.sticky.js deleted file mode 100644 index 8404695a..00000000 --- a/dashboard/js/jquery.sticky.js +++ /dev/null @@ -1,129 +0,0 @@ -// Sticky Plugin v1.0.0 for jQuery -// ============= -// Author: Anthony Garand -// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk) -// Improvements by Leonardo C. Daronco (daronco) -// Created: 2/14/2011 -// Date: 2/12/2012 -// Website: http://labs.anthonygarand.com/sticky -// Description: Makes an element on the page stick on the screen as you scroll -// It will only set the 'top' and 'position' of your element, you -// might need to adjust the width in some cases. - -(function($) { - var defaults = { - topSpacing: 0, - bottomSpacing: 0, - className: 'is-sticky', - wrapperClassName: 'sticky-wrapper', - center: false, - getWidthFrom: '' - }, - $window = $(window), - $document = $(document), - sticked = [], - windowHeight = $window.height(), - scroller = function() { - var scrollTop = $window.scrollTop(), - documentHeight = $document.height(), - dwh = documentHeight - windowHeight, - extra = (scrollTop > dwh) ? dwh - scrollTop : 0; - - for (var i = 0; i < sticked.length; i++) { - var s = sticked[i], - elementTop = s.stickyWrapper.offset().top, - etse = elementTop - s.topSpacing - extra; - - if (scrollTop <= etse) { - if (s.currentTop !== null) { - s.stickyElement - .css('position', '') - .css('top', ''); - s.stickyElement.parent().removeClass(s.className); - s.currentTop = null; - } - } - else { - var newTop = documentHeight - s.stickyElement.outerHeight() - - s.topSpacing - s.bottomSpacing - scrollTop - extra; - if (newTop < 0) { - newTop = newTop + s.topSpacing; - } else { - newTop = s.topSpacing; - } - if (s.currentTop != newTop) { - s.stickyElement - .css('position', 'fixed') - .css('top', newTop); - - if (typeof s.getWidthFrom !== 'undefined') { - s.stickyElement.css('width', $(s.getWidthFrom).width()); - } - - s.stickyElement.parent().addClass(s.className); - s.currentTop = newTop; - } - } - } - }, - resizer = function() { - windowHeight = $window.height(); - }, - methods = { - init: function(options) { - var o = $.extend(defaults, options); - return this.each(function() { - var stickyElement = $(this); - - stickyId = stickyElement.attr('id'); - wrapper = $('<div></div>') - .attr('id', stickyId + '-sticky-wrapper') - .addClass(o.wrapperClassName); - stickyElement.wrapAll(wrapper); - - if (o.center) { - stickyElement.parent().css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"}); - } - - if (stickyElement.css("float") == "right") { - stickyElement.css({"float":"none"}).parent().css({"float":"right"}); - } - - var stickyWrapper = stickyElement.parent(); - stickyWrapper.css('height', stickyElement.outerHeight()); - sticked.push({ - topSpacing: o.topSpacing, - bottomSpacing: o.bottomSpacing, - stickyElement: stickyElement, - currentTop: null, - stickyWrapper: stickyWrapper, - className: o.className, - getWidthFrom: o.getWidthFrom - }); - }); - }, - update: scroller - }; - - // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer): - if (window.addEventListener) { - window.addEventListener('scroll', scroller, false); - window.addEventListener('resize', resizer, false); - } else if (window.attachEvent) { - window.attachEvent('onscroll', scroller); - window.attachEvent('onresize', resizer); - } - - $.fn.sticky = function(method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof method === 'object' || !method ) { - return methods.init.apply( this, arguments ); - } else { - $.error('Method ' + method + ' does not exist on jQuery.sticky'); - } - }; - $(function() { - setTimeout(scroller, 0); - }); -})(jQuery); diff --git a/dashboard/js/jquery.tocify.js b/dashboard/js/jquery.tocify.js deleted file mode 100644 index f464d953..00000000 --- a/dashboard/js/jquery.tocify.js +++ /dev/null @@ -1,987 +0,0 @@ -/* jquery Tocify - v1.9.0 - 2013-10-01 -* http://www.gregfranko.com/jquery.tocify.js/ -* Copyright (c) 2013 Greg Franko; Licensed MIT */ - -// Immediately-Invoked Function Expression (IIFE) [Ben Alman Blog Post](http://benalman.com/news/2010/11/immediately-invoked-function-expression/) that calls another IIFE that contains all of the plugin logic. I used this pattern so that anyone viewing this code would not have to scroll to the bottom of the page to view the local parameters that were passed to the main IIFE. -(function(tocify) { - - // ECMAScript 5 Strict Mode: [John Resig Blog Post](http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/) - "use strict"; - - // Calls the second IIFE and locally passes in the global jQuery, window, and document objects - tocify(window.jQuery, window, document); - -} - -// Locally passes in `jQuery`, the `window` object, the `document` object, and an `undefined` variable. The `jQuery`, `window` and `document` objects are passed in locally, to improve performance, since javascript first searches for a variable match within the local variables set before searching the global variables set. All of the global variables are also passed in locally to be minifier friendly. `undefined` can be passed in locally, because it is not a reserved word in JavaScript. -(function($, window, document, undefined) { - - // ECMAScript 5 Strict Mode: [John Resig Blog Post](http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/) - "use strict"; - - var tocClassName = "tocify", - tocClass = "." + tocClassName, - tocFocusClassName = "tocify-focus", - tocHoverClassName = "tocify-hover", - hideTocClassName = "tocify-hide", - hideTocClass = "." + hideTocClassName, - headerClassName = "tocify-header", - headerClass = "." + headerClassName, - subheaderClassName = "tocify-subheader", - subheaderClass = "." + subheaderClassName, - itemClassName = "tocify-item", - itemClass = "." + itemClassName, - extendPageClassName = "tocify-extend-page", - extendPageClass = "." + extendPageClassName; - - // Calling the jQueryUI Widget Factory Method - $.widget("toc.tocify", { - - //Plugin version - version: "1.9.0", - - // These options will be used as defaults - options: { - - // **context**: Accepts String: Any jQuery selector - // The container element that holds all of the elements used to generate the table of contents - context: "body", - - // **ignoreSelector**: Accepts String: Any jQuery selector - // A selector to any element that would be matched by selectors that you wish to be ignored - ignoreSelector: null, - - // **selectors**: Accepts an Array of Strings: Any jQuery selectors - // The element's used to generate the table of contents. The order is very important since it will determine the table of content's nesting structure - selectors: "h1, h2, h3", - - // **showAndHide**: Accepts a boolean: true or false - // Used to determine if elements should be shown and hidden - showAndHide: true, - - // **showEffect**: Accepts String: "none", "fadeIn", "show", or "slideDown" - // Used to display any of the table of contents nested items - showEffect: "slideDown", - - // **showEffectSpeed**: Accepts Number (milliseconds) or String: "slow", "medium", or "fast" - // The time duration of the show animation - showEffectSpeed: "medium", - - // **hideEffect**: Accepts String: "none", "fadeOut", "hide", or "slideUp" - // Used to hide any of the table of contents nested items - hideEffect: "slideUp", - - // **hideEffectSpeed**: Accepts Number (milliseconds) or String: "slow", "medium", or "fast" - // The time duration of the hide animation - hideEffectSpeed: "medium", - - // **smoothScroll**: Accepts a boolean: true or false - // Determines if a jQuery animation should be used to scroll to specific table of contents items on the page - smoothScroll: true, - - // **smoothScrollSpeed**: Accepts Number (milliseconds) or String: "slow", "medium", or "fast" - // The time duration of the smoothScroll animation - smoothScrollSpeed: "medium", - - // **scrollTo**: Accepts Number (pixels) - // The amount of space between the top of page and the selected table of contents item after the page has been scrolled - scrollTo: 0, - - // **showAndHideOnScroll**: Accepts a boolean: true or false - // Determines if table of contents nested items should be shown and hidden while scrolling - showAndHideOnScroll: true, - - // **highlightOnScroll**: Accepts a boolean: true or false - // Determines if table of contents nested items should be highlighted (set to a different color) while scrolling - highlightOnScroll: true, - - // **highlightOffset**: Accepts a number - // The offset distance in pixels to trigger the next active table of contents item - highlightOffset: 40, - - // **theme**: Accepts a string: "bootstrap", "jqueryui", or "none" - // Determines if Twitter Bootstrap, jQueryUI, or Tocify classes should be added to the table of contents - theme: "bootstrap", - - // **extendPage**: Accepts a boolean: true or false - // If a user scrolls to the bottom of the page and the page is not tall enough to scroll to the last table of contents item, then the page height is increased - extendPage: true, - - // **extendPageOffset**: Accepts a number: pixels - // How close to the bottom of the page a user must scroll before the page is extended - extendPageOffset: 100, - - // **history**: Accepts a boolean: true or false - // Adds a hash to the page url to maintain history - history: true, - - // **scrollHistory**: Accepts a boolean: true or false - // Adds a hash to the page url, to maintain history, when scrolling to a TOC item - scrollHistory: false, - - // **hashGenerator**: How the hash value (the anchor segment of the URL, following the - // # character) will be generated. - // - // "compact" (default) - #CompressesEverythingTogether - // "pretty" - #looks-like-a-nice-url-and-is-easily-readable - // function(text, element){} - Your own hash generation function that accepts the text as an - // argument, and returns the hash value. - hashGenerator: "compact", - - // **highlightDefault**: Accepts a boolean: true or false - // Set's the first TOC item as active if no other TOC item is active. - highlightDefault: true - - }, - - // _Create - // ------- - // Constructs the plugin. Only called once. - _create: function() { - - var self = this; - - self.extendPageScroll = true; - - // Internal array that keeps track of all TOC items (Helps to recognize if there are duplicate TOC item strings) - self.items = []; - - // Generates the HTML for the dynamic table of contents - self._generateToc(); - - // Adds CSS classes to the newly generated table of contents HTML - self._addCSSClasses(); - - self.webkit = (function() { - - for(var prop in window) { - - if(prop) { - - if(prop.toLowerCase().indexOf("webkit") !== -1) { - - return true; - - } - - } - - } - - return false; - - }()); - - // Adds jQuery event handlers to the newly generated table of contents - self._setEventHandlers(); - - // Binding to the Window load event to make sure the correct scrollTop is calculated - $(window).load(function() { - - // Sets the active TOC item - self._setActiveElement(true); - - // Once all animations on the page are complete, this callback function will be called - $("html, body").promise().done(function() { - - setTimeout(function() { - - self.extendPageScroll = false; - - },0); - - }); - - }); - - }, - - // _generateToc - // ------------ - // Generates the HTML for the dynamic table of contents - _generateToc: function() { - - // _Local variables_ - - // Stores the plugin context in the self variable - var self = this, - - // All of the HTML tags found within the context provided (i.e. body) that match the top level jQuery selector above - firstElem, - - // Instantiated variable that will store the top level newly created unordered list DOM element - ul, - ignoreSelector = self.options.ignoreSelector; - - // If the selectors option has a comma within the string - if(this.options.selectors.indexOf(",") !== -1) { - - // Grabs the first selector from the string - firstElem = $(this.options.context).find(this.options.selectors.replace(/ /g,"").substr(0, this.options.selectors.indexOf(","))); - - } - - // If the selectors option does not have a comman within the string - else { - - // Grabs the first selector from the string and makes sure there are no spaces - firstElem = $(this.options.context).find(this.options.selectors.replace(/ /g,"")); - - } - - if(!firstElem.length) { - - self.element.addClass(hideTocClassName); - - return; - - } - - self.element.addClass(tocClassName); - - // Loops through each top level selector - firstElem.each(function(index) { - - //If the element matches the ignoreSelector then we skip it - if($(this).is(ignoreSelector)) { - return; - } - - // Creates an unordered list HTML element and adds a dynamic ID and standard class name - ul = $("<ul/>", { - "id": headerClassName + index, - "class": headerClassName - }). - - // Appends a top level list item HTML element to the previously created HTML header - append(self._nestElements($(this), index)); - - // Add the created unordered list element to the HTML element calling the plugin - self.element.append(ul); - - // Finds all of the HTML tags between the header and subheader elements - $(this).nextUntil(this.nodeName.toLowerCase()).each(function() { - - // If there are no nested subheader elemements - if($(this).find(self.options.selectors).length === 0) { - - // Loops through all of the subheader elements - $(this).filter(self.options.selectors).each(function() { - - //If the element matches the ignoreSelector then we skip it - if($(this).is(ignoreSelector)) { - return; - } - - self._appendSubheaders.call(this, self, ul); - - }); - - } - - // If there are nested subheader elements - else { - - // Loops through all of the subheader elements - $(this).find(self.options.selectors).each(function() { - - //If the element matches the ignoreSelector then we skip it - if($(this).is(ignoreSelector)) { - return; - } - - self._appendSubheaders.call(this, self, ul); - - }); - - } - - }); - - }); - - }, - - _setActiveElement: function(pageload) { - - var self = this, - - hash = window.location.hash.substring(1), - - elem = self.element.find('li[data-unique="' + hash + '"]'); - - if(hash.length) { - - // Removes highlighting from all of the list item's - self.element.find("." + self.focusClass).removeClass(self.focusClass); - - // Highlights the current list item that was clicked - elem.addClass(self.focusClass); - - // If the showAndHide option is true - if(self.options.showAndHide) { - - // Triggers the click event on the currently focused TOC item - elem.click(); - - } - - } - - else { - - // Removes highlighting from all of the list item's - self.element.find("." + self.focusClass).removeClass(self.focusClass); - - if(!hash.length && pageload && self.options.highlightDefault) { - - // Highlights the first TOC item if no other items are highlighted - self.element.find(itemClass).first().addClass(self.focusClass); - - } - - } - - return self; - - }, - - // _nestElements - // ------------- - // Helps create the table of contents list by appending nested list items - _nestElements: function(self, index) { - - var arr, item, hashValue; - - arr = $.grep(this.items, function (item) { - - return item === self.text(); - - }); - - // If there is already a duplicate TOC item - if(arr.length) { - - // Adds the current TOC item text and index (for slight randomization) to the internal array - this.items.push(self.text() + index); - - } - - // If there not a duplicate TOC item - else { - - // Adds the current TOC item text to the internal array - this.items.push(self.text()); - - } - - hashValue = this._generateHashValue(arr, self, index); - - // Appends a list item HTML element to the last unordered list HTML element found within the HTML element calling the plugin - item = $("<li/>", { - - // Sets a common class name to the list item - "class": itemClassName, - - "data-unique": hashValue - - }).append($("<a/>", { - - "text": self.text() - - })); - - // Adds an HTML anchor tag before the currently traversed HTML element - self.before($("<div/>", { - - // Sets a name attribute on the anchor tag to the text of the currently traversed HTML element (also making sure that all whitespace is replaced with an underscore) - "name": hashValue, - - "data-unique": hashValue - - })); - - return item; - - }, - - // _generateHashValue - // ------------------ - // Generates the hash value that will be used to refer to each item. - _generateHashValue: function(arr, self, index) { - - var hashValue = "", - hashGeneratorOption = this.options.hashGenerator; - - if (hashGeneratorOption === "pretty") { - - // prettify the text - hashValue = self.text().toLowerCase().replace(/\s/g, "-"); - - // fix double hyphens - while (hashValue.indexOf("--") > -1) { - hashValue = hashValue.replace(/--/g, "-"); - } - - // fix colon-space instances - while (hashValue.indexOf(":-") > -1) { - hashValue = hashValue.replace(/:-/g, "-"); - } - - } else if (typeof hashGeneratorOption === "function") { - - // call the function - hashValue = hashGeneratorOption(self.text(), self); - - } else { - - // compact - the default - hashValue = self.text().replace(/\s/g, ""); - - } - - // add the index if we need to - if (arr.length) { hashValue += ""+index; } - - // return the value - return hashValue; - - }, - - // _appendElements - // --------------- - // Helps create the table of contents list by appending subheader elements - - _appendSubheaders: function(self, ul) { - - // The current element index - var index = $(this).index(self.options.selectors), - - // Finds the previous header DOM element - previousHeader = $(self.options.selectors).eq(index - 1), - - currentTagName = +$(this).prop("tagName").charAt(1), - - previousTagName = +previousHeader.prop("tagName").charAt(1), - - lastSubheader; - - // If the current header DOM element is smaller than the previous header DOM element or the first subheader - if(currentTagName < previousTagName) { - - // Selects the last unordered list HTML found within the HTML element calling the plugin - self.element.find(subheaderClass + "[data-tag=" + currentTagName + "]").last().append(self._nestElements($(this), index)); - - } - - // If the current header DOM element is the same type of header(eg. h4) as the previous header DOM element - else if(currentTagName === previousTagName) { - - ul.find(itemClass).last().after(self._nestElements($(this), index)); - - } - - else { - - // Selects the last unordered list HTML found within the HTML element calling the plugin - ul.find(itemClass).last(). - - // Appends an unorderedList HTML element to the dynamic `unorderedList` variable and sets a common class name - after($("<ul/>", { - - "class": subheaderClassName, - - "data-tag": currentTagName - - })).next(subheaderClass). - - // Appends a list item HTML element to the last unordered list HTML element found within the HTML element calling the plugin - append(self._nestElements($(this), index)); - } - - }, - - // _setEventHandlers - // ---------------- - // Adds jQuery event handlers to the newly generated table of contents - _setEventHandlers: function() { - - // _Local variables_ - - // Stores the plugin context in the self variable - var self = this, - - // Instantiates a new variable that will be used to hold a specific element's context - $self, - - // Instantiates a new variable that will be used to determine the smoothScroll animation time duration - duration; - - // Event delegation that looks for any clicks on list item elements inside of the HTML element calling the plugin - this.element.on("click.tocify", "li", function(event) { - - if(self.options.history) { - - window.location.hash = $(this).attr("data-unique"); - - } - - // Removes highlighting from all of the list item's - self.element.find("." + self.focusClass).removeClass(self.focusClass); - - // Highlights the current list item that was clicked - $(this).addClass(self.focusClass); - - // If the showAndHide option is true - if(self.options.showAndHide) { - - var elem = $('li[data-unique="' + $(this).attr("data-unique") + '"]'); - - self._triggerShow(elem); - - } - - self._scrollTo($(this)); - - }); - - // Mouseenter and Mouseleave event handlers for the list item's within the HTML element calling the plugin - this.element.find("li").on({ - - // Mouseenter event handler - "mouseenter.tocify": function() { - - // Adds a hover CSS class to the current list item - $(this).addClass(self.hoverClass); - - // Makes sure the cursor is set to the pointer icon - $(this).css("cursor", "pointer"); - - }, - - // Mouseleave event handler - "mouseleave.tocify": function() { - - if(self.options.theme !== "bootstrap") { - - // Removes the hover CSS class from the current list item - $(this).removeClass(self.hoverClass); - - } - - } - }); - - // only attach handler if needed (expensive in IE) - if (self.options.extendPage || self.options.highlightOnScroll || self.options.scrollHistory || self.options.showAndHideOnScroll) - { - // Window scroll event handler - $(window).on("scroll.tocify", function() { - - // Once all animations on the page are complete, this callback function will be called - $("html, body").promise().done(function() { - - // Local variables - - // Stores how far the user has scrolled - var winScrollTop = $(window).scrollTop(), - - // Stores the height of the window - winHeight = $(window).height(), - - // Stores the height of the document - docHeight = $(document).height(), - - scrollHeight = $("body")[0].scrollHeight, - - // Instantiates a variable that will be used to hold a selected HTML element - elem, - - lastElem, - - lastElemOffset, - - currentElem; - - if(self.options.extendPage) { - - // If the user has scrolled to the bottom of the page and the last toc item is not focused - if((self.webkit && winScrollTop >= scrollHeight - winHeight - self.options.extendPageOffset) || (!self.webkit && winHeight + winScrollTop > docHeight - self.options.extendPageOffset)) { - - if(!$(extendPageClass).length) { - - lastElem = $('div[data-unique="' + $(itemClass).last().attr("data-unique") + '"]'); - - if(!lastElem.length) return; - - // Gets the top offset of the page header that is linked to the last toc item - lastElemOffset = lastElem.offset().top; - - // Appends a div to the bottom of the page and sets the height to the difference of the window scrollTop and the last element's position top offset - $(self.options.context).append($("<div />", { - - "class": extendPageClassName, - - "height": Math.abs(lastElemOffset - winScrollTop) + "px", - - "data-unique": extendPageClassName - - })); - - if(self.extendPageScroll) { - - currentElem = self.element.find('li.active'); - - self._scrollTo($('div[data-unique="' + currentElem.attr("data-unique") + '"]')); - - } - - } - - } - - } - - // The zero timeout ensures the following code is run after the scroll events - setTimeout(function() { - - // _Local variables_ - - // Stores the distance to the closest anchor - var closestAnchorDistance = null, - - // Stores the index of the closest anchor - closestAnchorIdx = null, - - // Keeps a reference to all anchors - anchors = $(self.options.context).find("div[data-unique]"), - - anchorText; - - // Determines the index of the closest anchor - anchors.each(function(idx) { - var distance = Math.abs(($(this).next().length ? $(this).next() : $(this)).offset().top - winScrollTop - self.options.highlightOffset); - if (closestAnchorDistance == null || distance < closestAnchorDistance) { - closestAnchorDistance = distance; - closestAnchorIdx = idx; - } else { - return false; - } - }); - - anchorText = $(anchors[closestAnchorIdx]).attr("data-unique"); - - // Stores the list item HTML element that corresponds to the currently traversed anchor tag - elem = $('li[data-unique="' + anchorText + '"]'); - - // If the `highlightOnScroll` option is true and a next element is found - if(self.options.highlightOnScroll && elem.length) { - - // Removes highlighting from all of the list item's - self.element.find("." + self.focusClass).removeClass(self.focusClass); - - // Highlights the corresponding list item - elem.addClass(self.focusClass); - - } - - if(self.options.scrollHistory) { - - if(window.location.hash !== "#" + anchorText) { - - window.location.replace("#" + anchorText); - - } - } - - // If the `showAndHideOnScroll` option is true - if(self.options.showAndHideOnScroll && self.options.showAndHide) { - - self._triggerShow(elem, true); - - } - - }, 0); - - }); - - }); - } - - }, - - // Show - // ---- - // Opens the current sub-header - show: function(elem, scroll) { - - // Stores the plugin context in the `self` variable - var self = this, - element = elem; - - // If the sub-header is not already visible - if (!elem.is(":visible")) { - - // If the current element does not have any nested subheaders, is not a header, and its parent is not visible - if(!elem.find(subheaderClass).length && !elem.parent().is(headerClass) && !elem.parent().is(":visible")) { - - // Sets the current element to all of the subheaders within the current header - elem = elem.parents(subheaderClass).add(elem); - - } - - // If the current element does not have any nested subheaders and is not a header - else if(!elem.children(subheaderClass).length && !elem.parent().is(headerClass)) { - - // Sets the current element to the closest subheader - elem = elem.closest(subheaderClass); - - } - - //Determines what jQuery effect to use - switch (self.options.showEffect) { - - //Uses `no effect` - case "none": - - elem.show(); - - break; - - //Uses the jQuery `show` special effect - case "show": - - elem.show(self.options.showEffectSpeed); - - break; - - //Uses the jQuery `slideDown` special effect - case "slideDown": - - elem.slideDown(self.options.showEffectSpeed); - - break; - - //Uses the jQuery `fadeIn` special effect - case "fadeIn": - - elem.fadeIn(self.options.showEffectSpeed); - - break; - - //If none of the above options were passed, then a `jQueryUI show effect` is expected - default: - - elem.show(); - - break; - - } - - } - - // If the current subheader parent element is a header - if(elem.parent().is(headerClass)) { - - // Hides all non-active sub-headers - self.hide($(subheaderClass).not(elem)); - - } - - // If the current subheader parent element is not a header - else { - - // Hides all non-active sub-headers - self.hide($(subheaderClass).not(elem.closest(headerClass).find(subheaderClass).not(elem.siblings()))); - - } - - // Maintains chainablity - return self; - - }, - - // Hide - // ---- - // Closes the current sub-header - hide: function(elem) { - - // Stores the plugin context in the `self` variable - var self = this; - - //Determines what jQuery effect to use - switch (self.options.hideEffect) { - - // Uses `no effect` - case "none": - - elem.hide(); - - break; - - // Uses the jQuery `hide` special effect - case "hide": - - elem.hide(self.options.hideEffectSpeed); - - break; - - // Uses the jQuery `slideUp` special effect - case "slideUp": - - elem.slideUp(self.options.hideEffectSpeed); - - break; - - // Uses the jQuery `fadeOut` special effect - case "fadeOut": - - elem.fadeOut(self.options.hideEffectSpeed); - - break; - - // If none of the above options were passed, then a `jqueryUI hide effect` is expected - default: - - elem.hide(); - - break; - - } - - // Maintains chainablity - return self; - }, - - // _triggerShow - // ------------ - // Determines what elements get shown on scroll and click - _triggerShow: function(elem, scroll) { - - var self = this; - - // If the current element's parent is a header element or the next element is a nested subheader element - if(elem.parent().is(headerClass) || elem.next().is(subheaderClass)) { - - // Shows the next sub-header element - self.show(elem.next(subheaderClass), scroll); - - } - - // If the current element's parent is a subheader element - else if(elem.parent().is(subheaderClass)) { - - // Shows the parent sub-header element - self.show(elem.parent(), scroll); - - } - - // Maintains chainability - return self; - - }, - - // _addCSSClasses - // -------------- - // Adds CSS classes to the newly generated table of contents HTML - _addCSSClasses: function() { - - // If the user wants a jqueryUI theme - if(this.options.theme === "jqueryui") { - - this.focusClass = "ui-state-default"; - - this.hoverClass = "ui-state-hover"; - - //Adds the default styling to the dropdown list - this.element.addClass("ui-widget").find(".toc-title").addClass("ui-widget-header").end().find("li").addClass("ui-widget-content"); - - } - - // If the user wants a twitterBootstrap theme - else if(this.options.theme === "bootstrap") { - - this.element.find(headerClass + "," + subheaderClass).addClass("nav nav-list"); - - this.focusClass = "active"; - - } - - // If a user does not want a prebuilt theme - else { - - // Adds more neutral classes (instead of jqueryui) - - this.focusClass = tocFocusClassName; - - this.hoverClass = tocHoverClassName; - - } - - //Maintains chainability - return this; - - }, - - // setOption - // --------- - // Sets a single Tocify option after the plugin is invoked - setOption: function() { - - // Calls the jQueryUI Widget Factory setOption method - $.Widget.prototype._setOption.apply(this, arguments); - - }, - - // setOptions - // ---------- - // Sets a single or multiple Tocify options after the plugin is invoked - setOptions: function() { - - // Calls the jQueryUI Widget Factory setOptions method - $.Widget.prototype._setOptions.apply(this, arguments); - - }, - - // _scrollTo - // --------- - // Scrolls to a specific element - _scrollTo: function(elem) { - - var self = this, - duration = self.options.smoothScroll || 0, - scrollTo = self.options.scrollTo, - currentDiv = $('div[data-unique="' + elem.attr("data-unique") + '"]'); - - if(!currentDiv.length) { - - return self; - - } - - // Once all animations on the page are complete, this callback function will be called - $("html, body").promise().done(function() { - - // Animates the html and body element scrolltops - $("html, body").animate({ - - // Sets the jQuery `scrollTop` to the top offset of the HTML div tag that matches the current list item's `data-unique` tag - "scrollTop": currentDiv.offset().top - ($.isFunction(scrollTo) ? scrollTo.call() : scrollTo) + "px" - - }, { - - // Sets the smoothScroll animation time duration to the smoothScrollSpeed option - "duration": duration - - }); - - }); - - // Maintains chainability - return self; - - } - - }); - -})); //end of plugin diff --git a/dashboard/js/jquery.tocify.min.js b/dashboard/js/jquery.tocify.min.js deleted file mode 100644 index 0fc0442f..00000000 --- a/dashboard/js/jquery.tocify.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jquery.tocify - v1.9.0 - 2013-10-01 -* http://gregfranko.com/jquery.tocify.js/ -* Copyright (c) 2013 Greg Franko; Licensed MIT*/ -(function(e){"use strict";e(window.jQuery,window,document)})(function(e,t,s){"use strict";var i="tocify",o="tocify-focus",n="tocify-hover",a="tocify-hide",l="tocify-header",h="."+l,r="tocify-subheader",d="."+r,c="tocify-item",f="."+c,u="tocify-extend-page",p="."+u;e.widget("toc.tocify",{version:"1.9.0",options:{context:"body",ignoreSelector:null,selectors:"h1, h2, h3",showAndHide:!0,showEffect:"slideDown",showEffectSpeed:"medium",hideEffect:"slideUp",hideEffectSpeed:"medium",smoothScroll:!0,smoothScrollSpeed:"medium",scrollTo:0,showAndHideOnScroll:!0,highlightOnScroll:!0,highlightOffset:40,theme:"bootstrap",extendPage:!0,extendPageOffset:100,history:!0,scrollHistory:!1,hashGenerator:"compact",highlightDefault:!0},_create:function(){var s=this;s.extendPageScroll=!0,s.items=[],s._generateToc(),s._addCSSClasses(),s.webkit=function(){for(var e in t)if(e&&-1!==e.toLowerCase().indexOf("webkit"))return!0;return!1}(),s._setEventHandlers(),e(t).load(function(){s._setActiveElement(!0),e("html, body").promise().done(function(){setTimeout(function(){s.extendPageScroll=!1},0)})})},_generateToc:function(){var t,s,o=this,n=o.options.ignoreSelector;return t=-1!==this.options.selectors.indexOf(",")?e(this.options.context).find(this.options.selectors.replace(/ /g,"").substr(0,this.options.selectors.indexOf(","))):e(this.options.context).find(this.options.selectors.replace(/ /g,"")),t.length?(o.element.addClass(i),t.each(function(t){e(this).is(n)||(s=e("<ul/>",{id:l+t,"class":l}).append(o._nestElements(e(this),t)),o.element.append(s),e(this).nextUntil(this.nodeName.toLowerCase()).each(function(){0===e(this).find(o.options.selectors).length?e(this).filter(o.options.selectors).each(function(){e(this).is(n)||o._appendSubheaders.call(this,o,s)}):e(this).find(o.options.selectors).each(function(){e(this).is(n)||o._appendSubheaders.call(this,o,s)})}))}),undefined):(o.element.addClass(a),undefined)},_setActiveElement:function(e){var s=this,i=t.location.hash.substring(1),o=s.element.find('li[data-unique="'+i+'"]');return i.length?(s.element.find("."+s.focusClass).removeClass(s.focusClass),o.addClass(s.focusClass),s.options.showAndHide&&o.click()):(s.element.find("."+s.focusClass).removeClass(s.focusClass),!i.length&&e&&s.options.highlightDefault&&s.element.find(f).first().addClass(s.focusClass)),s},_nestElements:function(t,s){var i,o,n;return i=e.grep(this.items,function(e){return e===t.text()}),i.length?this.items.push(t.text()+s):this.items.push(t.text()),n=this._generateHashValue(i,t,s),o=e("<li/>",{"class":c,"data-unique":n}).append(e("<a/>",{text:t.text()})),t.before(e("<div/>",{name:n,"data-unique":n})),o},_generateHashValue:function(e,t,s){var i="",o=this.options.hashGenerator;if("pretty"===o){for(i=t.text().toLowerCase().replace(/\s/g,"-");i.indexOf("--")>-1;)i=i.replace(/--/g,"-");for(;i.indexOf(":-")>-1;)i=i.replace(/:-/g,"-")}else i="function"==typeof o?o(t.text(),t):t.text().replace(/\s/g,"");return e.length&&(i+=""+s),i},_appendSubheaders:function(t,s){var i=e(this).index(t.options.selectors),o=e(t.options.selectors).eq(i-1),n=+e(this).prop("tagName").charAt(1),a=+o.prop("tagName").charAt(1);a>n?t.element.find(d+"[data-tag="+n+"]").last().append(t._nestElements(e(this),i)):n===a?s.find(f).last().after(t._nestElements(e(this),i)):s.find(f).last().after(e("<ul/>",{"class":r,"data-tag":n})).next(d).append(t._nestElements(e(this),i))},_setEventHandlers:function(){var i=this;this.element.on("click.tocify","li",function(){if(i.options.history&&(t.location.hash=e(this).attr("data-unique")),i.element.find("."+i.focusClass).removeClass(i.focusClass),e(this).addClass(i.focusClass),i.options.showAndHide){var s=e('li[data-unique="'+e(this).attr("data-unique")+'"]');i._triggerShow(s)}i._scrollTo(e(this))}),this.element.find("li").on({"mouseenter.tocify":function(){e(this).addClass(i.hoverClass),e(this).css("cursor","pointer")},"mouseleave.tocify":function(){"bootstrap"!==i.options.theme&&e(this).removeClass(i.hoverClass)}}),(i.options.extendPage||i.options.highlightOnScroll||i.options.scrollHistory||i.options.showAndHideOnScroll)&&e(t).on("scroll.tocify",function(){e("html, body").promise().done(function(){var o,n,a,l,h=e(t).scrollTop(),r=e(t).height(),d=e(s).height(),c=e("body")[0].scrollHeight;if(i.options.extendPage&&(i.webkit&&h>=c-r-i.options.extendPageOffset||!i.webkit&&r+h>d-i.options.extendPageOffset)&&!e(p).length){if(n=e('div[data-unique="'+e(f).last().attr("data-unique")+'"]'),!n.length)return;a=n.offset().top,e(i.options.context).append(e("<div />",{"class":u,height:Math.abs(a-h)+"px","data-unique":u})),i.extendPageScroll&&(l=i.element.find("li.active"),i._scrollTo(e('div[data-unique="'+l.attr("data-unique")+'"]')))}setTimeout(function(){var s,n=null,a=null,l=e(i.options.context).find("div[data-unique]");l.each(function(t){var s=Math.abs((e(this).next().length?e(this).next():e(this)).offset().top-h-i.options.highlightOffset);return null==n||n>s?(n=s,a=t,undefined):!1}),s=e(l[a]).attr("data-unique"),o=e('li[data-unique="'+s+'"]'),i.options.highlightOnScroll&&o.length&&(i.element.find("."+i.focusClass).removeClass(i.focusClass),o.addClass(i.focusClass)),i.options.scrollHistory&&t.location.hash!=="#"+s&&t.location.replace("#"+s),i.options.showAndHideOnScroll&&i.options.showAndHide&&i._triggerShow(o,!0)},0)})})},show:function(t){var s=this;if(!t.is(":visible"))switch(t.find(d).length||t.parent().is(h)||t.parent().is(":visible")?t.children(d).length||t.parent().is(h)||(t=t.closest(d)):t=t.parents(d).add(t),s.options.showEffect){case"none":t.show();break;case"show":t.show(s.options.showEffectSpeed);break;case"slideDown":t.slideDown(s.options.showEffectSpeed);break;case"fadeIn":t.fadeIn(s.options.showEffectSpeed);break;default:t.show()}return t.parent().is(h)?s.hide(e(d).not(t)):s.hide(e(d).not(t.closest(h).find(d).not(t.siblings()))),s},hide:function(e){var t=this;switch(t.options.hideEffect){case"none":e.hide();break;case"hide":e.hide(t.options.hideEffectSpeed);break;case"slideUp":e.slideUp(t.options.hideEffectSpeed);break;case"fadeOut":e.fadeOut(t.options.hideEffectSpeed);break;default:e.hide()}return t},_triggerShow:function(e,t){var s=this;return e.parent().is(h)||e.next().is(d)?s.show(e.next(d),t):e.parent().is(d)&&s.show(e.parent(),t),s},_addCSSClasses:function(){return"jqueryui"===this.options.theme?(this.focusClass="ui-state-default",this.hoverClass="ui-state-hover",this.element.addClass("ui-widget").find(".toc-title").addClass("ui-widget-header").end().find("li").addClass("ui-widget-content")):"bootstrap"===this.options.theme?(this.element.find(h+","+d).addClass("nav nav-list"),this.focusClass="active"):(this.focusClass=o,this.hoverClass=n),this},setOption:function(){e.Widget.prototype._setOption.apply(this,arguments)},setOptions:function(){e.Widget.prototype._setOptions.apply(this,arguments)},_scrollTo:function(t){var s=this,i=s.options.smoothScroll||0,o=s.options.scrollTo,n=e('div[data-unique="'+t.attr("data-unique")+'"]');return n.length?(e("html, body").promise().done(function(){e("html, body").animate({scrollTop:n.offset().top-(e.isFunction(o)?o.call():o)+"px"},{duration:i})}),s):s}})}); \ No newline at end of file diff --git a/dashboard/js/jquery.tweet.js b/dashboard/js/jquery.tweet.js deleted file mode 100644 index 1b1ab83e..00000000 --- a/dashboard/js/jquery.tweet.js +++ /dev/null @@ -1,312 +0,0 @@ -// jquery.tweet.js - See http://tweet.seaofclouds.com/ or https://github.com/seaofclouds/tweet for more info -// Copyright (c) 2008-2012 Todd Matthews & Steve Purcell -// Modified by Stan Scates for https://github.com/StanScates/Tweet.js-Mod - -(function (factory) { - if (typeof define === 'function' && define.amd) - define(['jquery'], factory); // AMD support for RequireJS etc. - else - factory(jQuery); -}(function ($) { - $.fn.tweet = function(o){ - var s = $.extend({ - modpath: "/twitter/", // [string] relative URL to Tweet.js mod (see https://github.com/StanScates/Tweet.js-Mod) - username: null, // [string or array] required unless using the 'query' option; one or more twitter screen names (use 'list' option for multiple names, where possible) - list_id: null, // [integer] ID of list to fetch when using list functionality - list: null, // [string] optional slug of list belonging to username - favorites: false, // [boolean] display the user's favorites instead of his tweets - query: null, // [string] optional search query (see also: http://search.twitter.com/operators) - avatar_size: null, // [integer] height and width of avatar if displayed (48px max) - count: 3, // [integer] how many tweets to display? - fetch: null, // [integer] how many tweets to fetch via the API (set this higher than 'count' if using the 'filter' option) - page: 1, // [integer] which page of results to fetch (if count != fetch, you'll get unexpected results) - retweets: true, // [boolean] whether to fetch (official) retweets (not supported in all display modes) - intro_text: null, // [string] do you want text BEFORE your your tweets? - outro_text: null, // [string] do you want text AFTER your tweets? - join_text: null, // [string] optional text in between date and tweet, try setting to "auto" - auto_join_text_default: "i said,", // [string] auto text for non verb: "i said" bullocks - auto_join_text_ed: "i", // [string] auto text for past tense: "i" surfed - auto_join_text_ing: "i am", // [string] auto tense for present tense: "i was" surfing - auto_join_text_reply: "i replied to", // [string] auto tense for replies: "i replied to" @someone "with" - auto_join_text_url: "i was looking at", // [string] auto tense for urls: "i was looking at" http:... - loading_text: null, // [string] optional loading text, displayed while tweets load - refresh_interval: null , // [integer] optional number of seconds after which to reload tweets - twitter_url: "twitter.com", // [string] custom twitter url, if any (apigee, etc.) - twitter_api_url: "api.twitter.com", // [string] custom twitter api url, if any (apigee, etc.) - twitter_search_url: "search.twitter.com", // [string] custom twitter search url, if any (apigee, etc.) - template: "{avatar}{time}{join}{text}", // [string or function] template used to construct each tweet <li> - see code for available vars - comparator: function(tweet1, tweet2) { // [function] comparator used to sort tweets (see Array.sort) - return tweet2["tweet_time"] - tweet1["tweet_time"]; - }, - filter: function(tweet) { // [function] whether or not to include a particular tweet (be sure to also set 'fetch') - return true; - } - // You can attach callbacks to the following events using jQuery's standard .bind() mechanism: - // "loaded" -- triggered when tweets have been fetched and rendered - }, o); - - // See http://daringfireball.net/2010/07/improved_regex_for_matching_urls - var url_regexp = /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi; - - // Expand values inside simple string templates with {placeholders} - function t(template, info) { - if (typeof template === "string") { - var result = template; - for(var key in info) { - var val = info[key]; - result = result.replace(new RegExp('{'+key+'}','g'), val === null ? '' : val); - } - return result; - } else return template(info); - } - // Export the t function for use when passing a function as the 'template' option - $.extend({tweet: {t: t}}); - - function replacer (regex, replacement) { - return function() { - var returning = []; - this.each(function() { - returning.push(this.replace(regex, replacement)); - }); - return $(returning); - }; - } - - function escapeHTML(s) { - return s.replace(/</g,"<").replace(/>/g,"^>"); - } - - $.fn.extend({ - linkUser: replacer(/(^|[\W])@(\w+)/gi, "$1<span class=\"at\">@</span><a href=\"http://"+s.twitter_url+"/$2\">$2</a>"), - // Support various latin1 (\u00**) and arabic (\u06**) alphanumeric chars - linkHash: replacer(/(?:^| )[\#]+([\w\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0600-\u06ff]+)/gi, - ' <a href="http://'+s.twitter_search_url+'/search?q=&tag=$1&lang=all'+((s.username && s.username.length == 1 && !s.list) ? '&from='+s.username.join("%2BOR%2B") : '')+'" class="tweet_hashtag">#$1</a>'), - makeHeart: replacer(/(<)+[3]/gi, "<tt class='heart'>♥</tt>") - }); - - function linkURLs(text, entities) { - return text.replace(url_regexp, function(match) { - var url = (/^[a-z]+:/i).test(match) ? match : "http://"+match; - var text = match; - for(var i = 0; i < entities.length; ++i) { - var entity = entities[i]; - if (entity.url == url && entity.expanded_url) { - url = entity.expanded_url; - text = entity.display_url; - break; - } - } - return "<a href=\""+escapeHTML(url)+"\">"+escapeHTML(text)+"</a>"; - }); - } - - function parse_date(date_str) { - // The non-search twitter APIs return inconsistently-formatted dates, which Date.parse - // cannot handle in IE. We therefore perform the following transformation: - // "Wed Apr 29 08:53:31 +0000 2009" => "Wed, Apr 29 2009 08:53:31 +0000" - return Date.parse(date_str.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i, '$1,$2$4$3')); - } - - function relative_time(date) { - var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); - var delta = parseInt((relative_to.getTime() - date) / 1000, 10); - var r = ''; - if (delta < 1) { - r = 'just now'; - } else if (delta < 60) { - r = delta + ' seconds ago'; - } else if(delta < 120) { - r = 'about a minute ago'; - } else if(delta < (45*60)) { - r = 'about ' + (parseInt(delta / 60, 10)).toString() + ' minutes ago'; - } else if(delta < (2*60*60)) { - r = 'about an hour ago'; - } else if(delta < (24*60*60)) { - r = 'about ' + (parseInt(delta / 3600, 10)).toString() + ' hours ago'; - } else if(delta < (48*60*60)) { - r = 'about a day ago'; - } else { - r = 'about ' + (parseInt(delta / 86400, 10)).toString() + ' days ago'; - } - return r; - } - - function build_auto_join_text(text) { - if (text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) { - return s.auto_join_text_reply; - } else if (text.match(url_regexp)) { - return s.auto_join_text_url; - } else if (text.match(/^((\w+ed)|just) .*/im)) { - return s.auto_join_text_ed; - } else if (text.match(/^(\w*ing) .*/i)) { - return s.auto_join_text_ing; - } else { - return s.auto_join_text_default; - } - } - - function build_api_request() { - var modpath = s.modpath, - count = (s.fetch === null) ? s.count : s.fetch, - defaults = { - include_entities: 1 - }; - - if (s.list) { - return { - host: s.twitter_api_url, - url: "/1.1/lists/statuses.json", - parameters: $.extend({}, defaults, { - list_id: s.list_id, - slug: s.list, - owner_screen_name: s.username, - page: s.page, - count: count, - include_rts: (s.retweets ? 1 : 0) - }) - }; - } else if (s.favorites) { - return { - host: s.twitter_api_url, - url: "/1.1/favorites/list.json", - parameters: $.extend({}, defaults, { - list_id: s.list_id, - screen_name: s.username, - page: s.page, - count: count - }) - }; - } else if (s.query === null && s.username.length === 1) { - return { - host: s.twitter_api_url, - url: "/1.1/statuses/user_timeline.json", - parameters: $.extend({}, defaults, { - screen_name: s.username, - page: s.page, - count: count, - include_rts: (s.retweets ? 1 : 0) - }) - }; - } else { - var query = (s.query || 'from:'+s.username.join(' OR from:')); - return { - host: s.twitter_search_url, - url: "/search.json", - parameters: $.extend({}, defaults, { - page: s.page, - q: query, - rpp: count - }) - }; - } - } - - function extract_avatar_url(item, secure) { - if (secure) { - return ('user' in item) ? - item.user.profile_image_url_https : - extract_avatar_url(item, false). - replace(/^http:\/\/[a-z0-9]{1,3}\.twimg\.com\//, "https://s3.amazonaws.com/twitter_production/"); - } else { - return item.profile_image_url || item.user.profile_image_url; - } - } - - // Convert twitter API objects into data available for - // constructing each tweet <li> using a template - function extract_template_data(item) { - var o = {}; - o.item = item; - o.source = item.source; - // The actual user name is not returned by all Twitter APIs, so please do not file an issue if it is empty. - o.name = item.from_user_name || item.user.name; - o.screen_name = item.from_user || item.user.screen_name; - o.avatar_size = s.avatar_size; - o.avatar_url = extract_avatar_url(item, (document.location.protocol === 'https:')); - o.retweet = typeof(item.retweeted_status) != 'undefined'; - o.tweet_time = parse_date(item.created_at); - o.join_text = s.join_text == "auto" ? build_auto_join_text(item.text) : s.join_text; - o.tweet_id = item.id_str; - o.twitter_base = "http://"+s.twitter_url+"/"; - o.user_url = o.twitter_base+o.screen_name; - o.tweet_url = o.user_url+"/status/"+o.tweet_id; - o.reply_url = o.twitter_base+"intent/tweet?in_reply_to="+o.tweet_id; - o.retweet_url = o.twitter_base+"intent/retweet?tweet_id="+o.tweet_id; - o.favorite_url = o.twitter_base+"intent/favorite?tweet_id="+o.tweet_id; - o.retweeted_screen_name = o.retweet && item.retweeted_status.user.screen_name; - o.tweet_relative_time = relative_time(o.tweet_time); - o.entities = item.entities ? (item.entities.urls || []).concat(item.entities.media || []) : []; - o.tweet_raw_text = o.retweet ? ('RT @'+o.retweeted_screen_name+' '+item.retweeted_status.text) : item.text; // avoid '...' in long retweets - o.tweet_text = $([linkURLs(o.tweet_raw_text, o.entities)]).linkUser().linkHash()[0]; - o.tweet_text_fancy = $([o.tweet_text]).makeHeart()[0]; - - // Default spans, and pre-formatted blocks for common layouts - o.user = t('<a class="tweet_user" href="{user_url}">{screen_name}</a>', o); - o.join = s.join_text ? t(' <span class="tweet_join">{join_text}</span> ', o) : ' '; - o.avatar = o.avatar_size ? - t('<a class="tweet_avatar" href="{user_url}"><img src="{avatar_url}" height="{avatar_size}" width="{avatar_size}" alt="{screen_name}\'s avatar" title="{screen_name}\'s avatar" border="0"/></a>', o) : ''; - o.time = t('<span class="tweet_time"><a href="{tweet_url}" title="view tweet on twitter">{tweet_relative_time}</a></span>', o); - o.text = t('<span class="tweet_text">{tweet_text_fancy}</span>', o); - o.reply_action = t('<a class="tweet_action tweet_reply" href="{reply_url}">reply</a>', o); - o.retweet_action = t('<a class="tweet_action tweet_retweet" href="{retweet_url}">retweet</a>', o); - o.favorite_action = t('<a class="tweet_action tweet_favorite" href="{favorite_url}">favorite</a>', o); - return o; - } - - return this.each(function(i, widget){ - var list = $('<ul class="tweet_list">'); - var intro = '<p class="tweet_intro">'+s.intro_text+'</p>'; - var outro = '<p class="tweet_outro">'+s.outro_text+'</p>'; - var loading = $('<p class="loading">'+s.loading_text+'</p>'); - - if(s.username && typeof(s.username) == "string"){ - s.username = [s.username]; - } - - $(widget).unbind("tweet:load").bind("tweet:load", function(){ - if (s.loading_text) $(widget).empty().append(loading); - - $.ajax({ - dataType: "json", - type: "post", - async: false, - url: s.modpath || "/twitter/", - data: { request: build_api_request() }, - success: function(data, status) { - - if(data.message) { - console.log(data.message); - } - - var response = data.response; - $(widget).empty().append(list); - if (s.intro_text) list.before(intro); - list.empty(); - - if(response.statuses !== undefined) { - resp = response.statuses; - } else if(response.results !== undefined) { - resp = response.results; - } else { - resp = response; - } - - var tweets = $.map(resp, extract_template_data); - tweets = $.grep(tweets, s.filter).sort(s.comparator).slice(0, s.count); - - list.append($.map(tweets, function(o) { return "<li>" + t(s.template, o) + "</li>"; }).join('')). - children('li:first').addClass('tweet_first').end(). - children('li:odd').addClass('tweet_even').end(). - children('li:even').addClass('tweet_odd'); - - if (s.outro_text) list.after(outro); - $(widget).trigger("loaded").trigger((tweets ? "empty" : "full")); - if (s.refresh_interval) { - window.setTimeout(function() { $(widget).trigger("tweet:load"); }, 1000 * s.refresh_interval); - } - } - }); - }).trigger("tweet:load"); - }); - }; -})); diff --git a/dashboard/js/lobipanel.js b/dashboard/js/lobipanel.js deleted file mode 100644 index a90cc27f..00000000 --- a/dashboard/js/lobipanel.js +++ /dev/null @@ -1,1572 +0,0 @@ -//Author : @arboshiki -/** - * Generates random string of n length. - * String contains only letters and numbers - * - * @param {int} n - * @returns {String} - */ -Math.randomString = function(n) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - - for (var i = 0; i < n; i++) - text += possible.charAt(Math.floor(Math.random() * possible.length)); - - return text; -}; - -/** - * This function is for HTML element style attribute. - * It converts the style attribute to css object - * - * @returns {object} - */ -String.prototype.getCss = function(){ - var css = {}; - var style = this.valueOf().split(';'); - for (var i = 0; i < style.length; i++) { - style[i] = $.trim(style[i]); - if (style[i]) { - var s = style[i].split(':'); - css[$.trim(s[0])] = $.trim(s[1]); - } - } - return css; -}; -String.prototype.trim = function(){ - return this.replace(/^\s+|\s+$/g, ""); -}; - -String.prototype.toCamel = function(){ - return this.replace(/(\-[a-z])/g, function($1){return $1.toUpperCase().replace('-','');}); -}; - -String.prototype.toDash = function(){ - return this.replace(/([A-Z])/g, function($1){return "-"+$1.toLowerCase();}); -}; -String.prototype.toUnderscore = function(){ - return this.replace(/([A-Z])/g, function($1){return "_"+$1.toLowerCase();}); -}; - -/** - * Checks if number is between two numbers - * - * @param {number} num1 - * @param {number} num2 - * @param {boolean} including "include these numbers in comparison or not" default false - * @returns boolean - */ -Number.prototype.isBetween = function(num1, num2, including){ - if ( ! including){ - if (this.valueOf() < num2 && this.valueOf() > num1) { - return true; - } - }else{ - if (this.valueOf() <= num2 && this.valueOf() >= num1) { - return true; - } - } - return false; -}; - -/** - * Inserts element at specific index in given elements children - * - * @param {number} i - * @param {string} selector - * @returns {undefined} - */ -$.fn.insertAt = function(i, selector) { - var object = selector; - if (typeof selector === 'string'){ - object = $(selector); - } - - i = Math.min(object.children().length, i); - if(i == 0) { - object.prepend(this); - return this; - } - var oldIndex = this.data('index'); - - this.attr('data-index', i); - object.find(">*:nth-child(" + i + ")").after(this); - object.children().each(function(index, el){ - var $el = $(el); - if (oldIndex < i && index > oldIndex && index <= i){ - $el.attr('data-index', parseInt($el.data('data-index'), 10) - 1); - } else if (oldIndex >= i && index > i && index <= oldIndex){ - $el.attr('data-index', parseInt($el.attr('data-index'), 10) + 1); - } - }); - return this; -}; - -$.fn.disableSelection = function() { - return this - .attr('unselectable', 'on') - .css('user-select', 'none') - .on('selectstart', false); -}; - -$.fn.enableSelection = function() { - return this - .removeAttr('unselectable') - .css('user-select', 'initial') - .off('selectstart'); -}; - -$(function(){ - var LobiPanel = function($el, options) { -//------------------------------------------------------------------------------ -//----------------PROTOTYPE VARIABLES------------------------------------------- -//------------------------------------------------------------------------------ - this.$el = null; - this.$options = {}; - this.hasRandomId = false; - this.storage = null; -//------------------------------------------------------------------------------ -//-----------------PRIVATE VARIABLES-------------------------------------------- -//------------------------------------------------------------------------------ - var $heading, - $body, - innerId, - storagePrefix = 'lobipanel_', - me = this; -//------------------------------------------------------------------------------ -//-----------------PRIVATE FUNCTIONS-------------------------------------------- -//------------------------------------------------------------------------------ - var _processInput = function(options){ - if ( ! options) { - options = {}; - } - - var opts = _getOptionsFromAttributes(); -// window.console.log(opts); - options = $.extend({}, $.fn.lobiPanel.DEFAULTS, me.storage, options, opts); - var objects = ['unpin', 'reload', 'expand', 'minimize', 'close', 'editTitle']; - for (var i=0; i<objects.length; i++){ - var prop = objects[i]; - if (typeof options[prop] === 'object'){ - options[prop] = $.extend({}, $.fn.lobiPanel.DEFAULTS[prop], options[prop], opts[prop]); - } - } - return options; - }; - - var _init = function(){ - me.$el.addClass('lobipanel'); - - $heading.append(_generateControls()); -//------------------------------------------------------------------------------ - var parent = me.$el.parent(); - _appendInnerIdToParent(parent, innerId); - _enableSorting(); - _adjustForScreenSize(); - _onToggleIconsBtnClick(); - _enableResponsiveness(); - _setBodyHeight(); - if (me.$options.autoload){ - me.load(); - } - var maxWidth = 'calc(100% - '+$heading.find('.dropdown-menu').children().length * $heading.find('.dropdown-menu li').first().outerWidth()+"px)"; - $heading.find('.panel-title').css('max-width', maxWidth); - - _triggerEvent("init"); - }; - var _generateControls = function(){ - var dropdown = _generateDropdown(); - var menu = dropdown.find('.dropdown-menu'); - if (me.$options.editTitle !== false){ - menu.append(_generateEditTitle()); - } - if (me.$options.unpin !== false){ - menu.append(_generateUnpin()); - } - if (me.$options.reload !== false){ - menu.append(_generateReload()); - } - if (me.$options.minimize !== false){ - menu.append(_generateMinimize()); - } - if (me.$options.expand !== false){ - menu.append(_generateExpand()); - } - if (me.$options.close !== false){ - menu.append(_generateClose()); - } - menu.find('>li>a').on('click', function (ev) { - ev.preventDefault(); - ev.stopPropagation(); - }); - return dropdown; - }; - var _generateDropdown = function(){ - return $('<div class="dropdown"></div>') - .append('<ul class="dropdown-menu dropdown-menu-right"></ul>') - .append('<div class="dropdown-toggle" data-toggle="dropdown"><span class="'+LobiPanel.PRIVATE_OPTIONS.iconClass+' '+me.$options.toggleIcon+'"></div>'); - }; - var _generateEditTitle = function(){ - var options = me.$options.editTitle; - var control = $('<a data-func="editTitle"></a>'); - control.append('<i class="'+LobiPanel.PRIVATE_OPTIONS.iconClass+' '+options.icon+'"></i>'); - if (options.tooltip && typeof options.tooltip === 'string') { - control.append('<span class="control-title">'+options.tooltip+'</span>'); - control.attr('data-tooltip', options.tooltip); - } - - _onEditTitleClick(control); - return $('<li></li>').append(control); - }; - var _onEditTitleClick = function(control){ - control.on('mousedown', function(ev){ - ev.stopPropagation(); - }); - control.on('click', function (ev) { - ev.stopPropagation(); - $heading.find('[data-func="editTitle"]').tooltip('hide'); - if (me.isTitleEditing()){ - me.finishTitleEditing(); - }else{ - me.startTitleEditing(); - } - }); - }; - var _generateUnpin = function(){ - var options = me.$options.unpin; - var control = $('<a data-func="unpin"></a>'); - control.append('<i class="'+LobiPanel.PRIVATE_OPTIONS.iconClass+' '+options.icon+'"></i>'); - if (options.tooltip && typeof options.tooltip === 'string') { - control.append('<span class="control-title">'+options.tooltip+'</span>'); - control.attr('data-tooltip', options.tooltip); - } - _onUnpinClick(control); - return $('<li></li>').append(control); - }; - var _onUnpinClick = function(control){ - control.on('mousedown', function(ev){ - ev.stopPropagation(); - }); - control.on('click', function() { - me.togglePin(); - }); - }; - var _generateReload = function(){ - var options = me.$options.reload; - var control = $('<a data-func="reload"></a>'); - control.append('<i class="'+LobiPanel.PRIVATE_OPTIONS.iconClass + ' ' + options.icon + '"></i>'); - if (options.tooltip && typeof options.tooltip === 'string') { - control.append('<span class="control-title">'+options.tooltip+'</span>'); - control.attr('data-tooltip', options.tooltip); - } - _onReloadClick(control); - return $('<li></li>').append(control); - }; - var _onReloadClick = function(control){ - control.on('mousedown', function(ev){ - ev.stopPropagation(); - }); - control.on('click', function() { - me.load({ - callback: function(){ - control.tooltip('hide'); - } - }); - }); - }; - var _generateMinimize = function(){ - var options = me.$options.minimize; - var control = $('<a data-func="minimize"></a>'); - control.append('<i class="'+LobiPanel.PRIVATE_OPTIONS.iconClass+' '+ options.icon + '"></i>'); - if (options.tooltip && typeof options.tooltip === 'string') { - control.append('<span class="control-title">'+options.tooltip+'</span>'); - control.attr('data-tooltip', options.tooltip); - } - _onMinimizeClick(control); - return $('<li></li>').append(control); - }; - var _onMinimizeClick = function(control){ - control.on('mousedown', function(ev){ - ev.stopPropagation(); - }); - control.on('click', function(ev) { - ev.stopPropagation(); - me.toggleMinimize(); - }); - }; - var _generateExpand = function(){ - var options = me.$options.expand; - var control = $('<a data-func="expand"></a>'); - control.append('<i class="'+LobiPanel.PRIVATE_OPTIONS.iconClass+' '+options.icon+'"></i>'); - if (options.tooltip && typeof options.tooltip === 'string') { - control.append('<span class="control-title">'+options.tooltip+'</span>'); - control.attr('data-tooltip', options.tooltip); - } - _onExpandClick(control); - return $('<li></li>').append(control); - }; - var _onExpandClick = function(control) { - control.on('mousedown', function(ev){ - ev.stopPropagation(); - }); - control.on('click', function(ev) { - ev.stopPropagation(); - me.toggleSize(); - }); - }; - var _generateClose = function() { - var options = me.$options.close; - var control = $('<a data-func="close"></a>'); - control.append('<i class="' + LobiPanel.PRIVATE_OPTIONS.iconClass + ' ' + options.icon + '"></i>'); - if (options.tooltip && typeof options.tooltip === 'string') { - control.append('<span class="control-title">'+options.tooltip+'</span>'); - control.attr('data-tooltip', options.tooltip); - } - _onCloseClick(control); - return $('<li></li>').append(control); - }; - var _onCloseClick = function(control) { - control.on('mousedown', function(ev){ - ev.stopPropagation(); - }); - control.on('click', function(ev) { - ev.stopPropagation(); - control.tooltip('hide'); - me.close(); - }); - }; - var _getMaxZIndex = function(){ - var panels = $('.lobipanel.panel-unpin:not(.panel-minimized.panel-expanded)'), - style, - max, - cur; - if (panels.length === 0){ - return { - "id": "", - "z-index": LobiPanel.PRIVATE_OPTIONS.initialZIndex - }; - } - style = $(panels[0]).attr('style'); - var id = $(panels[0]).data('inner-id'); - if ( ! style){ - max = LobiPanel.PRIVATE_OPTIONS.initialZIndex; - }else{ - max = style.getCss()['z-index']; - } - for (var i = 1; i<panels.length; i++){ - style = $(panels[i]).attr('style'); - if ( ! style){ - cur = 0; - }else{ - cur = style.getCss()['z-index']; - } - if (cur > max){ - id = $(panels[i]).data('inner-id'); - max = cur; - } - } - return { - "id" : id, - "z-index" : parseInt(max, 10) - }; - }; - var _onPanelClick = function(){ - me.$el.on('mousedown.lobiPanel', function(){ - if (me.isPinned() || - me.isMinimized() || - me.isOnFullScreen()) { - return false; - } - me.bringToFront(); - }); - }; - var _offPanelClick = function(){ - me.$el.off('mousedown.lobiPanel'); - }; - var _changeClassOfControl = function(el){ - el = $(el); - var opts = me.$options[el.attr('data-func')]; - if ( ! opts.icon){ - return; - } - el.find('.'+LobiPanel.PRIVATE_OPTIONS.iconClass).toggleClass(opts.icon).toggleClass(opts.icon2); - }; - var _getFooterForMinimizedPanels = function(){ - //we grab footer where minimized panels should go - var minimizedCtr = $('.'+LobiPanel.PRIVATE_OPTIONS.toolbarClass); - //if panel does not exist we create it and append to body - if (minimizedCtr.length === 0){ - minimizedCtr = $('<div class="'+LobiPanel.PRIVATE_OPTIONS.toolbarClass+'"></div>'); - $('body').append(minimizedCtr); - } - return minimizedCtr; - }; - var _expandOnHeaderClick = function(){ - $heading.on('click.lobiPanel', function(){ - me.maximize(); - me.bringToFront(); - }); - }; - var _removeExpandOnHeaderClick = function(){ - $heading.off('click.lobiPanel'); - }; - var _getAvailableWidth = function(calcWidth){ - if (me.$options.maxWidth) { - calcWidth = Math.min(calcWidth, me.$options.maxWidth); - } - if (me.$options.minWidth) { - calcWidth = Math.max(calcWidth, me.$options.minWidth); - } - return calcWidth; - }; - var _getAvailableHeight = function(calcHeight){ - if (me.$options.maxHeight) { - calcHeight = Math.min(calcHeight, me.$options.maxHeight); - } - if (me.$options.minHeight) { - calcHeight = Math.max(calcHeight, me.$options.minHeight); - } - return calcHeight; - }; - var _calculateBodyHeight = function(h){ - return h - $heading.outerHeight() - me.$el.find('.panel-footer').outerHeight(); - }; - var _calculateBodyWidth = function(w){ - return w - 2; - }; - var _appendInnerIdToParent = function(parent, innerId){ - //If this is first lobipanel element of its parent - if (parent.attr(LobiPanel.PRIVATE_OPTIONS.parentAttr) === undefined){ - parent.attr(LobiPanel.PRIVATE_OPTIONS.parentAttr, innerId); - } - //This means that parent already has LobiPanel instance - else{ - //if parent already has panel innerId than we do nothing - if (parent.attr(LobiPanel.PRIVATE_OPTIONS.parentAttr).indexOf(innerId) > -1) { - return; - } - var innerIds = parent.attr(LobiPanel.PRIVATE_OPTIONS.parentAttr); - parent.attr(LobiPanel.PRIVATE_OPTIONS.parentAttr, innerIds+" "+innerId); - } - me.$el.attr('data-index', me.$el.index()); - }; - var _insertInParent = function(){ - //find its parent element - var parent = $('[' + LobiPanel.PRIVATE_OPTIONS.parentAttr + '~=' + innerId + ']'); - me.$el.insertAt(me.$el.attr('data-index'), parent); - }; - var _generateWindow8Spinner = function(){ - var template = ['<div class="spinner spinner-windows8">', - '<div class="wBall">', - '<div class="wInnerBall">', - '</div>', - '</div>', - '<div class="wBall">', - '<div class="wInnerBall">', - '</div>', - '</div>', - '<div class="wBall">', - '<div class="wInnerBall">', - '</div>', - '</div>', - '<div class="wBall">', - '<div class="wInnerBall">', - '</div>', - '</div>', - '<div class="wBall">', - '<div class="wInnerBall">', - '</div>', - '</div>', - '</div>'].join(""); - return $('<div class="spinner-wrapper">'+template+'</div>'); - }; - var _enableSorting = function(){ - var parent = me.$el.parent(); - if (parent.hasClass('ui-sortable')){ - parent.sortable("destroy"); - } - if (me.$options.sortable){ - me.$el.addClass('lobipanel-sortable'); - parent.addClass('lobipanel-parent-sortable'); - }else{ - me.$el.removeClass('lobipanel-sortable'); - } - parent.sortable({ - connectWith: '.lobipanel-parent-sortable', - items: '.lobipanel-sortable', - handle: '.panel-heading', - cursor: 'move', - placeholder: 'lobipanel-placeholder', - forcePlaceholderSize: true, - opacity: 0.7, - revert: 300, - update: function (event, ui) { - var innerId = ui.item.data('inner-id'); - _removeInnerIdFromParent(innerId); - _appendInnerIdToParent(ui.item.parent(), innerId); - _updateDataIndices(ui.item); - _triggerEvent('dragged'); - } - }); - }; - var _disableSorting = function () { - var parent = me.$el.parent(); - if (parent.hasClass('ui-sortable')) { - parent.sortable("destroy"); - } - }; - var _updateDataIndices = function(panel){ - var items = panel.parent().find('> *'); - items.each(function(index, el){ - $(el).attr('data-index', index); - }); - }; - var _removeInnerIdFromParent = function(innerId){ - var parent = $('[' + LobiPanel.PRIVATE_OPTIONS.parentAttr + '~=' + innerId + ']'); - var innerIds = parent.attr(LobiPanel.PRIVATE_OPTIONS.parentAttr).replace(innerId, '').trim().replace(/\s{2,}/g, ' '); - parent.attr(LobiPanel.PRIVATE_OPTIONS.parentAttr, innerIds); - }; - var _onToggleIconsBtnClick = function(){ - $heading.find('.toggle-controls').on('click.lobiPanel', function(){ - me.$el.toggleClass("controls-expanded"); - }); - }; - var _adjustForScreenSize = function(){ - me.disableTooltips(); - if ($(window).width() > 768 && me.$options.tooltips){ - me.enableTooltips(); - } - if (me.isOnFullScreen()){ - $body.css({ - width: _calculateBodyWidth(me.$el.width()), - height: _calculateBodyHeight(me.$el.height()) - }); - } - }; - var _enableResponsiveness = function(){ - $(window).on('resize.lobiPanel', function(){ - _adjustForScreenSize(); - }); - }; - var _setBodyHeight = function(){ - if (me.$options.bodyHeight !== 'auto') { - $body.css({ - 'height': me.$options.bodyHeight, - overflow: 'auto' - }); - } - }; - var _getOptionsFromAttributes = function(){ - var $el = me.$el; - var options = {}; - for (var key in $.fn.lobiPanel.DEFAULTS){ - var k = key.toDash(); - var val = $el.data(k); - if (val !== undefined){ - if (typeof $.fn.lobiPanel.DEFAULTS[key] !== 'object'){ - options[key] = val; - }else{ - options[key] = eval('('+val+')'); - } - } - } - return options; - }; - var _saveState = function(state){ - if (!me.hasRandomId && me.$options.stateful){ - me.storage.state = state; - _saveLocalStorage(me.storage); - } - }; - var _saveLocalStorage = function(storage){ - localStorage.setItem(storagePrefix+innerId, JSON.stringify(storage)); - }; - var _applyState = function(state){ - switch (state){ - case 'unpinned': - me.unpin(); - break; - case 'minimized': - me.unpin(); - me.minimize(); - break; - case 'collapsed': - me.minimize(); - break; - case 'fullscreen': - me.toFullScreen(); - break; - default: - break; - } - }; - - var _applyIndex = function (index) { - if (index !== null){ - me.$el.insertAt(index, me.$el.parent()); - } - }; - - var _triggerEvent = function(eventType){ - var args = Array.prototype.slice.call(arguments, 1); - args.unshift(me); - me.$el.trigger(eventType+'.lobiPanel', args); - }; -//------------------------------------------------------------------------------ -//----------------PROTOTYPE FUNCTIONS------------------------------------------- -//------------------------------------------------------------------------------ - /** - * Checks if panel is initialized. Panel is initialized if it has - * lobipanel class and data-inner-id="" attribute - * - * @returns {boolean} - */ - this.isPanelInit = function(){ - return me.$el.hasClass('lobipanel') && me.$el.data('inner-id'); - }; - /** - * Checks if panel is pinned or unpinned - * - * @returns {Boolean} - */ - this.isPinned = function(){ - return !me.$el.hasClass('panel-unpin'); - }; - /** - * Pin the panel - * - * @returns {LobiPanel} - */ - this.pin = function(){ - _triggerEvent("beforePin"); - //hide the tooltip - $heading.find('[data-func="unpin"]').tooltip('hide'); - //disable resize functionality - me.disableResize(); - me.disableDrag(); - _enableSorting(); - //remove on panel click event (which brings the panel into front) - _offPanelClick(); - //remove panel-unpin class - me.$el.removeClass('panel-unpin') - //save current position, z-index and size to use it for later unpin - .attr('old-style', me.$el.attr('style')) - .removeAttr('style') - .css('position', 'relative'); - $body.css({ - width: '', - height: '' - }); - _setBodyHeight(); - _insertInParent(); - _saveState('pinned'); - _triggerEvent("onPin"); - return me; - }; - /** - * Unpin the panel - * - * @returns {LobiPanel} - */ - this.unpin = function(){ - _triggerEvent('beforeUnpin'); - if (me.$el.hasClass("panel-collapsed")){ - return me; - } - _disableSorting(); - $heading.find('[data-func="unpin"]').tooltip('hide'); - if (me.$el.attr('old-style')) { - me.$el.attr('style', me.$el.attr('old-style')); - } else { - var width = me.$el.width(); - var height = me.$el.height(); -// var left = Math.round($(window).width() / 2 - width / 2); - var left = Math.max(0, (($(window).width() - me.$el.outerWidth()) / 2)); -// var top = Math.round($(window).height() / 2 - height / 2); -// var top = Math.max(0, (($(window).height() - me.$el.outerHeight()) / 2)); - var top = 300; - me.$el.css({ - left: left, - top: top, - width: width, - height: height -// right: $(window).width() - left - width + 2, -// bottom: $(window).height() - top - height + 2 - }); - } - var res = _getMaxZIndex(); - me.$el.css('z-index', res['z-index'] + 1); - _onPanelClick(); - - me.$el.addClass('panel-unpin'); - $('body').append(me.$el); - - var panelWidth = _getAvailableWidth(me.$el.width()); - var panelHeight = _getAvailableHeight(me.$el.height()); - me.$el.css({ - position: 'fixed', - width: panelWidth, - height: panelHeight - }); - //we give .panel-body to width and height in order .panel-body to start scroling - var bHeight = _calculateBodyHeight(panelHeight); - var bWidth = _calculateBodyWidth(panelWidth); - $body.css({ - width: bWidth, - height: bHeight - }); - - if (me.$options.draggable) { - me.enableDrag(); - } - if (me.$options.resize !== 'none'){ - me.enableResize(); - } - _saveState('unpinned'); - _triggerEvent('onUnpin'); - return me; - }; - /** - * Toggles (pin or unpin) the panel - * - * @returns {LobiPanel} - */ - this.togglePin = function(){ - if (this.isPinned()){ - this.unpin(); - }else{ - this.pin(); - } - return me; - }; - /** - * Checks if panel is minimized or not. It does not matter if panel is pinned or not - * - * @returns {Boolean} - */ - this.isMinimized = function(){ - return me.$el.hasClass('panel-minimized') || me.$el.hasClass('panel-collapsed'); - }; - /** - * Minimize the panel. If panel is pinned it is minimized on its place - * if panel is unpinned it is minimized at the bottom of the page - * - * @returns {LobiPanel} - */ - this.minimize = function(){ - _triggerEvent("beforeMinimize"); - if (me.isMinimized()){ - return me; - } - if (me.isPinned()) { - $body.slideUp(); - me.$el.find('.panel-footer').slideUp(); - me.$el.addClass('panel-collapsed'); - _saveState('collapsed'); - _changeClassOfControl($heading.find('[data-func="minimize"]')); - } else { - me.disableTooltips(); - $heading.find('[data-func="minimize"]').tooltip('hide'); - //get footer where we need to put panel - var footer = _getFooterForMinimizedPanels(); - //find other panels which are already inside footer - var children = footer.find('>*'); - var left, top; - //get top coordinate of footer - top = footer.offset().top; - //if there are no other panels inside footer, this panel will be first - //and its left coordinate will be footer's left coordinate - if (children.length === 0) { - left = footer.offset().left; - } else { - //if there exist panels inside footer, then this panel's left - //coordinate will be last panel's (in footer) right coordinate - var ch = $(children[children.length - 1]); - left = ch.offset().left + ch.width(); - } - //if panel was not expanded and it was jus unpin we need to save - //panel's style - if (!me.$el.hasClass('panel-expanded')) { - me.$el.attr('old-style', me.$el.attr('style')); - } - me.$el.animate({ - left: left, - top: top, - width: 200, - height: footer.height() - }, 100, function () { - //if panel was expanded on full screen before we minimize it - //after minimization we remove 'panel-expanded' class and we change icon - if (me.$el.hasClass('panel-expanded')) { - me.$el.removeClass('panel-expanded'); - me.$el.find('.panel-heading [data-func=expand] .' + LobiPanel.PRIVATE_OPTIONS.iconClass) - .removeClass(me.$options.expand.icon2) - .addClass(me.$options.expand.icon) - ; - } - //we add 'panel-minimized' class - me.$el.addClass('panel-minimized'); - me.$el.removeAttr('style'); - me.disableDrag(); - me.disableResize(); - _expandOnHeaderClick(); - //animation was made and panel is positioned in place we it must be - //so we append panel into footer - footer.append(me.$el); - $('body').addClass('lobipanel-minimized'); - var maxWidth = 'calc(100% - '+$heading.find('.dropdown-menu li>a:visible').length * $heading.find('.dropdown-menu li>a:visible').first().outerWidth()+"px)"; - $heading.find('.panel-title').css('max-width', maxWidth); - _saveState('minimized'); - _triggerEvent("onMinimize"); - }); - } - return me; - }; - /** - * Maximize the panel. This method works for minimized panel. - * If panel is pinned it's maximized on its place. - * If panel is unpinned it's maximized on position from which it was minimized - * - * @returns {LobiPanel} - */ - this.maximize = function(){ - _triggerEvent("beforeMaximize"); - if ( ! me.isMinimized()){ - return me; - } - if (me.isPinned()){ - $body.slideDown(); - me.$el.find('.panel-footer').slideDown(); - me.$el.removeClass('panel-collapsed'); - _saveState('pinned'); - _changeClassOfControl($heading.find('[data-func="minimize"]')); - }else{ - me.enableTooltips(); - //we get css style which was saved before minimization - var css = me.$el.attr('old-style').getCss(); - //we give panel these css properties, coz animation work - me.$el.css({ - position: css.position || 'fixed', - 'z-index': css['z-index'], - left: me.$el.offset().left, - top: me.$el.offset().top, - width: me.$el.width(), - height: me.$el.height() - }); - //we append panel into body - $('body').append(me.$el); - //It is not possible to make animations to these propeties and we remove it - delete css['position']; - delete css['z-index']; -// css['position'] = 'absolute'; - //and we animate panel to its saved style - me.$el.animate(css, 100, function () { - //we remove position property from style, before 'panel-unpin' - //class has it to absolute - me.$el.css('position', ''); - me.$el.removeClass('panel-minimized'); - //as panel is already in its place we remove 'old-style' property - me.$el.removeAttr('old-style'); - if (me.$options.draggable){ - me.enableDrag(); - } - me.enableResize(); - _removeExpandOnHeaderClick(); - //If there are no other elements inside footer, remove it also - var footer = _getFooterForMinimizedPanels(); - if (footer.children().length === 0) { - footer.remove(); - } - $('body').removeClass('lobipanel-minimized') - .addClass('lobipanel-minimized'); - var maxWidth = 'calc(100% - ' + $heading.find('.dropdown-menu li').length * $heading.find('.dropdown-menu li').first().outerWidth() + "px)"; - $heading.find('.panel-title').css('max-width', maxWidth); - _saveState('unpinned'); - _triggerEvent("onMaximize"); - }); - } - return me; - }; - /** - * Toggles (minimize or maximize) the panel state. - * - * @returns {LobiPanel} - */ - this.toggleMinimize = function(){ - if (me.isMinimized()){ - me.maximize(); - }else{ - me.minimize(); - } - return me; - }; - /** - * Checks if panel is on full screen - * - * @returns {Boolean} - */ - this.isOnFullScreen = function(){ - return me.$el.hasClass('panel-expanded'); - }; - /** - * Expands the panel to full screen size - * - * @returns {LobiPanel} - */ - this.toFullScreen = function(){ - _triggerEvent("beforeFullScreen"); - if (me.$el.hasClass("panel-collapsed")){ - return me; - } - _changeClassOfControl($heading.find('[data-func="expand"]')); - $heading.find('[data-func="expand"]').tooltip('hide'); - var res = _getMaxZIndex(); - //if panel is pinned or minimized, its position is not absolute and - //animation will not work correctly so we change its position and - //other css properties and we append panel into body - if (me.isPinned() || me.isMinimized()) { - me.enableTooltips(); - me.$el.css({ - position: 'fixed', - "z-index": res["z-index"] + 1, - left: me.$el.offset().left, - top: me.$el.offset().top - $(window).scrollTop(), - width: me.$el.width(), - height: me.$el.height() - }); - $('body').append(me.$el); - //If we are expanding panel to full screen from footer and in footer there are no more elements - //remove footer also - var footer = _getFooterForMinimizedPanels(); - if (footer.children().length === 0) { - footer.remove(); - } - }else{ - $body.css({ - width: '', - height: '' - }); - _setBodyHeight(); - } - //if panel is not minimized we save its style property, because when - //toSmallSize() method is called panel needs to have style, it had before calling method - // toFullScreen() - if ( ! me.isMinimized()) { - me.$el.attr('old-style', me.$el.attr('style')); - me.disableResize(); - } else { - me.$el.removeClass('panel-minimized'); - _removeExpandOnHeaderClick(); - } - //get toolbar - var toolbar = $('.'+LobiPanel.PRIVATE_OPTIONS.toolbarClass); - var toolbarHeight = toolbar.outerHeight() || 0; - me.$el.animate({ - width: $(window).width(), - height: $(window).height() - toolbarHeight, - left: 0, - top: 0 - }, me.$options.expandAnimation, function () { - me.$el.css({ - width: '', - height: '', - right: 0, - bottom: toolbarHeight - }); - me.$el.addClass('panel-expanded'); - $('body').css('overflow', 'hidden'); - $body.css({ - width: _calculateBodyWidth(me.$el.width()), - height: _calculateBodyHeight(me.$el.height()) - }); - me.disableDrag(); - if (me.isPinned()){ - _disableSorting(); - } - _saveState('fullscreen'); - _triggerEvent("onFullScreen"); - }); - return me; - }; - /** - * Collapse the panel to small size - * - * @returns {LobiPanel} - */ - this.toSmallSize = function(){ - _triggerEvent("beforeSmallSize"); - _changeClassOfControl($heading.find('[data-func="expand"]')); - $heading.find('[data-func="expand"]').tooltip('hide'); - var css = me.$el.attr('old-style').getCss(); - //we get css properties from old-style (saved before expanding) - //and we animate panel to this css properties - me.$el.animate({ - left: css.left, - top: css.top, - width: css.width, - height: css.height, - right: css.right, - bottom: css.bottom - }, me.$options.collapseAnimation, function () { - //we remove old-style as we do not need it - me.$el.removeAttr('old-style'); - //if panel is pinned we also remove its style attribute and we - //append panel in its parent element - if (!me.$el.hasClass('panel-unpin')) { - me.$el.removeAttr('style'); - _insertInParent(); - _enableSorting(); - } else { - if (me.$options.draggable) { - me.enableDrag(); - } - me.enableResize(); - } - me.$el.removeClass('panel-expanded'); - $('body').css('overflow', 'auto'); - var bWidth = ''; - var bHeight = ''; - if ( ! me.isPinned()){ - bWidth = _calculateBodyWidth(me.getWidth()); - bHeight = _calculateBodyHeight(me.getHeight()); - _saveState('unpinned'); - }else if (me.$options.bodyHeight !== 'auto'){ - bHeight = me.$options.bodyHeight; - _saveState('pinned'); - } - $body.css({ - width: bWidth, - height: bHeight - }); - _triggerEvent("onSmallSize"); - }); - return me; - }; - /** - * Toggles (changes to full screen size or to small size) the panel size - * - * @returns {LobiPanel} - */ - this.toggleSize = function(){ - if (me.isOnFullScreen()){ - me.toSmallSize(); - }else{ - me.toFullScreen(); - } - return me; - }; - /** - * Closes the panel. Removes it from document - * - * @returns {LobiPanel} - */ - this.close = function(){ - _triggerEvent('beforeClose'); - me.$el.hide(100, function() { - if (me.isOnFullScreen()){ - $('body').css('overflow', 'auto'); - } - me.$el.remove(); - var footer = _getFooterForMinimizedPanels(); - if (footer.children().length === 0) { - footer.remove(); - } - _triggerEvent('onClose'); - }); - return me; - }; - /** - * Moves unpinned panel to given position. - * This method will do nothing if panel is pinned - * - * @param {number} left - * @param {number} top - * @returns {LobiPanel} - */ - this.setPosition = function(left, top){ - //this method works only if panel is not pinned - if (me.isPinned()){ - return me; - } - me.$el.animate({ - 'left': left, - 'top' : top - }, 100); - return me; - }; - /** - * Set the width of the panel - * - * @param {number} w - * @returns {LobiPanel} - */ - this.setWidth = function(w){ - if (me.isPinned()){ - return me; - } - var bWidth = _calculateBodyWidth(w); - me.$el.animate({ - width: w - }, 100); - $body.animate({ - width: bWidth - }, 100); - return me; - }; - /** - * Set the height of the panel - * - * @param {number} h - * @returns {LobiPanel} - */ - this.setHeight = function(h){ - if (me.isPinned()){ - return me; - } - var bHeight = _calculateBodyHeight(h); - me.$el.animate({ - height: h - }, 100); - $body.animate({ - height: bHeight - }, 100); - return me; - }; - /** - * Set size (width and height) of the panel - * - * @param {number} w - * @param {number} h - * @returns {LobiPanel} - */ - this.setSize = function(w, h){ - if (me.isPinned()){ - return me; - } - var bHeight = _calculateBodyHeight(h); - var bWidth = _calculateBodyWidth(w); - me.$el.animate({ - height: h, - width: w - }, 100); - $body.animate({ - height: bHeight, - width: bWidth - }, 100); - return me; - }; - /** - * Get the position of the panel. - * Returns object where x is left coordinate and y is top coordinate - * - * @returns {Object} - */ - this.getPosition = function(){ - var offset = me.$el.offset(); - return { - x: offset.left, - y: offset.top - }; - }; - /** - * Get width of the panel - * - * @returns {number} - */ - this.getWidth = function(){ - return me.$el.width(); - }; - /** - * Get height of the panel - * - * @returns {number} - */ - this.getHeight = function(){ - return me.$el.height(); - }; - /** - * If panel is overlapped by another panel this panel will be shown on front - * (this panel will overlap other panels) - * - * @returns {LobiPanel} - */ - this.bringToFront = function(){ - _triggerEvent("beforeToFront"); - var res = _getMaxZIndex(); - if (res['id'] === me.$el.data('inner-id')) { - return me; - } - me.$el.css('z-index', res['z-index'] + 1); - _triggerEvent("onToFront"); - return me; - }; - /** - * Enable dragging of panel - * - * @returns {LobiPanel} - */ - this.enableDrag = function(){ - me.$el.draggable({ - handle: '.panel-heading' - }); - return me; - }; - /** - * Disable dragging of the panel - * - * @returns {LobiPanel} - */ - this.disableDrag = function(){ - if (me.$el.hasClass('ui-draggable')){ - me.$el.draggable("destroy"); - } - return me; - }; - /** - * Enable resize of the panel - * - * @returns {LobiPanel} - */ - this.enableResize = function(){ - var handles = false; - if (me.$options.resize === 'vertical'){ - handles = 'n, s'; - }else if (me.$options.resize === 'horizontal'){ - handles = 'e, w'; - }else if (me.$options.resize === 'both'){ - handles = 'all'; - } - if ( ! handles){ - return; - } - me.$el.resizable({ - minWidth: me.$options.minWidth, - maxWidth: me.$options.maxWidth, - minHeight: me.$options.minHeight, - maxHeight: me.$options.maxHeight, - handles: handles, - start: function(){ - me.$el.disableSelection(); - _triggerEvent('resizeStart'); - }, - stop: function(){ - me.$el.enableSelection(); - _triggerEvent('resizeStop'); - }, - resize: function(){ - var bHeight = _calculateBodyHeight(me.$el.height()); - var bWidth = _calculateBodyWidth(me.$el.width()); - $body.css({ - width: bWidth, - height: bHeight - }); - _triggerEvent("onResize"); - } - }); - return me; - }; - /** - * Disable resize of the panel - * - * @returns {LobiPanel} - */ - this.disableResize = function(){ - if (me.$el.hasClass('ui-resizable')){ - me.$el.resizable("destroy"); - } - return me; - }; - /** - * Start spinner of the panel loading - * - * @returns {LobiPanel} - */ - this.startLoading = function(){ - var spinner = _generateWindow8Spinner(); - me.$el.append(spinner); - var sp = spinner.find('.spinner'); - sp.css('margin-top', 50); - return me; - }; - /** - * Stop spinner of the panel loading - * - * @returns {LobiPanel} - */ - this.stopLoading = function(){ - me.$el.find('.spinner-wrapper').remove(); - return me; - }; - /** - * Set url. This url will be used to load data when Reload button is clicked - * or user calls .load() method without url parameter - * - * @param {string} url - * @returns {LobiPanel} - */ - this.setLoadUrl = function(url){ - me.$options.loadUrl = url; - return me; - }; - /** - * Load data into .panel-body. - * params object is in format - * { - * url: '', //Optional: load url - * data: 'PlainObject or String', //Optional: A plain object or string of parameters which is sent to the server with the request. - * callback: 'function' //Optional: callback function which is called when load is finished - * } - * - * @param {Object} params - * @returns {LobiPanel} - */ - this.load = function(params){ - params = params || {}; - if (typeof params === 'string'){ - params = {url: params}; - } - var url = params.url || me.$options.loadUrl, - data = params.data || {}, - callback = params.callback || null; - - if ( ! url){ - return me; - } - _triggerEvent("beforeLoad"); - me.startLoading(); - $body.load(url, data, function(result, status, xhr){ - if (callback && typeof callback === 'function'){ - callback(result, status, xhr); - } - me.stopLoading(); - _triggerEvent("loaded", result, status, xhr); - }); - return me; - }; - /** - * Destroy the LobiPanel instance - * - * @returns {jQuery} - */ - this.destroy = function(){ - me.disableDrag(); - me.disableResize(); - me.$options.sortable = false; - _enableSorting(); - _removeInnerIdFromParent(innerId); - me.$el.removeClass('lobipanel') - .removeAttr('data-inner-id') - .removeAttr('data-index') - .removeData('lobiPanel'); - $heading.find('.dropdown').remove(); - return me.$el; - }; - /** - * Creates input field to edit panel title - * - * @returns {LobiPanel} - */ - this.startTitleEditing = function(){ - var title = $heading.find('.panel-title').text().trim(); - var input = $('<input value="'+title+'"/>'); - input.on('keydown', function(ev){ - if (ev.which === 13){ - me.finishTitleEditing(); - }else if (ev.which === 27){ - me.cancelTitleEditing(); - } - }); - $heading.find('.panel-title') - .data('old-title', title) - .html("").append(input); - input[0].focus(); - input[0].select(); - _changeClassOfControl($heading.find('[data-func="editTitle"]')); - return me; - }; - /** - * Check if panel title is being edited (if it is in edit process) - * - * @returns {Boolean} - */ - this.isTitleEditing = function(){ - return $heading.find('.panel-title input').length > 0; - }; - /** - * Cancel the panel new title and return to previous title when it is changed but not saved - * - * @returns {LobiPanel} - */ - this.cancelTitleEditing = function(){ - var title = $heading.find('.panel-title'); - title.html(title.data('old-title')) - .find('input').remove(); - _changeClassOfControl($heading.find('[data-func="editTitle"]')); - return me; - }; - /** - * Finish the panel title editing process and save new title - * - * @returns {LobiPanel} - */ - this.finishTitleEditing = function(){ - var input = $heading.find('input'); - $heading.find('.panel-title').html(input.val()); - input.remove(); - _changeClassOfControl($heading.find('[data-func="editTitle"]')); - return me; - }; - /** - * Enable tooltips on panel controls - * - * @returns {LobiPanel} - */ - this.enableTooltips = function () { - if ($(window).width() < 768){ - return me; - } - var controls = $heading.find('.dropdown-menu>li>a'); - controls.each(function (index, el) { - var $el = $(el); - $el.attr('data-toggle', 'tooltip') - .attr('data-title', $el.data('tooltip')) - .attr('data-placement', 'bottom') - ; - }); - controls.each(function(ind, el){ - $(el).tooltip({ - container: 'body', - template: '<div class="tooltip lobipanel-tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' - }); - }); - return me; - }; - /** - * Disable tooltips on panel controls - * - * @returns {LobiPanel} - */ - this.disableTooltips = function(){ - $heading.find('.dropdown-menu>li>a').tooltip('destroy'); - return me; - }; -//------------------------------------------------------------------------------ -//------------------------------------------------------------------------------ -//------------------------------------------------------------------------------ - this.$el = $el; - if ( ! me.$el.data('inner-id')){ - me.hasRandomId = true; - me.$el.attr('data-inner-id', Math.randomString(10)); - } - - innerId = me.$el.data('inner-id'); - if (!me.hasRandomId){ - me.storage = localStorage.getItem(storagePrefix+innerId); - me.storage = JSON.parse(me.storage) || {}; - } - - this.$options = _processInput(options); - $heading = this.$el.find('>.panel-heading'); - $body = this.$el.find('>.panel-body'); - _init(); - _applyState(me.$options.state); - _applyIndex(me.$options.initialIndex); - }; - - $.fn.lobiPanel = function(option){ - var args = arguments, - ret = null; - this.each(function() { - - var $this = $(this); - var data = $this.data('lobiPanel'); - var options = typeof option === 'object' && option; - - if (!data) { - $this.data('lobiPanel', (data = new LobiPanel($this, options))); - } - if (typeof option === 'string') { - args = Array.prototype.slice.call(args, 1); - ret = data[option].apply(data, args); - } - }); - return ret; - }; - LobiPanel.PRIVATE_OPTIONS = { - //We need to know what is the parent of the panel, that's why we add - //this attribute to parent element and it contains space seperated inner-ids of all its child lobipanel - parentAttr: 'data-lobipanel-child-inner-id', - toolbarClass: 'lobipanel-minimized-toolbar', //This class is added to container which contains all minimized panels - //First instance on lobiPanel will get this z-index css property. - //Every next instance will get 1 + previous z-index - initialZIndex : 10000, - //This class is attached to every panel-control icon - iconClass : 'panel-control-icon' - }; - $.fn.lobiPanel.DEFAULTS = { - //Makes <b>unpinned</b> panel draggable - //Warning!!! This requires jquery ui draggable widget to be included - draggable: true, - //Makes <b>pinned</b> panels sortable - //Warning!!! This requires jquery ui sortable widget to be included - sortable: true, - //jquery ui sortable plugin option. - //To avoid any problems this option must be same for all panels which are direct children of their parent - connectWith: '.ui-sortable', - //This parameter accepts string ['both', 'vertical', 'horizontal', 'none']. none means disable resize - resize: 'both', - //Minimum width <b>unpin, resizable</b> panel can have. - minWidth: 200, - //Minimum height <b>unpin, resizable</b> panel can have. - minHeight: 100, - //Maximum width <b>unpin, resizable</b> panel can have. - maxWidth: 1200, - //Maximum height <b>unpin, resizable</b> panel can have. - maxHeight: 700, - //The url which will be used to load content. If not provided reload button will do nothing - loadUrl: "", - //If loadUrl is provided plugin will load content as soon as plugin is initialized - autoload: true, - bodyHeight: 'auto', - //This will enable tooltips on panel controls - tooltips: true, - toggleIcon: 'fa fa-cog', - expandAnimation: 100, - collapseAnimation: 100, - state: 'pinned', // pinned, unpinned, collapsed, minimized, fullscreen, - initialIndex: null, - stateful: true, // If you set this to true you must specify data-inner-id. Plugin will save (in localStorage) it's states such as - // pinned, unpinned, collapsed, minimized, fullscreen, position among it's siblings - // and apply them when you reload the browser - unpin: { - icon: 'glyphicon glyphicon-move', //You can user glyphicons if you do not want to use font-awesome - tooltip: 'Unpin' //tooltip text, If you want to disable tooltip, set it to false - }, - reload: { - icon: 'glyphicon glyphicon-refresh', //You can user glyphicons if you do not want to use font-awesome - tooltip: 'Reload' //tooltip text, If you want to disable tooltip, set it to false - }, - minimize: { - icon: 'glyphicon glyphicon-minus', //icon is shown when panel is not minimized - icon2: 'glyphicon glyphicon-plus', //icon2 is shown when panel is minimized - tooltip: 'Minimize' //tooltip text, If you want to disable tooltip, set it to false - }, - expand: { - icon: 'glyphicon glyphicon-resize-full', //icon is shown when panel is not on full screen - icon2: 'glyphicon glyphicon-resize-small', //icon2 is shown when pane is on full screen state - tooltip: 'Fullscreen' //tooltip text, If you want to disable tooltip, set it to false - }, - close: { - icon: 'glyphicon glyphicon-remove', //You can user glyphicons if you do not want to use font-awesome - tooltip: 'Close' //tooltip text, If you want to disable tooltip, set it to false - }, - editTitle: { - icon: 'glyphicon glyphicon-pencil', - icon2: 'glyphicon glyphicon-floppy-disk', - tooltip: 'Edit title' - } - }; - - $('.lobipanel').lobiPanel(); -}); diff --git a/dashboard/js/modernizr.custom.js b/dashboard/js/modernizr.custom.js deleted file mode 100644 index 719b348b..00000000 --- a/dashboard/js/modernizr.custom.js +++ /dev/null @@ -1,598 +0,0 @@ -/* Modernizr 2.7.1 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-boxshadow-cssanimations-csstransforms-csstransforms3d-csstransitions-draganddrop-audio-video-touch-shiv-mq-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load - */ -; - - - -window.Modernizr = (function( window, document, undefined ) { - - var version = '2.7.1', - - Modernizr = {}, - - - docElement = document.documentElement, - - mod = 'modernizr', - modElem = document.createElement(mod), - mStyle = modElem.style, - - inputElem , - - - toString = {}.toString, - - prefixes = ' -webkit- -moz- -o- -ms- '.split(' '), - - - - omPrefixes = 'Webkit Moz O ms', - - cssomPrefixes = omPrefixes.split(' '), - - domPrefixes = omPrefixes.toLowerCase().split(' '), - - - tests = {}, - inputs = {}, - attrs = {}, - - classes = [], - - slice = classes.slice, - - featureName, - - - injectElementWithStyles = function( rule, callback, nodes, testnames ) { - - var style, ret, node, docOverflow, - div = document.createElement('div'), - body = document.body, - fakeBody = body || document.createElement('body'); - - if ( parseInt(nodes, 10) ) { - while ( nodes-- ) { - node = document.createElement('div'); - node.id = testnames ? testnames[nodes] : mod + (nodes + 1); - div.appendChild(node); - } - } - - style = ['­','<style id="s', mod, '">', rule, '</style>'].join(''); - div.id = mod; - (body ? div : fakeBody).innerHTML += style; - fakeBody.appendChild(div); - if ( !body ) { - fakeBody.style.background = ''; - fakeBody.style.overflow = 'hidden'; - docOverflow = docElement.style.overflow; - docElement.style.overflow = 'hidden'; - docElement.appendChild(fakeBody); - } - - ret = callback(div, rule); - if ( !body ) { - fakeBody.parentNode.removeChild(fakeBody); - docElement.style.overflow = docOverflow; - } else { - div.parentNode.removeChild(div); - } - - return !!ret; - - }, - - testMediaQuery = function( mq ) { - - var matchMedia = window.matchMedia || window.msMatchMedia; - if ( matchMedia ) { - return matchMedia(mq).matches; - } - - var bool; - - injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) { - bool = (window.getComputedStyle ? - getComputedStyle(node, null) : - node.currentStyle)['position'] == 'absolute'; - }); - - return bool; - - }, - - - isEventSupported = (function() { - - var TAGNAMES = { - 'select': 'input', 'change': 'input', - 'submit': 'form', 'reset': 'form', - 'error': 'img', 'load': 'img', 'abort': 'img' - }; - - function isEventSupported( eventName, element ) { - - element = element || document.createElement(TAGNAMES[eventName] || 'div'); - eventName = 'on' + eventName; - - var isSupported = eventName in element; - - if ( !isSupported ) { - if ( !element.setAttribute ) { - element = document.createElement('div'); - } - if ( element.setAttribute && element.removeAttribute ) { - element.setAttribute(eventName, ''); - isSupported = is(element[eventName], 'function'); - - if ( !is(element[eventName], 'undefined') ) { - element[eventName] = undefined; - } - element.removeAttribute(eventName); - } - } - - element = null; - return isSupported; - } - return isEventSupported; - })(), - - - _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp; - - if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) { - hasOwnProp = function (object, property) { - return _hasOwnProperty.call(object, property); - }; - } - else { - hasOwnProp = function (object, property) { - return ((property in object) && is(object.constructor.prototype[property], 'undefined')); - }; - } - - - if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { - - var target = this; - - if (typeof target != "function") { - throw new TypeError(); - } - - var args = slice.call(arguments, 1), - bound = function () { - - if (this instanceof bound) { - - var F = function(){}; - F.prototype = target.prototype; - var self = new F(); - - var result = target.apply( - self, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return self; - - } else { - - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - - } - - }; - - return bound; - }; - } - - function setCss( str ) { - mStyle.cssText = str; - } - - function setCssAll( str1, str2 ) { - return setCss(prefixes.join(str1 + ';') + ( str2 || '' )); - } - - function is( obj, type ) { - return typeof obj === type; - } - - function contains( str, substr ) { - return !!~('' + str).indexOf(substr); - } - - function testProps( props, prefixed ) { - for ( var i in props ) { - var prop = props[i]; - if ( !contains(prop, "-") && mStyle[prop] !== undefined ) { - return prefixed == 'pfx' ? prop : true; - } - } - return false; - } - - function testDOMProps( props, obj, elem ) { - for ( var i in props ) { - var item = obj[props[i]]; - if ( item !== undefined) { - - if (elem === false) return props[i]; - - if (is(item, 'function')){ - return item.bind(elem || obj); - } - - return item; - } - } - return false; - } - - function testPropsAll( prop, prefixed, elem ) { - - var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), - props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); - - if(is(prefixed, "string") || is(prefixed, "undefined")) { - return testProps(props, prefixed); - - } else { - props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); - return testDOMProps(props, prefixed, elem); - } - } tests['touch'] = function() { - var bool; - - if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) { - bool = true; - } else { - injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) { - bool = node.offsetTop === 9; - }); - } - - return bool; - }; - - tests['draganddrop'] = function() { - var div = document.createElement('div'); - return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div); - }; tests['boxshadow'] = function() { - return testPropsAll('boxShadow'); - }; - tests['cssanimations'] = function() { - return testPropsAll('animationName'); - }; - - - - tests['csstransforms'] = function() { - return !!testPropsAll('transform'); - }; - - - tests['csstransforms3d'] = function() { - - var ret = !!testPropsAll('perspective'); - - if ( ret && 'webkitPerspective' in docElement.style ) { - - injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) { - ret = node.offsetLeft === 9 && node.offsetHeight === 3; - }); - } - return ret; - }; - - - tests['csstransitions'] = function() { - return testPropsAll('transition'); - }; - - - - tests['video'] = function() { - var elem = document.createElement('video'), - bool = false; - - try { - if ( bool = !!elem.canPlayType ) { - bool = new Boolean(bool); - bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,''); - - bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,''); - - bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,''); - } - - } catch(e) { } - - return bool; - }; - - tests['audio'] = function() { - var elem = document.createElement('audio'), - bool = false; - - try { - if ( bool = !!elem.canPlayType ) { - bool = new Boolean(bool); - bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,''); - bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,''); - - bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,''); - bool.m4a = ( elem.canPlayType('audio/x-m4a;') || - elem.canPlayType('audio/aac;')) .replace(/^no$/,''); - } - } catch(e) { } - - return bool; - }; for ( var feature in tests ) { - if ( hasOwnProp(tests, feature) ) { - featureName = feature.toLowerCase(); - Modernizr[featureName] = tests[feature](); - - classes.push((Modernizr[featureName] ? '' : 'no-') + featureName); - } - } - - - - Modernizr.addTest = function ( feature, test ) { - if ( typeof feature == 'object' ) { - for ( var key in feature ) { - if ( hasOwnProp( feature, key ) ) { - Modernizr.addTest( key, feature[ key ] ); - } - } - } else { - - feature = feature.toLowerCase(); - - if ( Modernizr[feature] !== undefined ) { - return Modernizr; - } - - test = typeof test == 'function' ? test() : test; - - if (typeof enableClasses !== "undefined" && enableClasses) { - docElement.className += ' ' + (test ? '' : 'no-') + feature; - } - Modernizr[feature] = test; - - } - - return Modernizr; - }; - - - setCss(''); - modElem = inputElem = null; - - ;(function(window, document) { - var version = '3.7.0'; - - var options = window.html5 || {}; - - var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; - - var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; - - var supportsHtml5Styles; - - var expando = '_html5shiv'; - - var expanID = 0; - - var expandoData = {}; - - var supportsUnknownElements; - - (function() { - try { - var a = document.createElement('a'); - a.innerHTML = '<xyz></xyz>'; - supportsHtml5Styles = ('hidden' in a); - - supportsUnknownElements = a.childNodes.length == 1 || (function() { - (document.createElement)('a'); - var frag = document.createDocumentFragment(); - return ( - typeof frag.cloneNode == 'undefined' || - typeof frag.createDocumentFragment == 'undefined' || - typeof frag.createElement == 'undefined' - ); - }()); - } catch(e) { - supportsHtml5Styles = true; - supportsUnknownElements = true; - } - - }()); - - function addStyleSheet(ownerDocument, cssText) { - var p = ownerDocument.createElement('p'), - parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; - - p.innerHTML = 'x<style>' + cssText + '</style>'; - return parent.insertBefore(p.lastChild, parent.firstChild); - } - - function getElements() { - var elements = html5.elements; - return typeof elements == 'string' ? elements.split(' ') : elements; - } - - function getExpandoData(ownerDocument) { - var data = expandoData[ownerDocument[expando]]; - if (!data) { - data = {}; - expanID++; - ownerDocument[expando] = expanID; - expandoData[expanID] = data; - } - return data; - } - - function createElement(nodeName, ownerDocument, data){ - if (!ownerDocument) { - ownerDocument = document; - } - if(supportsUnknownElements){ - return ownerDocument.createElement(nodeName); - } - if (!data) { - data = getExpandoData(ownerDocument); - } - var node; - - if (data.cache[nodeName]) { - node = data.cache[nodeName].cloneNode(); - } else if (saveClones.test(nodeName)) { - node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); - } else { - node = data.createElem(nodeName); - } - - return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; - } - - function createDocumentFragment(ownerDocument, data){ - if (!ownerDocument) { - ownerDocument = document; - } - if(supportsUnknownElements){ - return ownerDocument.createDocumentFragment(); - } - data = data || getExpandoData(ownerDocument); - var clone = data.frag.cloneNode(), - i = 0, - elems = getElements(), - l = elems.length; - for(;i<l;i++){ - clone.createElement(elems[i]); - } - return clone; - } - - function shivMethods(ownerDocument, data) { - if (!data.cache) { - data.cache = {}; - data.createElem = ownerDocument.createElement; - data.createFrag = ownerDocument.createDocumentFragment; - data.frag = data.createFrag(); - } - - - ownerDocument.createElement = function(nodeName) { - if (!html5.shivMethods) { - return data.createElem(nodeName); - } - return createElement(nodeName, ownerDocument, data); - }; - - ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' + - 'var n=f.cloneNode(),c=n.createElement;' + - 'h.shivMethods&&(' + - getElements().join().replace(/[\w\-]+/g, function(nodeName) { - data.createElem(nodeName); - data.frag.createElement(nodeName); - return 'c("' + nodeName + '")'; - }) + - ');return n}' - )(html5, data.frag); - } - - function shivDocument(ownerDocument) { - if (!ownerDocument) { - ownerDocument = document; - } - var data = getExpandoData(ownerDocument); - - if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) { - data.hasCSS = !!addStyleSheet(ownerDocument, - 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' + - 'mark{background:#FF0;color:#000}' + - 'template{display:none}' - ); - } - if (!supportsUnknownElements) { - shivMethods(ownerDocument, data); - } - return ownerDocument; - } - - var html5 = { - - 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video', - - 'version': version, - - 'shivCSS': (options.shivCSS !== false), - - 'supportsUnknownElements': supportsUnknownElements, - - 'shivMethods': (options.shivMethods !== false), - - 'type': 'default', - - 'shivDocument': shivDocument, - - createElement: createElement, - - createDocumentFragment: createDocumentFragment - }; - - window.html5 = html5; - - shivDocument(document); - - }(this, document)); - - Modernizr._version = version; - - Modernizr._prefixes = prefixes; - Modernizr._domPrefixes = domPrefixes; - Modernizr._cssomPrefixes = cssomPrefixes; - - Modernizr.mq = testMediaQuery; - - Modernizr.hasEvent = isEventSupported; - - Modernizr.testProp = function(prop){ - return testProps([prop]); - }; - - Modernizr.testAllProps = testPropsAll; - - - Modernizr.testStyles = injectElementWithStyles; - Modernizr.prefixed = function(prop, obj, elem){ - if(!obj) { - return testPropsAll(prop, 'pfx'); - } else { - return testPropsAll(prop, obj, elem); - } - }; - - - - return Modernizr; - -})(this, this.document); -/*yepnope1.5.4|WTFPL*/ -(function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}})(this,document); -Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0));}; -; \ No newline at end of file diff --git a/dashboard/js/nivo-lightbox.min.js b/dashboard/js/nivo-lightbox.min.js deleted file mode 100644 index e68ae68c..00000000 --- a/dashboard/js/nivo-lightbox.min.js +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Nivo Lightbox v1.1 - * http://dev7studios.com/nivo-lightbox - * - * Copyright 2013, Dev7studios - * Free to use and abuse under the MIT license. - * http://www.opensource.org/licenses/mit-license.php - */ - -;(function($, window, document, undefined){ - - var pluginName = 'nivoLightbox', - defaults = { - effect: 'fade', - theme: 'default', - keyboardNav: true, - clickOverlayToClose: true, - onInit: function(){}, - beforeShowLightbox: function(){}, - afterShowLightbox: function(lightbox){}, - beforeHideLightbox: function(){}, - afterHideLightbox: function(){}, - onPrev: function(element){}, - onNext: function(element){}, - errorMessage: 'The requested content cannot be loaded. Please try again later.' - }; - - function NivoLightbox(element, options){ - this.el = element; - this.$el = $(this.el); - - this.options = $.extend({}, defaults, options); - - this._defaults = defaults; - this._name = pluginName; - - this.init(); - } - - NivoLightbox.prototype = { - - init: function(){ - var $this = this; - - // Need this so we don't use CSS transitions in mobile - if(!$('html').hasClass('nivo-lightbox-notouch')) $('html').addClass('nivo-lightbox-notouch'); - if('ontouchstart' in document) $('html').removeClass('nivo-lightbox-notouch'); - - // Setup the click - this.$el.on('click', function(e){ - e.preventDefault(); - $this.showLightbox(); - }); - - // keyboardNav - if(this.options.keyboardNav){ - $('body').off('keyup').on('keyup', function(e){ - var code = (e.keyCode ? e.keyCode : e.which); - // Escape - if(code == 27) $this.destructLightbox(); - // Left - if(code == 37) $('.nivo-lightbox-prev').trigger('click'); - // Right - if(code == 39) $('.nivo-lightbox-next').trigger('click'); - }); - } - - this.options.onInit.call(this); - - }, - - showLightbox: function(){ - var $this = this; - this.options.beforeShowLightbox.call(this); - - var lightbox = this.constructLightbox(); - if(!lightbox) return; - var content = lightbox.find('.nivo-lightbox-content'); - if(!content) return; - var currentLink = this.$el; - $('body').addClass('nivo-lightbox-body-effect-'+ this.options.effect); - - // Add content - this.processContent(content, currentLink); - - // Nav - if(this.$el.attr('data-lightbox-gallery')){ - var $this = this, - galleryItems = $('[data-lightbox-gallery="'+ this.$el.attr('data-lightbox-gallery') +'"]'); - - $('.nivo-lightbox-nav').show(); - - // Prev - $('.nivo-lightbox-prev').off('click').on('click', function(e){ - e.preventDefault(); - var index = galleryItems.index(currentLink); - currentLink = galleryItems.eq(index - 1); - if(!$(currentLink).length) currentLink = galleryItems.last(); - $this.processContent(content, currentLink); - $this.options.onPrev.call(this, [ currentLink ]); - }); - - // Next - $('.nivo-lightbox-next').off('click').on('click', function(e){ - e.preventDefault(); - var index = galleryItems.index(currentLink); - currentLink = galleryItems.eq(index + 1); - if(!$(currentLink).length) currentLink = galleryItems.first(); - $this.processContent(content, currentLink); - $this.options.onNext.call(this, [ currentLink ]); - }); - } - - setTimeout(function(){ - lightbox.addClass('nivo-lightbox-open'); - $this.options.afterShowLightbox.call(this, [ lightbox ]); - }, 1); // For CSS transitions - }, - - processContent: function(content, link){ - var $this = this; - var href = link.attr('href'); - content.html('').addClass('nivo-lightbox-loading'); - - // Is HiDPI? - if(this.isHidpi() && link.attr('data-lightbox-hidpi')){ - href = link.attr('data-lightbox-hidpi'); - } - - // Image - if(href.match(/\.(jpeg|jpg|gif|png)$/i) != null){ - var img = $('<img>', { src: href }); - img.one('load', function() { - var wrap = $('<div class="nivo-lightbox-image" />'); - wrap.append(img); - content.html(wrap).removeClass('nivo-lightbox-loading'); - - // Vertically center images - wrap.css({ - 'line-height': $('.nivo-lightbox-content').height() +'px', - 'height': $('.nivo-lightbox-content').height() +'px' // For Firefox - }); - $(window).resize(function() { - wrap.css({ - 'line-height': $('.nivo-lightbox-content').height() +'px', - 'height': $('.nivo-lightbox-content').height() +'px' // For Firefox - }); - }); - }).each(function() { - if(this.complete) $(this).load(); - }); - - img.error(function() { - var wrap = $('<div class="nivo-lightbox-error"><p>'+ $this.options.errorMessage +'</p></div>'); - content.html(wrap).removeClass('nivo-lightbox-loading'); - }); - } - // Video (Youtube/Vimeo) - else if(video = href.match(/(youtube|youtu|vimeo)\.(com|be)\/(watch\?v=([\w-]+)|([\w-]+))/)){ - var src = '', - classTerm = 'nivo-lightbox-video'; - - if(video[1] == 'youtube'){ - src = 'http://www.youtube.com/v/'+ video[4]; - classTerm = 'nivo-lightbox-youtube'; - } - if(video[1] == 'youtu'){ - src = 'http://www.youtube.com/v/'+ video[3]; - classTerm = 'nivo-lightbox-youtube'; - } - if(video[1] == 'vimeo'){ - src = 'http://player.vimeo.com/video/'+ video[3]; - classTerm = 'nivo-lightbox-vimeo'; - } - - if(src){ - var iframe = $('<iframe>', { - src: src, - 'class': classTerm, - frameborder: 0, - vspace: 0, - hspace: 0, - scrolling: 'auto' - }); - content.html(iframe); - iframe.load(function(){ content.removeClass('nivo-lightbox-loading'); }); - } - } - // AJAX - else if(link.attr('data-lightbox-type') == 'ajax'){ - var $this = this; - $.ajax({ - url: href, - cache: false, - success: function(data) { - var wrap = $('<div class="nivo-lightbox-ajax" />'); - wrap.append(data); - content.html(wrap).removeClass('nivo-lightbox-loading'); - - // Vertically center html - if(wrap.outerHeight() < content.height()){ - wrap.css({ - 'position': 'relative', - 'top': '50%', - 'margin-top': -(wrap.outerHeight()/2) +'px' - }); - } - $(window).resize(function() { - if(wrap.outerHeight() < content.height()){ - wrap.css({ - 'position': 'relative', - 'top': '50%', - 'margin-top': -(wrap.outerHeight()/2) +'px' - }); - } - }); - }, - error: function(){ - var wrap = $('<div class="nivo-lightbox-error"><p>'+ $this.options.errorMessage +'</p></div>'); - content.html(wrap).removeClass('nivo-lightbox-loading'); - } - }); - } - // Inline HTML - else if(href.substring(0, 1) == '#'){ - if($(href).length){ - var wrap = $('<div class="nivo-lightbox-inline" />'); - wrap.append($(href).clone().show()); - content.html(wrap).removeClass('nivo-lightbox-loading'); - - // Vertically center html - if(wrap.outerHeight() < content.height()){ - wrap.css({ - 'position': 'relative', - 'top': '50%', - 'margin-top': -(wrap.outerHeight()/2) +'px' - }); - } - $(window).resize(function() { - if(wrap.outerHeight() < content.height()){ - wrap.css({ - 'position': 'relative', - 'top': '50%', - 'margin-top': -(wrap.outerHeight()/2) +'px' - }); - } - }); - } else { - var wrap = $('<div class="nivo-lightbox-error"><p>'+ $this.options.errorMessage +'</p></div>'); - content.html(wrap).removeClass('nivo-lightbox-loading'); - } - } - // iFrame (default) - else { - var iframe = $('<iframe>', { - src: href, - 'class': 'nivo-lightbox-item', - frameborder: 0, - vspace: 0, - hspace: 0, - scrolling: 'auto' - }); - content.html(iframe); - iframe.load(function(){ content.removeClass('nivo-lightbox-loading'); }); - } - - // Set the title - if(link.attr('title')){ - var titleWrap = $('<span>', { 'class': 'nivo-lightbox-title' }); - titleWrap.text(link.attr('title')); - $('.nivo-lightbox-title-wrap').html(titleWrap); - } else { - $('.nivo-lightbox-title-wrap').html(''); - } - }, - - constructLightbox: function(){ - if($('.nivo-lightbox-overlay').length) return $('.nivo-lightbox-overlay'); - - var overlay = $('<div>', { 'class': 'nivo-lightbox-overlay nivo-lightbox-theme-'+ this.options.theme +' nivo-lightbox-effect-'+ this.options.effect }); - var wrap = $('<div>', { 'class': 'nivo-lightbox-wrap' }); - var content = $('<div>', { 'class': 'nivo-lightbox-content' }); - var nav = $('<a href="#" class="nivo-lightbox-nav nivo-lightbox-prev">Previous</a><a href="#" class="nivo-lightbox-nav nivo-lightbox-next">Next</a>'); - var close = $('<a href="#" class="nivo-lightbox-close" title="Close">Close</a>'); - var title = $('<div>', { 'class': 'nivo-lightbox-title-wrap' }); - - var isMSIE = /*@cc_on!@*/0; - if(isMSIE) overlay.addClass('nivo-lightbox-ie'); - - wrap.append(content); - wrap.append(title); - overlay.append(wrap); - overlay.append(nav); - overlay.append(close); - $('body').append(overlay); - - var $this = this; - if($this.options.clickOverlayToClose){ - overlay.on('click', function(e){ - if(e.target === this || - $(e.target).hasClass('nivo-lightbox-content') || - $(e.target).hasClass('nivo-lightbox-image')) $this.destructLightbox(); - }); - } - - close.on('click', function(e){ - e.preventDefault(); - $this.destructLightbox(); - }); - - return overlay; - }, - - destructLightbox: function(){ - var $this = this; - this.options.beforeHideLightbox.call(this); - - $('.nivo-lightbox-overlay').removeClass('nivo-lightbox-open'); - $('.nivo-lightbox-nav').hide(); - $('body').removeClass('nivo-lightbox-body-effect-'+ $this.options.effect); - - // For IE - var isMSIE = /*@cc_on!@*/0; - if(isMSIE){ - $('.nivo-lightbox-overlay iframe').attr("src", " "); - $('.nivo-lightbox-overlay iframe').remove(); - } - - // Remove click handlers - $('.nivo-lightbox-prev').off('click'); - $('.nivo-lightbox-next').off('click'); - - // Empty content (for videos) - $('.nivo-lightbox-content').empty(); - - this.options.afterHideLightbox.call(this); - }, - - isHidpi: function(){ - var mediaQuery = "(-webkit-min-device-pixel-ratio: 1.5),\ - (min--moz-device-pixel-ratio: 1.5),\ - (-o-min-device-pixel-ratio: 3/2),\ - (min-resolution: 1.5dppx)"; - if(window.devicePixelRatio > 1) return true; - if(window.matchMedia && window.matchMedia(mediaQuery).matches) return true; - return false; - } - - }; - - $.fn[pluginName] = function(options){ - return this.each(function(){ - if(!$.data(this, pluginName)){ - $.data(this, pluginName, new NivoLightbox(this, options)); - } - }); - }; - -})(jQuery, window, document); \ No newline at end of file diff --git a/dashboard/js/npm.js b/dashboard/js/npm.js deleted file mode 100644 index bf6aa806..00000000 --- a/dashboard/js/npm.js +++ /dev/null @@ -1,13 +0,0 @@ -// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. -require('../../js/transition.js') -require('../../js/alert.js') -require('../../js/button.js') -require('../../js/carousel.js') -require('../../js/collapse.js') -require('../../js/dropdown.js') -require('../../js/modal.js') -require('../../js/tooltip.js') -require('../../js/popover.js') -require('../../js/scrollspy.js') -require('../../js/tab.js') -require('../../js/affix.js') \ No newline at end of file diff --git a/dashboard/js/quick.js b/dashboard/js/quick.js deleted file mode 100644 index 3f3d91e8..00000000 --- a/dashboard/js/quick.js +++ /dev/null @@ -1,273 +0,0 @@ - - -$(document).ready(function() { - - 'use strict'; - - /***** SHOW / HIDE LEFT MENU *****/ - - $('#menuToggle').click(function() { - - var collapsedMargin = $('.mainpanel').css('margin-left'); - var collapsedLeft = $('.mainpanel').css('left'); - - if(collapsedMargin === '280px' || collapsedLeft === '280px') { - toggleMenu(-280,0); - } else { - toggleMenu(0,280); - } - - }); - - - function toggleMenu(marginLeft, marginMain) { - - var emailList = ($(window).width() <= 768 && $(window).width() > 640)? 320 : 360; - - if($('.mainpanel').css('position') === 'relative') { - - $('.logopanel, .leftpanel').animate({left: marginLeft}, 'fast'); - $('.headerbar, .mainpanel').animate({left: marginMain}, 'fast'); - - $('.emailcontent, .email-options').animate({left: marginMain}, 'fast'); - $('.emailpanel').animate({left: marginMain + emailList}, 'fast'); - - if($('body').css('overflow') == 'hidden') { - $('body').css({overflow: ''}); - } else { - $('body').css({overflow: 'hidden'}); - } - - } else { - - $('.logopanel, .leftpanel').animate({marginLeft: marginLeft}, 'fast'); - $('.headerbar, .mainpanel').animate({marginLeft: marginMain}, 'fast'); - - $('.emailcontent, .email-options').animate({left: marginMain}, 'fast'); - $('.emailpanel').animate({left: marginMain + emailList}, 'fast'); - - } - - } - - - /****** PULSE A QUICK ACCESS PANEL ******/ - - $('.panel-quick-page .panel').hover(function() { - $(this).addClass('flip animated'); - }, function() { - $(this).removeClass('flip animated'); - }); - - - - // Date Today in Notification - $('#todayDay').text(getDayToday()); - $('#todayDate').text(getDateToday()); - - // Toggle Left Menu - $('.nav-parent > a').on('click', function() { - - var gran = $(this).closest('.nav'); - var parent = $(this).parent(); - var sub = parent.find('> ul'); - - if(sub.is(':visible')) { - sub.slideUp(200); - if(parent.hasClass('nav-active')) { parent.removeClass('nav-active'); } - } else { - - $(gran).find('.children').each(function() { - $(this).slideUp(); - }); - - sub.slideDown(200); - if(!parent.hasClass('active')) { parent.addClass('nav-active'); } - } - return false; - - }); - - function closeVisibleSubMenu() { - $('.leftpanel .nav-parent').each(function() { - var t = jQuery(this); - if(t.hasClass('nav-active')) { - t.find('> ul').slideUp(200, function(){ - t.removeClass('nav-active'); - }); - } - }); - } - - // Left Panel Toggles - $('.leftpanel-toggle').toggles({ - on: true, - height: 11 - }); - $('.leftpanel-toggle-off').toggles({ height: 11 }); - - - // Tooltip - $('.tooltips').tooltip({ container: 'body'}); - - // Popover - $('.popovers').popover(); - - // Add class everytime a mouse pointer hover over it - $('.nav-due > li').hover(function(){ - $(this).addClass('nav-hover'); - }, function(){ - $(this).removeClass('nav-hover'); - }); - - // Prevent dropdown from closing when clicking inside - $('#noticeDropdown').on('click', '.nav-tabs a', function(){ - // set a special class on the '.dropdown' element - $(this).closest('.btn-group').addClass('dontClose'); - }) - - $('#noticePanel').on('hide.bs.dropdown', function(e) { - if ( $(this).hasClass('dontClose') ){ - e.preventDefault(); - } - $(this).removeClass('dontClose'); - }); - - - // Close panel - $('.panel-remove').click(function() { - $(this).closest('.panel').fadeOut(function() { - $(this).remove(); - }); - }); - - // Minimize panel - $('.panel-minimize').click(function() { - var parent = $(this).closest('.panel'); - - parent.find('.panel-body').slideToggle(function() { - var panelHeading = parent.find('.panel-heading'); - - if(panelHeading.hasClass('min')) { - panelHeading.removeClass('min'); - } else { - panelHeading.addClass('min'); - } - - }); - - }); - - /* Get the current day today */ - function getDayToday() { - // Get Date Today - var d_names = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); - var d = new Date(); - var curr_day = d.getDay(); - - return d_names[curr_day]; - } - - /* Get the current date today */ - function getDateToday() { - var m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", - "October", "November", "December"); - - var d = new Date(); - var curr_date = d.getDate(); - var sup = ""; - - if (curr_date == 1 || curr_date == 21 || curr_date ==31) { - sup = "st"; - } else if (curr_date == 2 || curr_date == 22) { - sup = "nd"; - } else if (curr_date == 3 || curr_date == 23) { - sup = "rd"; - } else { - sup = "th"; - } - - var curr_month = d.getMonth(); - var curr_year = d.getFullYear(); - - return curr_date + sup + " " + m_names[curr_month] + " " + curr_year; - } - - /* This function will reposition search form to the left panel when viewed - * in screens smaller than 767px and will return to top when viewed higher - * than 767px - */ - function reposition_searchform() { - if($('.searchform').css('position') == 'relative') { - $('.searchform').insertBefore('.leftpanelinner .userlogged'); - } else { - $('.searchform').insertBefore('.header-right'); - } - } - - - - /* This function allows top navigation menu to move to left navigation menu - * when viewed in screens lower than 1024px and will move it back when viewed - * higher than 1024px - */ - function reposition_topnav() { - if($('.nav-horizontal').length > 0) { - - // top navigation move to left nav - // .nav-horizontal will set position to relative when viewed in screen below 1024 - if($('.nav-horizontal').css('position') == 'relative') { - - if($('.leftpanel .nav-bracket').length == 2) { - $('.nav-horizontal').insertAfter('.nav-bracket:eq(1)'); - } else { - // only add to bottom if .nav-horizontal is not yet in the left panel - if($('.leftpanel .nav-horizontal').length == 0) - $('.nav-horizontal').appendTo('.leftpanelinner'); - } - - $('.nav-horizontal').css({display: 'block'}) - .addClass('nav-pills nav-stacked nav-bracket'); - - $('.nav-horizontal .children').removeClass('dropdown-menu'); - $('.nav-horizontal > li').each(function() { - - $(this).removeClass('open'); - $(this).find('a').removeAttr('class'); - $(this).find('a').removeAttr('data-toggle'); - - }); - - if($('.nav-horizontal li:last-child').has('form')) { - $('.nav-horizontal li:last-child form').addClass('searchform').appendTo('.topnav'); - $('.nav-horizontal li:last-child').hide(); - } - - } else { - // move nav only when .nav-horizontal is currently from leftpanel - // that is viewed from screen size above 1024 - if($('.leftpanel .nav-horizontal').length > 0) { - - $('.nav-horizontal').removeClass('nav-pills nav-stacked nav-bracket') - .appendTo('.topnav'); - $('.nav-horizontal .children').addClass('dropdown-menu').removeAttr('style'); - $('.nav-horizontal li:last-child').show(); - $('.searchform').removeClass('searchform').appendTo('.nav-horizontal li:last-child .dropdown-menu'); - $('.nav-horizontal > li > a').each(function() { - - $(this).parent().removeClass('nav-active'); - - if($(this).parent().find('.dropdown-menu').length > 0) { - $(this).attr('class','dropdown-toggle'); - $(this).attr('data-toggle','dropdown'); - } - - }); - } - - } - - } - } - -}); diff --git a/dashboard/js/script.js b/dashboard/js/script.js deleted file mode 100644 index 4e7f6c67..00000000 --- a/dashboard/js/script.js +++ /dev/null @@ -1,76 +0,0 @@ - - -var range_rec = 1024; // KBps -var range_snd = 1024; // KBps - -if(typeof(EventSource) !== "undefined") -{ - var stat_source = new EventSource("req/stat.php"); - var rate_rec = 0; - var rate_snd = 0; - stat_source.onmessage = function(e) - { - var seconds = 1; - var data = JSON.parse(e.data); - var new_rec = data.rec; - var new_snd = data.snd; - - if ( typeof(old_rec) != "undefined" && typeof(old_snd) != "undefined") - { - var bytes_rec = new_rec - old_rec; - var bytes_snd = new_snd - old_snd; - - rate_rec = bytes_rec / seconds / 1024 / 1024; - rate_snd = bytes_snd / seconds / 1024 / 1024; - - // Check over/under flow - if ( rate_rec > range_rec || rate_rec < 0 ) - rate_rec = old_rate_rec; - else - old_rate_rec = rate_rec; - - if ( rate_snd > range_snd || rate_snd < 0 ) - rate_snd = old_rate_snd; - else - old_rate_snd = rate_snd; - - document.getElementById("rec_result").innerHTML="" + Math.round(rate_rec*100)/100 + " Mbs"; - document.getElementById("snd_result").innerHTML="" + Math.round(rate_snd*100)/100 + " Mbs"; - } - old_rec = new_rec; - old_snd = new_snd; - }; - -} else { - document.getElementById("rec_result").innerHTML= - "Sorry, your browser does not support server-sent events..."; -} - - -window.onload = function() { - - rec_graph = new Graph( - { - 'id': "rec_graph", - 'interval': 1000, - 'strokeStyle': "#819C58", - 'fillStyle': "rgba(64,128,0,0.25)", - 'grid': [32,32], - 'range': [0,range_rec], - - 'call': function(){return (Math.round(rate_rec));} - }); - - snd_graph = new Graph( - { - 'id': "snd_graph", - 'interval': 1000, - 'strokeStyle': "#58819C", - 'fillStyle': "rgba(0,88,145,0.25)", - 'grid': [32,32], - 'range': [0,range_snd], - - 'call': function(){return (Math.round(rate_snd));} - }); - -} diff --git a/dashboard/lang/flag_lang_de.png b/dashboard/lang/flag_lang_de.png deleted file mode 100644 index 4f7202a10a0bff7080e175baf7a692b4862be0fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21511 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 Aa{vGU diff --git a/dashboard/lang/flag_lang_dk.png b/dashboard/lang/flag_lang_dk.png deleted file mode 100644 index 09d58130f81498a8c14ce85614e6cb6ca8b050f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18450 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 diff --git a/dashboard/lang/flag_lang_en.png b/dashboard/lang/flag_lang_en.png deleted file mode 100644 index ef92c4fbdb9ea8b4d39865a2ae0f2aa80eadd688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23083 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 C0wFa3 diff --git a/dashboard/lang/flag_lang_fr.png b/dashboard/lang/flag_lang_fr.png deleted file mode 100644 index 86f7bbb5980cb14bc6023bffb361935a4502dd01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17928 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 F@*jqQmK6X1 diff --git a/dashboard/lang/lang_de b/dashboard/lang/lang_de deleted file mode 100644 index bfb6ea5c..00000000 --- a/dashboard/lang/lang_de +++ /dev/null @@ -1,347 +0,0 @@ -<?php - -/******************************************************************************* -* * -* German * -* * -*******************************************************************************/ - -//////////////////////////////////////// -//DASHBOARD MENU -/////////////////////////////////////// - -// panel menu tab -$L['DEV_REPO_TXT'] = 'You are on the QuickBox Development Repo'; -$L['ANNOUCEMENTS'] = 'Annoucements'; -$L['JOIN_US_TXT'] = 'Join Us On Live Chat!'; -$L['CHAT_CONNECT_TXT'] = 'Click to connect'; -$L['ISSUE_REPORT_TXT'] = 'Report an issue'; -$L['MARKETPLACE'] = 'Marketplace'; -$L['LANG_SELECT'] = 'Wähle die Sprache aus'; - -// main menu tab -$L['MAIN_MENU'] = 'Hauptmenü'; -$L['DOWNLOADS'] = 'Downloads'; -$L['WEB_CONSOLE'] = 'Webkonsole'; -$L['DONATE'] = 'Donate'; - -// plugin menu tab -$L['PLUGIN_MENU'] = 'Plugin Menü'; -$L['RPLUGIN_MENU'] = 'ruTorrent Plugin Menü'; -$L['PMENU_NOTICE_TXT'] = 'Hier kannst du ganz einfach die ruTorrent Plugins mit einem Klick auf den Namen installieren oder deinstallieren'; -$L['PLUGINS'] = 'Plugins'; - -// quick help menu tab -$L['HELP_COMMANDS'] = 'Hilfsbefehle & Mehr'; -$L['QUICK_SYSTEM_TIPS'] = 'Quick System Tipps'; -$L['DISKTEST_TXT'] = 'Dieser Befehl führt einen schnellen Lese/Schreib-Test deiner Festplatte durch.'; -$L['FIXHOME_TXT'] = 'Führe diesen Befehl aus, um schnell die /home Ordnerberechtigungen anzupassen.'; -// admin commands section -$L['ADMIN_COMMANDS'] = 'Admin Befehle'; -$L['SETDISK_TXT'] = 'Führe diesen Befehl via SSH aus, um einem Benutzer eine bestimmte Menge an Speicherplatz zuzuweisen.'; -$L['CREATESEEDBOXUSER_TXT'] = 'Führe diesen Befehl via SSH aus, um einen neuen Seedbox-Benutzer auf dem Server zu erstellen.'; -$L['DELETESEEDBOXUSER_TXT'] = 'Führe diesen Befehl via SSH aus, um einen vorhandenen Seedbox-Benutzer auf dem Server zu löschen. Du musst den Account-Namen des Benutzers eingeben, nach dem du dann gefragt wirst.'; -$L['CHANGEUSERPASS_TXT'] = 'Führe diesen Befehl via SSH aus, um das Passwort eines Benutzers zu ändern.'; -$L['QUICKVPN_TXT'] = 'Führe diesen Befehl via SSH aus, um deinen eigenen VPN-Server innerhalb weniger Minuten aufzusetzen sowie ihn zu managen und neue Benutzer-Zertifikate für ihn zu erstellen.'; -$L['SHOWSPACE_TXT'] = 'Führe den oben genannten Befehl als root aus, um dir den momentan genutzten Speicherplatz von jedem Benutzer anzeigen zu lassen.'; -$L['UPGRADEBTSYNC_TXT'] = 'Führe diesen Befehl via SSH aus, um BTSync auf die neueste verfügbare Version zu aktualisieren.'; -$L['UPGRADEPLEX_TXT'] = 'Führe diesen Befehl via SSH aus, um Plex auf die neueste verfügbare Version zu aktualisieren.'; -$L['UPGRADEDELUGE_TXT'] = 'Führe diesen Befehl via SSH aus, um Deluge auf die neueste verfügbare Version zu aktualisieren.'; -$L['UPGRADEJACKETT_TXT'] = 'Führe diesen Befehl via SSH aus, um Jackett auf die neueste verfügbare Version zu aktualisieren.'; -$L['UPGRADEPYLOAD_TXT'] = 'Führe diesen Befehl via SSH aus, um pyLoad auf die neueste verfügbare Version zu aktualisieren.'; -$L['SETUPPYLOAD_TXT'] = 'Führe diesen Befehl via SSH aus, um das pyLoad Setup-Script auszuführen.'; -$L['CLEAN_MEM_TXT'] = 'Führe den oben genannten Befehl als root aus, wenn du den physikalischen Cache-Speicher deines Systems löschen möchtest.'; -// essential user commands section -$L['ESSENTIAL_USER_COMMANDS'] = 'Grundlegende Nutzerbefehle'; -$L['RELOAD_TXT'] = 'Ermöglicht es dem Nutzer, seine Dienste neuzustarten (rTorrent sowie irssi)'; -$L['SCREEN_RTORRNENT_TXT'] = 'Ermöglicht es dem Nutzer, rTorrent via SSH neuzustarten oder neu einzubinden.'; -$L['SCREEN_IRSSI_TXT'] = 'Ermöglicht es dem Nutzer, irssi via SSH neuzustarten oder neu einzubinden.'; - - -//////////////////////////////////////// -//DASHBOARD WIDGET TITLES -/////////////////////////////////////// - -// services status widget -$L['SERVICE_CONTROL_CENTER'] = 'Dienst Kontrollcenter'; - -// services status widget -$L['SERVICE_STATUS'] = 'Status der Dienste'; - -// restart services widget -$L['RESTART_SERVICES'] = 'Dienste neustarten'; - -// service controller widget -$L['ENABLE_DISABLE_SERVICES'] = 'Aktivieren/Deaktivieren'; - -// package management center widget -$L['PACKAGE_MANAGEMENT_CENTER'] = 'Paket Management Center'; - -// bandwidth data widget -$L['BANDWIDTH_DATA'] = 'Bandbreite'; - -// disk status widget -$L['YOUR_DISK_STATUS'] = 'Status deines Speicherplatzes'; - -// memory status widget -$L['SYSTEM_RAM_STATUS'] = 'Status deines Arbeitsspeichers'; - -// cpu status widget -$L['CPU_STATUS'] = 'Status der CPU'; - -// server load widget -$L['SERVER_LOAD'] = 'Server-Last'; - -// recent updates widget -$L['RECENT_UPDATES'] = 'Recent Activity & Updates'; -$L['RECENT_UPDATES_TXT'] = 'Diese Liste aktualisiert sich alle 60 Sekunden'; - - -//////////////////////////////////////// -//PACKAGE MANAGEMENT CENTER -/////////////////////////////////////// - -// package management center notice -$L['PMC_NOTICE_TXT'] = '<strong>Achtung!</strong> Lass dir bitte gesagt sein, dass diese Optionen nicht die gleichen wie das Aktivieren und Deaktivieren eines Software-Paketes sind. Diese Optionen sind nur für das Installieren sowie Deinstallieren vorgesehen.'; - -// package management center column headers -$L['NAME'] = 'Name'; -$L['DETAILS'] = 'Details'; -$L['AVAILABILITY'] = 'Verfügbarkeit'; - -// packages -$L['BTSYNC_DETAILS'] = 'BitTorrent Sync von BitTorrent, Inc ist ein proprietäres Peer-to-Peer Dateisynchronisationsprogramm.'; -$L['COUCHPOTATO'] = 'Lade deine Filme, nachdem sie released wurden, einfach und automatisiert in der besten Qualität via Torrent und UseNet runter.'; -$L['CSF'] = 'ConfigServer Firewall, auch CSF genannt, ist ein Firewall-Konfigurationsskript, das dir eine bessere Sicherheit für deinen Server ermöglicht und dir eine einfache und umfangreiche Benutzeroberfläche für die Firewall-Einstellungen bietet.'; -$L['DELUGE'] = 'Deluge ist ein leichter, kostenloser, Cross-Plattform BitTorrent-Client.'; -$L['EMBY'] = 'Emby Server is a client-server software package that lets consumers host their legal personal copies of multimedia — music, video and picture files. ... The Emby client software is an app you need to install on mobile devices and certain settop boxes for televisions, like Android TV.'; -$L['JACKETT'] = 'API-Unterstützung für deine favorisierten privaten Tracker.'; -$L['NEXTCLOUD'] = 'Nextcloud ist eine selbst-gehostete Open-Source, Dateisynchronisations- sowie Teilungs- und Kommunikationsplattform. Greife auf deine Dateien, deinen Kalender, deine Kontakte zu, synchronisiere sie und kommuniziere und kollaboriere auf all deinen Geräten. Dabei entscheidest du, was mit deinen Daten passiert, wo sie sind und wer auf diese zugreifen darf!'; -$L['NZBHYDRA'] = 'NZBHydra is a meta search for NZB indexers. It provides easy access to a number of raw and newznab based indexers. You can search all your indexers from one place and use it as indexer source for tools like Sonarr or CouchPotato.'; -$L['OVPN'] = 'SSL/TLS basierter User-Space VPN. Unterstützt Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, und Windows 2000/XP+.'; -$L['PLEX'] = 'Mit Plex kannst du deine Medien verwalten und auf jedes Gerät streamen, auf dem Plex verfügbar ist.'; -$L['PLEX_REQUESTS'] = 'Ombi ist ein schicker und einfach zu bedienender Webdienst, über den die Benutzer Wünsche für die Plex-Bibliothek eintragen können. Dieser funktioniert mit CouchPotato, SickRage und Sonarr.'; -$L['PLEXPY'] = 'Eine auf Python basierende Web-Applikation, um den Plex-Server zu überwachen, zu managen und das Nutzungsverhalten der Benutzer zu analysieren.'; -$L['PYLOAD'] = 'pyLoad ist ein Download-Manager für One-Click-Hoster, Video-Webseiten, und HTTP/FTP Links. Eine Liste von unterstützten Webseiten kann <a href="https://github.com/pyload/pyload/wiki/Supported-Hoster" target="_blank">hier</a> gefunden werden.'; -$L['QUASSEL'] = 'Quassel IRC ist ein moderner, plattformübergreifender, verteilter IRC-Client, der auf dem Qt4-Framework basiert.'; -$L['QUOTAS'] = 'Dieses Linux-Feature erlaubt es dem Systemadministrator, den maximal verfügbaren Speicherplatz einem Benutzer oder einer Gruppe zuzuweisen.'; -$L['RAPIDLEECH'] = 'RapidLeech ist ein freies Server-Transfer-Skript, das Dateien von populären File-Hostern wie uploaded.net, zippyshare.com oder einem der über 100 anderen Hostern runter- oder sie hochlädt.'; -$L['SABNZBD'] = 'SABnzbd ist ein plattformunabhängiger Binary-Newsgroup-Downloader. Das Programm arbeitet im Hintergrund und vereinfacht das Downloaden, Prüfen und Extrahieren von Dateien aus dem Usenet. SABnzbd nutzt dafür NZB-Dateien (vergleichbar mit .torrent-Dateien, aber für das Usenet), anstatt das Usenet direkt zu durchsuchen.'; -$L['SICKRAGE'] = 'Video File Manager für Serien, der nach den neuesten Episoden deiner Lieblingsserien Ausschau hält und diese dann automatisiert runterlädt und organisiert.'; -$L['SONARR'] = 'Sonarr ist ein Serien-Management-Tool, das mit Torrents und UseNet funktioniert.'; -$L['SUBSONIC'] = 'Subsonic ist ein webbasierter Media-Server. Da er in Java geschrieben ist, kann er auf jedem Betriebssystem mit Java-Support betrieben werden. Subsonic ermöglicht das simultane Streamen auf mehrere Clienten und unterstützt jedes streambare Medienformat (inklusive MP3, AAC, und Ogg).'; -$L['SYNCTHING'] = 'Syncthing ist eine quelloffen und in Go geschriebene Dateisynchronisation mit BitTorrent.'; -$L['X2GO'] = 'X2Go ist eine Open-Source Remote-Desktop-Software für Linux, die das NX-Technologie-Protokoll verwendet.'; -$L['ZNC'] = 'ZNC ist ein IRC-Netzwerk Bouncer oder BNC. Er kann den Clienten vom eigentlichen IRC-Server sowie ausgewählten Chaträumen trennen.'; - -// package management center buttons -$L['CLI'] = 'Nur per Web-Konsole'; -$L['INSTALL'] = 'Installieren'; -$L['INSTALLED'] = 'Installiert'; -$L['OVPN_TOOLTIP_I'] = 'Greife per Web-Konsole auf das Feature mit dem Befehl "quickVPN" zu'; -$L['OVPN_TOOLTIP_U'] = 'Greife per Web-Konsole auf das Feature mit dem Befehl "quickVPN" zu'; -$L['BOX'] = 'Nur BOX'; -$L['BOX_TOOLTIP_CSF'] = 'Greife per SSH auf das Feature mit dem Befehl "box install csf" zu'; -$L['BOX_TOOLTIP_NEXTCLOUD'] = 'Greife per SSH auf das Feature mit dem Befehl "box install nextcloud" zu'; -$L['BOX_TOOLTIP_ZNC'] = 'Greife per SSH auf das Feature mit dem Befehl "box install znc" zu'; - -//////////////////////////////////////// -//BANDWIDTH & DATA TABLES -/////////////////////////////////////// - -// column headers and dropdown toggle button -$L['NETWORK'] = 'Netzwerk'; -$L['UPLOAD'] = 'Upload'; -$L['DOWNLOAD'] = 'Download'; -$L['VIEW_ADDITIONAL_BANDWIDTH_DETAILS'] = 'Zeige weitere Bandbreiten-Details'; - -// main table headers -$L['Summary'] = 'Zusammenfassung'; -$L['Top 10 days'] = 'Top 10 Tage'; -$L['Last 24 hours'] = 'Letzte 24 Stunden'; -$L['Last 30 days'] = 'Letzte 30 Tage'; -$L['Last 12 months'] = 'Letzte 12 Monate'; - -// traffic table columns -$L['In'] = 'Eingehend'; -$L['Out'] = 'Ausgehend'; -$L['Total'] = 'Gesamt'; - -// summary rows -$L['This hour'] = 'Diese Stunde'; -$L['This day'] = 'Dieser Tag'; -$L['This month'] = 'Dieser Monat'; -$L['All time'] = 'Insgesamte Zeit'; - -// date formats -$L['datefmt_days'] = '%d %B'; -$L['datefmt_days_img'] = '%d'; -$L['datefmt_months'] = '%B %Y'; -$L['datefmt_months_img'] = '%b'; -$L['datefmt_hours'] = '%l%p'; -$L['datefmt_hours_img'] = '%l'; -$L['datefmt_top'] = '%d %B %Y'; - - -//////////////////////////////////////// -//DISK STATUS WIDGET -/////////////////////////////////////// - -$L['FREE'] = 'Frei'; -$L['USED'] = 'Belegt'; -$L['SIZE'] = 'Größe'; -$L['DISK_SPACE'] = 'Speicherplatz'; -$L['PERCENTAGE_TXT_1'] = 'Du hast schon'; -$L['PERCENTAGE_TXT_2'] = 'deines gesamten Speicherplatzes belegt'; -$L['RTORRENTS_TITLE'] = 'Torrents in rTorrent'; -$L['DTORRENTS_TITLE'] = 'Torrents in Deluge'; -$L['TORRENTS_LOADED_1'] = 'Es sind'; -$L['TORRENTS_LOADED_2'] = 'Torrents im Moment geladen'; - - -//////////////////////////////////////// -//SYSTEM RAM STATUS WIDGET -/////////////////////////////////////// - -// physical memory -$L['PHYSICAL_MEMORY_TITLE'] = 'Physikalisch genutzter Speicher'; -$L['PHYSICAL_MEMORY_USED_TXT'] = 'belegt'; -$L['PHYSICAL_MEMORY_IDLE_TXT'] = 'frei'; - -//cached memory -$L['CACHED_MEMORY_TITLE'] = 'Gecachte Speichernutzung'; -$L['CACHED_MEMORY_USAGE_TXT'] = 'Cache Speichernutzung liegt bei'; -$L['CACHED_MEMORY_BUFFERS_TXT'] = 'Zwischenspeicher liegen bei'; - -// real memory -$L['REAL_MEMORY_TITLE'] = 'Tatsächliche Speichernutzung'; -$L['REAL_MEMORY_USAGE_TXT'] = 'Tatsächlich verwendeter Speicher'; -$L['REAL_MEMORY_FREE_TXT'] = 'Tatsächlich freier Speicher'; - -// swap usage -$L['SWAP_TITLE'] = 'Swap-Nutzung'; -$L['SWAP_TOTAL_TXT'] = 'SWAP Area'; -$L['SWAP_USED_TXT'] = 'belegt'; -$L['SWAP_IDLE_TXT'] = 'frei'; - -// total ram -$L['TOTAL_RAM'] = 'Gesamter Arbeitsspeicher'; - -// clean mem button -$L['CLEAR_CACHE'] = 'Lösche den Cache-Speicher'; - - -//////////////////////////////////////// -//CPU STATUS WIDGET -/////////////////////////////////////// - -// used percentage -$L['CPU_USED'] = 'genutzt'; - -// idle percentage -$L['CPU_IDLE'] = 'inaktiv'; - -// cpu info -$L['FREQUENCY'] = 'Frequenz:'; -$L['SECONDARY'] = 'Sekundärer Cache:'; - - -//////////////////////////////////////// -//SERVER LOAD WIDGET -/////////////////////////////////////// - -$L['SL_TXT'] = 'Aktuelle Durchschnittsbelastung deines Servers'; -$L['UPTIME'] = 'Betriebszeit'; - - -//////////////////////////////////////// -//SERVICE TOGGLES -/////////////////////////////////////// - -$L['ENABLED'] = 'Aktiviert'; -$L['DISABLED'] = 'Deaktiviert'; - -$L['INSTALLED'] = 'Installiert'; -$L['UNINSTALLED'] = 'Deinstalliert'; -$L['INSTALLING'] = 'Installiere'; -$L['UNINSTALLING'] = 'Deinstalliere'; - - -//////////////////////////////////////// -//STATUS BUTTONS -/////////////////////////////////////// - -$L['REFRESH'] = 'Aktualisieren'; -$L['UPDATE'] = 'Updater ausführen'; - -$L['CANCEL'] = 'Abbrechen'; -$L['AGREE'] = 'Ich verstehe, zieh durch!'; - -$L['CLOSE_REFRESH'] = 'Schließen & Aktualisieren'; - -//////////////////////////////////////// -//ADDITIONAL DICTIONARY -/////////////////////////////////////// - -$L['IDLE'] = 'Leerlauf'; -$L['TOTAL'] = 'Gesamt'; -$L['USED'] = 'Verwendet'; - -$L['DAYS_L'] = 'Tage'; -$L['HOURS_L'] = 'Stunden'; -$L['MINUTES_L'] = 'min'; -$L['SECONDS_L'] = 'sek'; -$L['IDLE_L'] = 'Leerlauf'; -$L['TOTAL_L'] = 'gesamt'; -$L['USED_L'] = 'verwendet'; - - -//////////////////////////////////////// -//MODALS & POPUP NOTICES -/////////////////////////////////////// - -//MODAL TITLES -$L['UNINSTALL_TITLE'] = 'Deinstallieren'; - -//MODAL TEXT -$L['UNINSTALL_BTSYNC_TXT'] = 'Du bist gerade dabei, BitTorrent Sync auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit BitTorrent Sync neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.'; -$L['UNINSTALL_CSF_TXT'] = 'Du bist gerade dabei, Config Server Firewall (CSF) auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Config Server Firewall (CSF) neu installieren, dabei werden jedoch Einstellungen (falls diese eingestellt wurden) komplett zurückgesetzt.'; -$L['UNINSTALL_COUCHPOTATO_TXT'] = 'Du bist gerade dabei, CouchPotato auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit CouchPotato neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_DELUGE_TXT'] = 'Du bist gerade dabei, Deluge auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner für <strong>alle Nutzer</strong> löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Deluge neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.'; -$L['UNINSTALL_EMBY_TXT'] = 'You are about to uninstall Emby from your system.<br/><br/>This will completely remove all of your configuration and shared folder settings... this action is irreversible. <br/><br/>You may reinstall Emby at any time, however, your storage path and linked folder settings will be reset to default.'; -$L['UNINSTALL_JACKETT_TXT'] = 'Du bist gerade dabei, Jackett auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Jackett neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_NEXTCLOUD_TXT'] = 'Du bist gerade dabei, NextCloud auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit NextCloud neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_NZBHYDRA_TXT'] = 'You are about to uninstall NZBHydra from your system.<br/><br/>This will completely remove all of your configurations and settings... this action is irreversible. <br/><br/>You may reinstall NZBHydra at any time, however, your settings will be reset to default.'; -$L['UNINSTALL_PLEX_TXT'] = 'Du bist gerade dabei, Plex Media Server auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Plex neu installieren, dabei werden jedoch deine Bibliothekseinstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_PLEXPY_TXT'] = 'Du bist gerade dabei, PlexPy auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit PlexPy neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_PLEXREQUESTS_TXT'] = 'Du bist gerade dabei, Ombi auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Ombi neu installieren, dabei werden jedoch deine Bibliothekseinstellungen sowie Wünsche komplett zurückgesetzt.'; -$L['UNINSTALL_PYLOAD_TXT'] = 'Du bist gerade dabei, pyLoad auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit pyLoad neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_QUASSEL_TXT'] = 'Du bist gerade dabei, Quassel auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird Quassel sowie alle Einstellungen und gespeicherten Backlogs komplett von deinem System entfernen.'; -$L['UNINSTALL_QUOTAS_TXT'] = 'Du bist gerade dabei, quotas auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird user quotas sowie alle dazugehörigen Einstellungen komplett von deinem System entfernen.'; -$L['UNINSTALL_RAPIDLEECH_TXT'] = 'Du bist gerade dabei, Rapidleech auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Rapidleech neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_SABNZBD_TXT'] = 'Du bist gerade dabei, SABnzbd auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit SABnzbd neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_SICKRAGE_TXT'] = 'Du bist gerade dabei, SickRage auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit SickRage neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_SONARR_TXT'] = 'Du bist gerade dabei, Sonarr auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Sonarr-NzbDrone neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_SUBSONIC_TXT'] = 'Du bist gerade dabei, Subsonic auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Subsonic neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_SYNCTHING_TXT'] = 'Du bist gerade dabei, Syncthing auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit Syncthing neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; -$L['UNINSTALL_X2GO_TXT'] = 'Du bist gerade dabei, x2go auf deinem System zu deinstallieren.<br/><br/> Diese Aktion wird x2goserver und die xfce4-Desktopumgebung komplett von deinem System entfernen.'; -$L['UNINSTALL_ZNC_TXT'] = 'Du bist gerade dabei, ZNC auf deinem System zu deinstallieren.<br/><br/>Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen löschen und ist nicht rückgängig zu machen. <br/><br/>Du kannst aber jederzeit ZNC neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.'; - -//SYSTEM RESPONSE MODAL -$L['SYSTEM_RESPONSE_TITLE'] = 'System-Antwort'; - -//GRITTER POPUPS -$L['UNINSTALLING_TITLE'] = 'Deinstalliere'; - -//GRITTER TEXT -$L['UNINSTALLING_TXT_1'] = 'Bitte warte kurz, während'; -$L['UNINSTALLING_TXT_2'] = 'von deinem System deinstalliert wird.'; - - -//////////////////////////////////////////////////////////////////////////// -// SAMPLE -// $L['SAMPLE'] = 'Sample'; -//////////////////////////////////////////////////////////////////////////// - - -?> diff --git a/dashboard/lang/lang_dk b/dashboard/lang/lang_dk deleted file mode 100644 index e705f8ab..00000000 --- a/dashboard/lang/lang_dk +++ /dev/null @@ -1,347 +0,0 @@ -<?php - -/******************************************************************************* -* * -* Danish * -* * -*******************************************************************************/ - -//////////////////////////////////////// -//DASHBOARD MENU -/////////////////////////////////////// - -// panel menu tab -$L['DEV_REPO_TXT'] = 'You are on the QuickBox Development Repo'; -$L['ANNOUCEMENTS'] = 'Annoucements'; -$L['JOIN_US_TXT'] = 'Join Us On Live Chat!'; -$L['CHAT_CONNECT_TXT'] = 'Click to connect'; -$L['ISSUE_REPORT_TXT'] = 'Report an issue'; -$L['MARKETPLACE'] = 'Marketplace'; -$L['LANG_SELECT'] = 'Vælg sprog'; - -// main menu tab -$L['MAIN_MENU'] = 'Hovedmenu'; -$L['DOWNLOADS'] = 'Downloads'; -$L['WEB_CONSOLE'] = 'Webkonsol'; -$L['DONATE'] = 'Donate'; - -// plugin menu tab -$L['PLUGIN_MENU'] = 'Pluginmenu'; -$L['RPLUGIN_MENU'] = 'ruTorrent Pluginmenu'; -$L['PMENU_NOTICE_TXT'] = 'Nemt at installere og afinstallere ruTorrent plugins blot ved at klikke på pluginnavnet'; -$L['PLUGINS'] = 'Plugins'; - -// quick help menu tab -$L['HELP_COMMANDS'] = 'Hjælpekommandoer & Mere'; -$L['QUICK_SYSTEM_TIPS'] = 'Hurtige System Tips'; -$L['DISKTEST_TXT'] = 'Skriv denne kommando for at udføre en hurtig s/l test af din disk.'; -$L['FIXHOME_TXT'] = 'Skriv denne kommando for hutigt at tilrette /home rettigheder.'; -// admin commands section -$L['ADMIN_COMMANDS'] = 'Admin Kommandoer'; -$L['SETDISK_TXT'] = 'Skriv denne kommando i ssh for at allokere den mængde diskplads du ønsker at tildele til en bruger.'; -$L['CREATESEEDBOXUSER_TXT'] = 'Skriv denne kommando i ssh for at oprette en ny seedboxbruger på din server.'; -$L['DELETESEEDBOXUSER_TXT'] = 'Skriv denne kommando i ssh for at slette en seedboxbruger på din server. Du skal indtaste brugerens kontonavn.'; -$L['CHANGEUSERPASS_TXT'] = 'Skriv denne kommando i ssh for at ændre en brugers agdgangskode.'; -$L['QUICKVPN_TXT'] = 'Skriv denne kommando i ssh for at installere din egen VPN server på omkirng et minut samt administrere og oprette en nye brugercertifikater til brug på serveren.'; -$L['SHOWSPACE_TXT'] = 'Skriv denne kommando i ssh (root) for at vise hver brugers nuværende diskforbrug.'; -$L['UPGRADEBTSYNC_TXT'] = 'Skriv denne kommando i ssh for at opgradere BTSync til nyeste version.'; -$L['UPGRADEPLEX_TXT'] = 'Skriv denne kommando i ssh for at opgradere Plex til nyeste version.'; -$L['UPGRADEDELUGE_TXT'] = 'Skriv denne kommando i ssh for at opgradere Deluge til nyeste version.'; -$L['UPGRADEJACKETT_TXT'] = 'Skriv denne kommando for at opgradere Jackett til nyeste version.'; -$L['UPGRADEPYLOAD_TXT'] = 'Type this command in ssh to upgrade pyLoad to newest version when available.'; -$L['SETUPPYLOAD_TXT'] = 'Type this command in ssh to run the pyLoad setup script.'; -$L['CLEAN_MEM_TXT'] = 'Skriv denne kommando i ssh (root) for at nulstille systemets fysiske Hukommelsescache.'; -// essential user commands section -$L['ESSENTIAL_USER_COMMANDS'] = 'Vigtige Brugerkommandoer'; -$L['RELOAD_TXT'] = 'tillader en bruger at genstarte services (rtorrent and irssi)'; -$L['SCREEN_RTORRNENT_TXT'] = 'tillader en bruger at genstarte/genforbinde rtorrent via SSH'; -$L['SCREEN_IRSSI_TXT'] = 'tillader en bruger at genstarte/genforbinde irssi via SSH'; - - -//////////////////////////////////////// -//DASHBOARD WIDGET TITLES -/////////////////////////////////////// - -// services status widget -$L['SERVICE_CONTROL_CENTER'] = 'Servicekontrol'; - -// services status widget -$L['SERVICE_STATUS'] = 'Service Status'; - -// restart services widget -$L['RESTART_SERVICES'] = 'Genstart Services'; - -// service controller widget -$L['ENABLE_DISABLE_SERVICES'] = 'Aktiver/Deaktiver'; - -// package management center widget -$L['PACKAGE_MANAGEMENT_CENTER'] = 'Pakkeadministration'; - -// bandwidth data widget -$L['BANDWIDTH_DATA'] = 'Båndbredde'; - -// disk status widget -$L['YOUR_DISK_STATUS'] = 'Disk Status'; - -// memory status widget -$L['SYSTEM_RAM_STATUS'] = 'RAM Status'; - -// cpu status widget -$L['CPU_STATUS'] = 'CPU Status'; - -// server load widget -$L['SERVER_LOAD'] = 'Serverbelastning'; - -// recent updates widget -$L['RECENT_UPDATES'] = 'Recent Activity & Updates'; -$L['RECENT_UPDATES_TXT'] = 'This feed updates every 60 seconds'; - - -//////////////////////////////////////// -//PACKAGE MANAGEMENT CENTER -/////////////////////////////////////// - -// package management center notice -$L['PMC_NOTICE_TXT'] = '<strong>Bemærk!</strong> Disse muligheder er ikke det samme som aktivering og deaktivering af en softwarepakke. Disse muligheder er designet til enten at installere eller afinstallere.'; - -// package management center column headers -$L['NAME'] = 'Navn'; -$L['DETAILS'] = 'Detaljer'; -$L['AVAILABILITY'] = 'Tilgængelighed'; - -// packages -$L['BTSYNC_DETAILS'] = 'BitTorrent Sync by BitTorrent, Inc er et proprietært peer-to-peer-fil synkronisering værktøj.'; -$L['COUCHPOTATO'] = 'Hent film automatisk, nemt og i den bedste kvalitet, så snart de er frigivet via usenet eller torrents.'; -$L['CSF'] = 'ConfigServer Firewall, også kendt som CSF, er et firewall-konfigurationsscript således du kan få en bedre sikkerhed til din server og samtidig giver dig et nemt plus avanceret interface til styring af dine firewall-indstillinger.'; -$L['DELUGE'] = 'Deluge en gratis letvægts cross-platform BitTorrent klient.'; -$L['EMBY'] = 'Emby Server is a client-server software package that lets consumers host their legal personal copies of multimedia — music, video and picture files. ... The Emby client software is an app you need to install on mobile devices and certain settop boxes for televisions, like Android TV.'; -$L['JACKETT'] = 'API support til dine favorit private trackere.'; -$L['NEXTCLOUD'] = 'Nextcloud er en open source, selvhosted filsynkroniserings-, delings- og kommunikationsplatform. Få nem adgang til og synkoniser dine filer, kontakter, kalendre og kommuniker på tværs af alle dine enheder. Du afgør selv hvad der sker med dine data, hvor den lagres, og hvem der kan få adgang!'; -$L['NZBHYDRA'] = 'NZBHydra is a meta search for NZB indexers. It provides easy access to a number of raw and newznab based indexers. You can search all your indexers from one place and use it as indexer source for tools like Sonarr or CouchPotato.'; -$L['OVPN'] = 'SSL/TLS baseret user-space VPN. Supporterer Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Windows 2000/XP+.'; -$L['PLEX'] = 'Plex lader dig streame dit indhold til enhver Plex enhed.'; -$L['PLEX_REQUESTS'] = 'Ombi tilbyder et smuk og let anvendeligt interface, således brugere nemt kan tilføje "Ønsker" til Plex-biblioteket. Integrerer med CouchPotato, SickRage and Sonarr.'; -$L['PLEXPY'] = 'En python baseret webapplikation til at monitorere, analysere og få notifikationer omkring din Plex Media Server.'; -$L['PYLOAD'] = 'pyLoad is a download manager for `Hoster` websites, video sites, and HTTP/FTP links. A list of supported sites can be found <a href="https://github.com/pyload/pyload/wiki/Supported-Hoster" target="_blank">here</a>'; -$L['QUASSEL'] = 'Quassel IRC er en moderne, cross-platform, distribueret IRC klient baseret på Qt4 framework.'; -$L['QUOTAS'] = 'Denne feature fra Linux tillader administratore at tildele den mængde disk plads en bruger eller gruppe kan tilgå.'; -$L['RAPIDLEECH'] = 'Rapid Leech er et gratis server overførsels script op mod forskellige populære upload-/downloadsider som fx. uploaded.net, Rapidshare.com og mere end 120 andre.'; -$L['SABNZBD'] = 'SABnzbd is a multi-platform binary newsgroup downloader. The program works in the background and simplifies the downloading verifying and extracting of files from Usenet. SABnzbd uses NZB files (similar to .torrent files, but for Usenet), instead of browsing Usenet directly.'; -$L['SICKRAGE'] = 'SickRage håndterer nemt dine tv-serier, den holder automatisk øje med nye afsnit af din favorit serie.'; -$L['SONARR'] = 'Sonarr håndterer dine tv-serier og virker med både torrents og usenet.'; -$L['SUBSONIC'] = 'Subsonic is a web-based media server. It is written in Java, so it can run on any operating system with Java support. Subsonic supports streaming to multiple clients simultaneously, and supports any streamable media (including MP3, AAC, and Ogg).'; -$L['SYNCTHING'] = 'Open Source Continuous File Synchronization with BitTorrent'; -$L['X2GO'] = 'X2Go er et open source fjernskrivebords-software til Linux som benytter sig af NX tech. protokollen.'; -$L['ZNC'] = 'ZNC er en IRC bouncer eller BNC. Den kan frigøre ircklienten fra serveren eller kanalen og holde din klient ajour når der igen sker en tilkobling.'; - -// package management center buttons -$L['CLI'] = 'Kun Webkonsol'; -$L['INSTALL'] = 'Install'; -$L['INSTALLED'] = 'Installeret'; -$L['OVPN_TOOLTIP_I'] = 'Adgang til denne feature fås via webkonsollen ved at skrive: quickVPN'; -$L['OVPN_TOOLTIP_U'] = 'Adgang til denne feature fås via webkonsollen ved at skrive: quickVPN'; -$L['BOX'] = 'Kun BOX'; -$L['BOX_TOOLTIP_CSF'] = 'Adgang til denne feature fås via ssh ved at skrive: box install csf'; -$L['BOX_TOOLTIP_NEXTCLOUD'] = 'Adgang til denne feature fås via ssh ved at skrive: box install nextcloud'; -$L['BOX_TOOLTIP_ZNC'] = 'Adgang til denne feature fås via ssh ved at skrive: box install znc'; - -//////////////////////////////////////// -//BANDWIDTH & DATA TABLES -/////////////////////////////////////// - -// column headers and dropdown toggle button -$L['NETWORK'] = 'Netværk'; -$L['UPLOAD'] = 'Upload'; -$L['DOWNLOAD'] = 'Download'; -$L['VIEW_ADDITIONAL_BANDWIDTH_DETAILS'] = 'Båndbreddedetaljer'; - -// main table headers -$L['Summary'] = 'Oversigt'; -$L['Top 10 days'] = 'Top 10 dage'; -$L['Last 24 hours'] = 'Seneste 24 timer'; -$L['Last 30 days'] = 'Seneste 30 dage'; -$L['Last 12 months'] = 'Seneste 12 måneder'; - -// traffic table columns -$L['In'] = 'Ind'; -$L['Out'] = 'Ud'; -$L['Total'] = 'Total'; - -// summary rows -$L['This hour'] = 'Denne time'; -$L['This day'] = 'Denne dag'; -$L['This month'] = 'Denne måned'; -$L['All time'] = 'Samlet'; - -// date formats -$L['datefmt_days'] = '%d %B'; -$L['datefmt_days_img'] = '%d'; -$L['datefmt_months'] = '%B %Y'; -$L['datefmt_months_img'] = '%b'; -$L['datefmt_hours'] = '%l%p'; -$L['datefmt_hours_img'] = '%l'; -$L['datefmt_top'] = '%d %B %Y'; - - -//////////////////////////////////////// -//DISK STATUS WIDGET -/////////////////////////////////////// - -$L['FREE'] = 'Ledig'; -$L['USED'] = 'Brugt'; -$L['SIZE'] = 'Størrelse'; -$L['DISK_SPACE'] = 'Disk Plads'; -$L['PERCENTAGE_TXT_1'] = 'Du har brugt'; -$L['PERCENTAGE_TXT_2'] = 'af din totale disk plads'; -$L['RTORRENTS_TITLE'] = 'Torrents i rTorrent'; -$L['DTORRENTS_TITLE'] = 'Torrents i Deluge'; -$L['TORRENTS_LOADED_1'] = 'Der er indlæst'; -$L['TORRENTS_LOADED_2'] = 'torrents'; - - -//////////////////////////////////////// -//SYSTEM RAM STATUS WIDGET -/////////////////////////////////////// - -// physical memory -$L['PHYSICAL_MEMORY_TITLE'] = 'Fysisk Hukommelsesforbrug'; -$L['PHYSICAL_MEMORY_USED_TXT'] = 'brugt'; -$L['PHYSICAL_MEMORY_IDLE_TXT'] = 'ledig'; - -//cached memory -$L['CACHED_MEMORY_TITLE'] = 'Cached Hukommelsesforbrug'; -$L['CACHED_MEMORY_USAGE_TXT'] = 'Cache hukommelsesforbrug ligger på'; -$L['CACHED_MEMORY_BUFFERS_TXT'] = 'Buffers ligger på'; - -// real memory -$L['REAL_MEMORY_TITLE'] = 'Aktuel Hukommelsesforbrug'; -$L['REAL_MEMORY_USAGE_TXT'] = 'Aktuel hukommelsesforbrug ligger på'; -$L['REAL_MEMORY_FREE_TXT'] = 'Aktuel hukommelse ledig'; - -// swap usage -$L['SWAP_TITLE'] = 'Swap Forbrug'; -$L['SWAP_TOTAL_TXT'] = 'SWAP Område'; -$L['SWAP_USED_TXT'] = 'brugt'; -$L['SWAP_IDLE_TXT'] = 'ledig'; - -// total ram -$L['TOTAL_RAM'] = 'Total System RAM'; - -// clean mem button -$L['CLEAR_CACHE'] = 'Ryd Hukommelsescache'; - - -//////////////////////////////////////// -//CPU STATUS WIDGET -/////////////////////////////////////// - -// used percentage -$L['CPU_USED'] = 'brugt'; - -// idle percentage -$L['CPU_IDLE'] = 'ledig'; - -// cpu info -$L['FREQUENCY'] = 'Frekvens:'; -$L['SECONDARY'] = 'Sekundær Cache:'; - - -//////////////////////////////////////// -//SERVER LOAD WIDGET -/////////////////////////////////////// - -$L['SL_TXT'] = 'Din servers aktuelle belastningsgennemsnit'; -$L['UPTIME'] = 'Oppetid'; - - -//////////////////////////////////////// -//SERVICE TOGGLES -/////////////////////////////////////// - -$L['ENABLED'] = 'Aktiveret'; -$L['DISABLED'] = 'Deaktiveret'; - -$L['INSTALLED'] = 'Installeret'; -$L['UNINSTALLED'] = 'Uinstalleret'; -$L['INSTALLING'] = 'Installerer'; -$L['UNINSTALLING'] = 'Afinstallerer'; - - -//////////////////////////////////////// -//STATUS BUTTONS -/////////////////////////////////////// - -$L['REFRESH'] = 'Genopfrisk'; -$L['UPDATE'] = 'Opdater'; - -$L['CANCEL'] = 'Fortryd'; -$L['AGREE'] = 'Jeg forstår, gør det!'; - -$L['CLOSE_REFRESH'] = 'Luk & Genopfrisk'; - -//////////////////////////////////////// -//ADDITIONAL DICTIONARY -/////////////////////////////////////// - -$L['IDLE'] = 'Ledig'; -$L['TOTAL'] = 'Total'; -$L['USED'] = 'Brugt'; - -$L['DAYS_L'] = 'dage'; -$L['HOURS_L'] = 'tim'; -$L['MINUTES_L'] = 'min'; -$L['SECONDS_L'] = 'sek'; -$L['IDLE_L'] = 'ledig'; -$L['TOTAL_L'] = 'total'; -$L['USED_L'] = 'brugt'; - - -//////////////////////////////////////// -//MODALS & POPUP NOTICES -/////////////////////////////////////// - -//MODAL TITLES -$L['UNINSTALL_TITLE'] = 'Afinstaller'; - -//MODAL TEXT -$L['UNINSTALL_BTSYNC_TXT'] = 'Du er ved at afinstallere BitTorrent Sync fra dit system.<br/><br/>Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere BitTorrent Sync til hver en tid, men din sti til lagering og linkede mappeindstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_CSF_TXT'] = 'Du er ved at afinstallere Config Server Firewall (CSF) fra dit system.<br/><br/>Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere Config Server Firewall (CSF) til hver en tid, men din konfiguration vil blive nulstillet til standard.'; -$L['UNINSTALL_COUCHPOTATO_TXT'] = 'Du er ved at afinstallere CouchPotato fra dit system.<br/><br/>>Dette vil fuldstændig fjerne din kofiguration og indstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere CouchPotato til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_DELUGE_TXT'] = 'Du er ved at afinstallere Deluge fra dit system.<br/><br/>Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for <strong>alle brugere</strong>... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere Deluge til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..'; -$L['UNINSTALL_EMBY_TXT'] = 'You are about to uninstall Emby from your system.<br/><br/>This will completely remove all of your configuration and shared folder settings... this action is irreversible. <br/><br/>You may reinstall Emby at any time, however, your storage path and linked folder settings will be reset to default.'; -$L['UNINSTALL_JACKETT_TXT'] = 'Du er ved at afinstallere Jackett fra dit system.<br/><br/>Dette vil fuldstændig fjerne din kofiguration og indstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere Jackett til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_NEXTCLOUD_TXT'] = 'Du er ved at afinstallere NextCloud fra dit system.<br/><br/>Dette vil fuldstændig fjerne din kofiguration og indstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere NextCloud til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_NZBHYDRA_TXT'] = 'You are about to uninstall NZBHydra from your system.<br/><br/>This will completely remove all of your configurations and settings... this action is irreversible. <br/><br/>You may reinstall NZBHydra at any time, however, your settings will be reset to default.'; -$L['UNINSTALL_PLEX_TXT'] = 'Du er ved at afinstallere Plex Media Server fra dit system.<br/><br/>Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... tdenne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere Plex til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_PLEXPY_TXT'] = 'Du er ved at afinstallere PlexPy fra dit system.<br/><br/>Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere PlexPy til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_PLEXREQUESTS_TXT'] = 'Du er ved at afinstallere Ombi fra dit system.<br/><br/>Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere Ombi til hver en tid, men dine biblioteksindstillinger og anmodninger vil blive nulstillet.'; -$L['UNINSTALL_PYLOAD_TXT'] = 'You are about to uninstall pyLoad from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall pyLoad at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_QUASSEL_TXT'] = 'Du er ved at afinstallere Quassel fra dit system.<br/><br/> Dette vil fuldstændig fjerne Quassel, alle indstillinger/gemte backlogs fra dit system.'; -$L['UNINSTALL_QUOTAS_TXT'] = 'Du er ved at afinstallere Quotas fra dit system.<br/><br/> Dette vil fuldstændig fjerne bruger kvoter (user quotas) og enhver indstilling associeret med dem.'; -$L['UNINSTALL_RAPIDLEECH_TXT'] = 'Du er ved at afinstallere Rapidleech fra dit system.<br/><br/>Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere Rapidleech til hver en tid, men din konfiguration vil blive nulstillet til standard.'; -$L['UNINSTALL_SABNZBD_TXT'] = 'You are about to uninstall SABnzbd from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall SABnzbd at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_SICKRAGE_TXT'] = 'Du er ved at afinstallere SickRage fra dit system.<br/><br/>Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere SickRage til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_SONARR_TXT'] = 'Du er ved at afinstallere Sonarr fra dit system.<br/><br/>Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere Sonarr-NzbDrone til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_SUBSONIC_TXT'] = 'You are about to uninstall Subsonic from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Subsonic at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_SYNCTHING_TXT'] = 'Du er ved at afinstallere Syncthing fra dit system.<br/><br/>Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere Syncthing til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; -$L['UNINSTALL_X2GO_TXT'] = 'Du er ved at afinstallere x2go fra dit system.<br/><br/> Dette vil fuldstændig fjerne x2goserver og xfce4 desktopmiljøet fra dit system.'; -$L['UNINSTALL_ZNC_TXT'] = 'Du er ved at afinstallere ZNC fra dit system.<br/><br/>Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes. <br/><br/>Du har mulighed for at geninstallere ZNC til hver en tid, men dine indstillinger vil blive nulstillet til standard.'; - -//SYSTEM RESPONSE MODAL -$L['SYSTEM_RESPONSE_TITLE'] = 'System Respons'; - -//GRITTER POPUPS -$L['UNINSTALLING_TITLE'] = 'Afinstallerer'; - -//GRITTER TEXT -$L['UNINSTALLING_TXT_1'] = 'Vent venligst et øjeblik'; -$L['UNINSTALLING_TXT_2'] = 'bliver afinstalleret fra dit system.'; - - -//////////////////////////////////////////////////////////////////////////// -// SAMPLE -// $L['SAMPLE'] = 'Sample'; -//////////////////////////////////////////////////////////////////////////// - - -?> diff --git a/dashboard/lang/lang_en b/dashboard/lang/lang_en deleted file mode 100644 index 4473adbd..00000000 --- a/dashboard/lang/lang_en +++ /dev/null @@ -1,347 +0,0 @@ -<?php - -/******************************************************************************* -* * -* English * -* * -*******************************************************************************/ - -//////////////////////////////////////// -//DASHBOARD MENU -/////////////////////////////////////// - -// panel menu tab -$L['DEV_REPO_TXT'] = 'You are on the QuickBox Development Repo'; -$L['ANNOUCEMENTS'] = 'Annoucements'; -$L['JOIN_US_TXT'] = 'Join Us On Live Chat!'; -$L['CHAT_CONNECT_TXT'] = 'Click to connect'; -$L['ISSUE_REPORT_TXT'] = 'Report an issue'; -$L['MARKETPLACE'] = 'Marketplace'; -$L['LANG_SELECT'] = 'Select Language'; - -// main menu tab -$L['MAIN_MENU'] = 'Main Menu'; -$L['DOWNLOADS'] = 'Downloads'; -$L['WEB_CONSOLE'] = 'Web Console'; -$L['DONATE'] = 'Donate'; - -// plugin menu tab -$L['PLUGIN_MENU'] = 'Plugin Menu'; -$L['RPLUGIN_MENU'] = 'ruTorrent Plugin Menu'; -$L['PMENU_NOTICE_TXT'] = 'Easily install and uninstall ruTorrent plugins simply by clicking on the plugin name'; -$L['PLUGINS'] = 'Plugins'; - -// quick help menu tab -$L['HELP_COMMANDS'] = 'Help Commands & More'; -$L['QUICK_SYSTEM_TIPS'] = 'Quick System Tips'; -$L['DISKTEST_TXT'] = 'Type this command to perform a quick r/w test of your disk.'; -$L['FIXHOME_TXT'] = 'Type this command to quickly adjusts /home directory permissions.'; -// admin commands section -$L['ADMIN_COMMANDS'] = 'Admin Commands'; -$L['SETDISK_TXT'] = 'Type this command in ssh to allocate the amount of disk space you would like to give to a user.'; -$L['CREATESEEDBOXUSER_TXT'] = 'Type this command in ssh to create a new seedbox user on your server.'; -$L['DELETESEEDBOXUSER_TXT'] = 'Type this command in ssh to delete a seedbox user on your server. You will need to enter the users account name, you will be prompted.'; -$L['CHANGEUSERPASS_TXT'] = 'Typing this command in ssh allows you to change a desired users password.'; -$L['QUICKVPN_TXT'] = 'Type this command in ssh to setup your own VPN server in no more than a minute as well manage and create new user certificates for using the VPN server.'; -$L['SHOWSPACE_TXT'] = 'Use the above command as root to show the amount of disk space currently used by each user.'; -$L['UPGRADEBTSYNC_TXT'] = 'Type this command in ssh to upgrade BTSync to newest version when available.'; -$L['UPGRADEPLEX_TXT'] = 'Type this command in ssh to upgrade Plex to newest version when available.'; -$L['UPGRADEDELUGE_TXT'] = 'Type this command in ssh to upgrade Deluge to newest version when available.'; -$L['UPGRADEJACKETT_TXT'] = 'Type this command in ssh to upgrade Jackett to newest version when available.'; -$L['UPGRADEPYLOAD_TXT'] = 'Type this command in ssh to upgrade pyLoad to newest version when available.'; -$L['SETUPPYLOAD_TXT'] = 'Type this command in ssh to run the pyLoad setup script.'; -$L['CLEAN_MEM_TXT'] = 'Use the above command as root if/when you decide to clear your systems Physical Memory Cache'; -// essential user commands section -$L['ESSENTIAL_USER_COMMANDS'] = 'Essential User Commands'; -$L['RELOAD_TXT'] = 'allows user to reload their services (rtorrent and irssi)'; -$L['SCREEN_RTORRNENT_TXT'] = 'allows user to restart/remount rtorrent from SSH'; -$L['SCREEN_IRSSI_TXT'] = 'allows user to restart/remount irssi from SSH'; - - -//////////////////////////////////////// -//DASHBOARD WIDGET TITLES -/////////////////////////////////////// - -// services status widget -$L['SERVICE_CONTROL_CENTER'] = 'Service Control Center'; - -// services status widget -$L['SERVICE_STATUS'] = 'Service Status'; - -// restart services widget -$L['RESTART_SERVICES'] = 'Restart Services'; - -// service controller widget -$L['ENABLE_DISABLE_SERVICES'] = 'Enable/Disable'; - -// package management center widget -$L['PACKAGE_MANAGEMENT_CENTER'] = 'Package Management Center'; - -// bandwidth data widget -$L['BANDWIDTH_DATA'] = 'Bandwidth Data'; - -// disk status widget -$L['YOUR_DISK_STATUS'] = 'Your Disk Status'; - -// memory status widget -$L['SYSTEM_RAM_STATUS'] = 'System RAM Status'; - -// cpu status widget -$L['CPU_STATUS'] = 'CPU Status'; - -// server load widget -$L['SERVER_LOAD'] = 'Server Load'; - -// recent updates widget -$L['RECENT_UPDATES'] = 'Recent Activity'; -$L['RECENT_UPDATES_TXT'] = 'This feed updates every 60 seconds'; - - -//////////////////////////////////////// -//PACKAGE MANAGEMENT CENTER -/////////////////////////////////////// - -// package management center notice -$L['PMC_NOTICE_TXT'] = '<strong>Heads Up!</strong> Please be advised that these options are not the same as enabling and disabling a software package. These options are designed to either install or uninstall.'; - -// package management center column headers -$L['NAME'] = 'Name'; -$L['DETAILS'] = 'Details'; -$L['AVAILABILITY'] = 'Availability'; - -// packages -$L['BTSYNC_DETAILS'] = 'BitTorrent Sync by BitTorrent, Inc is a proprietary peer-to-peer file synchronization tool.'; -$L['COUCHPOTATO'] = 'Download movies automatically, easily and in the best quality as soon as they are released, via usenet or torrents.'; -$L['CSF'] = 'ConfigServer Firewall, also known as CSF, is a firewall configuration script created to provide better security for your server while giving you an easy to use, advanced interface for managing your firewall settings.'; -$L['DELUGE'] = 'Deluge is a lightweight, Free Software, cross-platform BitTorrent client.'; -$L['EMBY'] = 'Emby Server is a client-server software package that lets consumers host their legal personal copies of multimedia — music, video and picture files. ... The Emby client software is an app you need to install on mobile devices and certain settop boxes for televisions, like Android TV.'; -$L['JACKETT'] = 'API Support for your favorite private trackers.'; -$L['NEXTCLOUD'] = 'Nextcloud is an open source, self-hosted file sync and share and communication app platform. Access & sync your files, contacts, calendars & communicate and collaborate across your devices. You decide what happens with your data, where it is and who can access it!'; -$L['NZBHYDRA'] = 'NZBHydra is a meta search for NZB indexers. It provides easy access to a number of raw and newznab based indexers. You can search all your indexers from one place and use it as indexer source for tools like Sonarr or CouchPotato.'; -$L['OVPN'] = 'SSL/TLS based user-space VPN. Supports Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Windows 2000/XP+.'; -$L['PLEX'] = 'Plex lets you stream your content to any Plex enabled device.'; -$L['PLEX_REQUESTS'] = 'Ombi offers a beautiful and easy to use interface for items users wish to be added to the library. Integrates with CouchPotato, SickRage and Sonarr.'; -$L['PLEXPY'] = 'A python based web application for monitoring, analytics and notifications for Plex Media Server'; -$L['PYLOAD'] = 'pyLoad is a download manager for `Hoster` websites, video sites, and HTTP/FTP links. A list of supported sites can be found <a href="https://github.com/pyload/pyload/wiki/Supported-Hoster" target="_blank">here</a>'; -$L['QUASSEL'] = 'Quassel IRC is a modern, cross-platform, distributed IRC client based on the Qt4 framework.'; -$L['QUOTAS'] = 'This feature of Linux allows the system administrator to allocate a maximum amount of disk space a user or group may use.'; -$L['RAPIDLEECH'] = 'Rapid Leech is a free server transfer script for use on various popular upload/download sites such as uploaded.net, Rapidshare.com and more than 120 others.'; -$L['SABNZBD'] = 'SABnzbd is a multi-platform binary newsgroup downloader. The program works in the background and simplifies the downloading verifying and extracting of files from Usenet. SABnzbd uses NZB files (similar to .torrent files, but for Usenet), instead of browsing Usenet directly.'; -$L['SICKRAGE'] = 'Video File Manager for TV Shows, It watches for new episodes of your favorite shows and when they are posted it does its magic.'; -$L['SONARR'] = 'Sonarr is a tv series management tool which will work with both torrents and usenet.'; -$L['SUBSONIC'] = 'Subsonic is a web-based media server. It is written in Java, so it can run on any operating system with Java support. Subsonic supports streaming to multiple clients simultaneously, and supports any streamable media (including MP3, AAC, and Ogg).'; -$L['SYNCTHING'] = 'Open Source Continuous File Synchronization with BitTorrent'; -$L['X2GO'] = 'X2Go is an open source remote desktop software for Linux that uses the NX technology protocol.'; -$L['ZNC'] = 'ZNC is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels.'; - -// package management center buttons -$L['CLI'] = 'Web Console Only'; -$L['INSTALL'] = 'Install'; -$L['INSTALLED'] = 'Installed'; -$L['OVPN_TOOLTIP_I'] = 'Access this feature from your web-console by typing: quickVPN'; -$L['OVPN_TOOLTIP_U'] = 'Access this feature from your web-console by typing: quickVPN'; -$L['BOX'] = 'BOX Only'; -$L['BOX_TOOLTIP_CSF'] = 'Access this feature from ssh by typing: box install csf'; -$L['BOX_TOOLTIP_NEXTCLOUD'] = 'Access this feature from ssh by typing: box install nextcloud'; -$L['BOX_TOOLTIP_ZNC'] = 'Access this feature from ssh by typing: box install znc'; - -//////////////////////////////////////// -//BANDWIDTH & DATA TABLES -/////////////////////////////////////// - -// column headers and dropdown toggle button -$L['NETWORK'] = 'Network'; -$L['UPLOAD'] = 'Upload'; -$L['DOWNLOAD'] = 'Download'; -$L['VIEW_ADDITIONAL_BANDWIDTH_DETAILS'] = 'View Additional Bandwidth Details'; - -// main table headers -$L['Summary'] = 'Summary'; -$L['Top 10 days'] = 'Top 10 days'; -$L['Last 24 hours'] = 'Last 24 hours'; -$L['Last 30 days'] = 'Last 30 days'; -$L['Last 12 months'] = 'Last 12 months'; - -// traffic table columns -$L['In'] = 'In'; -$L['Out'] = 'Out'; -$L['Total'] = 'Total'; - -// summary rows -$L['This hour'] = 'This hour'; -$L['This day'] = 'This day'; -$L['This month'] = 'This month'; -$L['All time'] = 'All time'; - -// date formats -$L['datefmt_days'] = '%d %B'; -$L['datefmt_days_img'] = '%d'; -$L['datefmt_months'] = '%B %Y'; -$L['datefmt_months_img'] = '%b'; -$L['datefmt_hours'] = '%l%p'; -$L['datefmt_hours_img'] = '%l'; -$L['datefmt_top'] = '%d %B %Y'; - - -//////////////////////////////////////// -//DISK STATUS WIDGET -/////////////////////////////////////// - -$L['FREE'] = 'Free'; -$L['USED'] = 'Used'; -$L['SIZE'] = 'Size'; -$L['DISK_SPACE'] = 'Disk Space'; -$L['PERCENTAGE_TXT_1'] = 'You have used'; -$L['PERCENTAGE_TXT_2'] = 'of your total disk space'; -$L['RTORRENTS_TITLE'] = 'Torrents in rtorrent'; -$L['DTORRENTS_TITLE'] = 'Torrents in deluge'; -$L['TORRENTS_LOADED_1'] = 'There are'; -$L['TORRENTS_LOADED_2'] = 'torrents loaded'; - - -//////////////////////////////////////// -//SYSTEM RAM STATUS WIDGET -/////////////////////////////////////// - -// physical memory -$L['PHYSICAL_MEMORY_TITLE'] = 'Physical Memory Usage'; -$L['PHYSICAL_MEMORY_USED_TXT'] = 'used'; -$L['PHYSICAL_MEMORY_IDLE_TXT'] = 'idle'; - -//cached memory -$L['CACHED_MEMORY_TITLE'] = 'Cached Memory Usage'; -$L['CACHED_MEMORY_USAGE_TXT'] = 'Cache memory usage is at'; -$L['CACHED_MEMORY_BUFFERS_TXT'] = 'Buffers are at'; - -// real memory -$L['REAL_MEMORY_TITLE'] = 'Real Memory Usage'; -$L['REAL_MEMORY_USAGE_TXT'] = 'Real memory usage'; -$L['REAL_MEMORY_FREE_TXT'] = 'Real memory free'; - -// swap usage -$L['SWAP_TITLE'] = 'Swap Usage'; -$L['SWAP_TOTAL_TXT'] = 'SWAP Area'; -$L['SWAP_USED_TXT'] = 'used'; -$L['SWAP_IDLE_TXT'] = 'idle'; - -// total ram -$L['TOTAL_RAM'] = 'Total System RAM'; - -// clean mem button -$L['CLEAR_CACHE'] = 'Clear Memory Cache'; - - -//////////////////////////////////////// -//CPU STATUS WIDGET -/////////////////////////////////////// - -// used percentage -$L['CPU_USED'] = 'used'; - -// idle percentage -$L['CPU_IDLE'] = 'idle'; - -// cpu info -$L['FREQUENCY'] = 'Frequency:'; -$L['SECONDARY'] = 'Secondary Cache:'; - - -//////////////////////////////////////// -//SERVER LOAD WIDGET -/////////////////////////////////////// - -$L['SL_TXT'] = 'This is your servers current load average'; -$L['UPTIME'] = 'Uptime'; - - -//////////////////////////////////////// -//SERVICE TOGGLES -/////////////////////////////////////// - -$L['ENABLED'] = 'Enabled'; -$L['DISABLED'] = 'Disabled'; - -$L['INSTALLED'] = 'Installed'; -$L['UNINSTALLED'] = 'Uninstalled'; -$L['INSTALLING'] = 'Installing'; -$L['UNINSTALLING'] = 'Uninstalling'; - - -//////////////////////////////////////// -//STATUS BUTTONS -/////////////////////////////////////// - -$L['REFRESH'] = 'Refresh'; -$L['UPDATE'] = 'Run Updater'; - -$L['CANCEL'] = 'Cancel'; -$L['AGREE'] = 'I understand, do it!'; - -$L['CLOSE_REFRESH'] = 'Close & Refresh'; - -//////////////////////////////////////// -//ADDITIONAL DICTIONARY -/////////////////////////////////////// - -$L['IDLE'] = 'Idle'; -$L['TOTAL'] = 'Total'; -$L['USED'] = 'Used'; - -$L['DAYS_L'] = 'days'; -$L['HOURS_L'] = 'hrs'; -$L['MINUTES_L'] = 'min'; -$L['SECONDS_L'] = 'sec'; -$L['IDLE_L'] = 'idle'; -$L['TOTAL_L'] = 'total'; -$L['USED_L'] = 'used'; - - -//////////////////////////////////////// -//MODALS & POPUP NOTICES -/////////////////////////////////////// - -//MODAL TITLES -$L['UNINSTALL_TITLE'] = 'Uninstall'; - -//MODAL TEXT -$L['UNINSTALL_BTSYNC_TXT'] = 'You are about to uninstall BitTorrent Sync from your system.<br/><br/>This will completely remove all of your configuration and shared folder settings... this action is irreversible. <br/><br/>You may reinstall BitTorrent Sync at any time, however, your storage path and linked folder settings will be reset to default.'; -$L['UNINSTALL_CSF_TXT'] = 'You are about to uninstall Config Server Firewall (CSF) from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Config Server Firewall (CSF) at any time, however, your configuration settings (if any changes were made) will be reset to default.'; -$L['UNINSTALL_COUCHPOTATO_TXT'] = 'You are about to uninstall CouchPotato from your system.<br/><br/>This will completely remove all of your configurations and settings... this action is irreversible. <br/><br/>You may reinstall CouchPotato at any time, however, your settings will be reset to default.'; -$L['UNINSTALL_DELUGE_TXT'] = 'You are about to uninstall Deluge from your system.<br/><br/>This will completely remove all of your configuration and shared folder settings for <strong>all users</strong>... this action is irreversible. <br/><br/>You may reinstall Deluge at any time, however, your storage path and linked folder settings will be reset to default.'; -$L['UNINSTALL_EMBY_TXT'] = 'You are about to uninstall Emby from your system.<br/><br/>This will completely remove all of your configuration and shared folder settings... this action is irreversible. <br/><br/>You may reinstall Emby at any time, however, your storage path and linked folder settings will be reset to default.'; -$L['UNINSTALL_JACKETT_TXT'] = 'You are about to uninstall Jackett from your system.<br/><br/>This will completely remove all of your configurations and settings... this action is irreversible. <br/><br/>You may reinstall Jackett at any time, however, your settings will be reset to default.'; -$L['UNINSTALL_NEXTCLOUD_TXT'] = 'You are about to uninstall NextCloud from your system.<br/><br/>This will completely remove all of your configurations and settings... this action is irreversible. <br/><br/>You may reinstall NextCloud at any time, however, your settings will be reset to default.'; -$L['UNINSTALL_NZBHYDRA_TXT'] = 'You are about to uninstall NZBHydra from your system.<br/><br/>This will completely remove all of your configurations and settings... this action is irreversible. <br/><br/>You may reinstall NZBHydra at any time, however, your settings will be reset to default.'; -$L['UNINSTALL_PLEX_TXT'] = 'You are about to uninstall Plex Media Server from your system.<br/><br/>This will completely remove all of your configuration and library settings... this action is irreversible. <br/><br/>You may reinstall Plex at any time, however, your library settings will be reset to default.'; -$L['UNINSTALL_PLEXPY_TXT'] = 'You are about to uninstall PlexPy from your system.<br/><br/>This will completely remove all of your configuration and library settings... this action is irreversible. <br/><br/>You may reinstall PlexPy at any time, however, your settings will be reset to default.'; -$L['UNINSTALL_PLEXREQUESTS_TXT'] = 'You are about to uninstall Ombi from your system.<br/><br/>This will completely remove all of your configuration and library settings... this action is irreversible. <br/><br/>You may reinstall Ombi at any time, however, your library settings and requests will be reset.'; -$L['UNINSTALL_PYLOAD_TXT'] = 'You are about to uninstall pyLoad from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall pyLoad at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_QUASSEL_TXT'] = 'You are about to uninstall Quassel from your system.<br/><br/> This will completely remove Quassel and all settings/stored backlogs from your system.'; -$L['UNINSTALL_QUOTAS_TXT'] = 'You are about to uninstall quotas from your system.<br/><br/> This will completely remove user quotas and any settings associated with them.'; -$L['UNINSTALL_RAPIDLEECH_TXT'] = 'You are about to uninstall Rapidleech from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Rapidleech at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_SABNZBD_TXT'] = 'You are about to uninstall SABnzbd from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall SABnzbd at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_SICKRAGE_TXT'] = 'You are about to uninstall SickRage from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall SickRage at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_SONARR_TXT'] = 'You are about to uninstall Sonarr from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Sonarr-NzbDrone at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_SUBSONIC_TXT'] = 'You are about to uninstall Subsonic from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Subsonic at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_SYNCTHING_TXT'] = 'You are about to uninstall Syncthing from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.'; -$L['UNINSTALL_X2GO_TXT'] = 'You are about to uninstall x2go from your system.<br/><br/> This will completely remove x2goserver and xfce4 desktop environment from your system.'; -$L['UNINSTALL_ZNC_TXT'] = 'You are about to uninstall ZNC from your system.<br/><br/>This will completely remove all of your configurations and settings... this action is irreversible. <br/><br/>You may reinstall ZNC at any time, however, your settings will be reset to default.'; - -//SYSTEM RESPONSE MODAL -$L['SYSTEM_RESPONSE_TITLE'] = 'System Response'; - -//GRITTER POPUPS -$L['UNINSTALLING_TITLE'] = 'Uninstalling'; - -//GRITTER TEXT -$L['UNINSTALLING_TXT_1'] = 'Please wait while'; -$L['UNINSTALLING_TXT_2'] = 'is being uninstalled from your system.'; - - -//////////////////////////////////////////////////////////////////////////// -// SAMPLE -// $L['SAMPLE'] = 'Sample'; -//////////////////////////////////////////////////////////////////////////// - - -?> diff --git a/dashboard/lang/lang_fr b/dashboard/lang/lang_fr deleted file mode 100644 index 1f15bfcd..00000000 --- a/dashboard/lang/lang_fr +++ /dev/null @@ -1,346 +0,0 @@ -<?php - -/******************************************************************************* -* * -* Français * -* * -*******************************************************************************/ - -//////////////////////////////////////// -//DASHBOARD MENU -/////////////////////////////////////// - -// panel menu tab -$L['DEV_REPO_TXT'] = 'Vous êtes dans le dépôt de développement QuickBox.'; -$L['ANNOUNCEMENTS'] = 'Annonces'; -$L['JOIN_US_TXT'] = 'Rejoins-nous sur le chat'; -$L['CHAT_CONNECT_TXT'] = 'Se Connecter'; -$L['ISSUE_REPORT_TXT'] = 'Reporter une erreur'; -$L['MARKETPLACE'] = 'Marché'; -$L['LANG_SELECT'] = 'Selectionner Langue'; - -// main menu tab -$L['MAIN_MENU'] = 'Menu Principal'; -$L['DOWNLOADS'] = 'Téléchargements'; -$L['WEB_CONSOLE'] = 'Console Web'; -$L['DONATE'] = 'Faire un Don'; - -// plugin menu tab -$L['PLUGIN_MENU'] = 'Menu Plugins'; -$L['RPLUGIN_MENU'] = 'Menu Plugins ruTorrent'; -$L['PMENU_NOTICE_TXT'] = 'Installez et désinstallez facilement les plugins ruTorrent en cliquant simplement sur le nom du plugin.'; -$L['PLUGINS'] = 'Plugins'; - -// quick help menu tab -$L['HELP_COMMANDS'] = 'Commandes d\'aide et plus'; -$L['QUICK_SYSTEM_TIPS'] = 'Astuces'; -$L['DISKTEST_TXT'] = 'Tapez cette commande pour effectuer un rapide test de lecture/écriture sur votre disque.'; -$L['FIXHOME_TXT'] = 'Tapez cette commande pour ajuster rapidement les permissions du dossier /home.'; -// admin commands section -$L['ADMIN_COMMANDS'] = 'Commandes Administrateur'; -$L['SETDISK_TXT'] = 'Tapez cette commande en SSH pour allouer la quantité d\' espace disque que vous souhaitez donner à un utilisateur.'; -$L['CREATESEEDBOXUSER_TXT'] = 'Tapez cette commande en SSH pour créer un nouvel utilisateur sur votre seedbox.'; -$L['DELETESEEDBOXUSER_TXT'] = 'Tapez cette commande en SSH pour supprimer un utilisateur de votre seedbox. Vous devrez entrer son nom.'; -$L['CHANGEUSERPASS_TXT'] = 'Tapez cette commande en SSH vous permet de changer les mot de passe des utilisateurs.'; -$L['QUICKVPN_TXT'] = 'Tapez cette commande en SSH pour configurer votre propre serveur VPN et en une petite minute, crééez et gérez de nouveaux certificats d\'utilisteur pour utiliser le serveur VPN.'; -$L['SHOWSPACE_TXT'] = 'Utilisez cette commande en tant que root pour voir l’espace disque actuellement utilisé par chaque utilisateur.'; -$L['UPGRADEBTSYNC_TXT'] = 'Tapez cette commande en SSH pour mettre à jour BTSync vers la nouvelle version quand elle sera disponible.'; -$L['UPGRADEPLEX_TXT'] = 'Tapez cette commande en SSH pour mettre à jour Plex vers la nouvelle version quand elle sera disponible.'; -$L['UPGRADEDELUGE_TXT'] = 'Tapez cette commande en SSH pour mettre à jour Deluge vers la nouvelle version quand elle sera disponible.'; -$L['UPGRADEJACKETT_TXT'] = 'Tapez cette commande en SSH pour mettre à jour Jackett vers la nouvelle version quand elle sera disponible.'; -$L['UPGRADEPYLOAD_TXT'] = 'Tapez cette commande en SSH pour mettre à jour pyLoad vers la nouvelle version quand elle sera disponible.'; -$L['SETUPPYLOAD_TXT'] = 'Tapez cette commande en SSH pour lancer le script d\'installation de pyLoad.'; -$L['CLEAN_MEM_TXT'] = 'Tapez cette commande en tant que root si/quand vous décidez de nettoyer le cache de Mémoire Physique.'; -// essential user commands section -$L['ESSENTIAL_USER_COMMANDS'] = 'Commandes utilisateur essentielles'; -$L['RELOAD_TXT'] = 'Autorise l’utilisateur à recharger ses services (rTorrent et IRSSI).'; -$L['SCREEN_RTORRNENT_TXT'] = 'Autorise l’utilisateur à redémarrer/remonter rTorrent en SSH.'; -$L['SCREEN_IRSSI_TXT'] = 'Autorise l’utilisateur à redémarrer/remonter IRSSI en SSH.'; - -//////////////////////////////////////// -//DASHBOARD WIDGET TITLES -/////////////////////////////////////// - -// services status widget -$L['SERVICE_CONTROL_CENTER'] = 'Centre de contrôle des services'; - -// services status widget -$L['SERVICE_STATUS'] = 'Statut des services'; - -// restart services widget -$L['RESTART_SERVICES'] = 'Redémarrer mes Services'; - -// service controller widget -$L['ENABLE_DISABLE_SERVICES'] = 'Activer/Désactiver mes Services'; - -// package management center widget -$L['PACKAGE_MANAGEMENT_CENTER'] = 'Centre de gestion des Packages'; - -// bandwidth data widget -$L['BANDWIDTH_DATA'] = 'Bande Passante'; - -// disk status widget -$L['YOUR_DISK_STATUS'] = 'Statut Du Disque'; - -// memory status widget -$L['SYSTEM_RAM_STATUS'] = 'Statut mémoire RAM'; - -// cpu status widget -$L['CPU_STATUS'] = 'Statut CPU'; - -// server load widget -$L['SERVER_LOAD'] = 'Charge Serveur'; - -// recent updates widget -$L['RECENT_UPDATES'] = 'Activités récentes & MaJ'; -$L['RECENT_UPDATES_TXT'] = 'Ce flux se met à jour chaque minute'; - - -//////////////////////////////////////// -//PACKAGE MANAGEMENT CENTER -/////////////////////////////////////// - -// package management center notice -$L['PMC_NOTICE_TXT'] = '<strong>Attention!</strong> S\'il vous plaît, notez que ces options ne sont pas les mêmes que pour l\'activation et la désactivation d\'un logiciel. Ces options sont conçues uniquement pour les installer ou désinstaller.'; - -// package management center column headers -$L['NAME'] = 'Nom'; -$L['DETAILS'] = 'Détails'; -$L['AVAILABILITY'] = 'Disponibilité'; - -// packages -$L['BTSYNC_DETAILS'] = 'BitTorrent Sync par BitTorrent.Inc est un outil propriétaire peer-to-peer de synchronisation de fichiers.'; -$L['COUCHPOTATO'] = 'Téléchargez automatiquement des films, facilement et dans la meilleure qualité dès qu\'ils sont libérés, par l\'intermédiaire d\'Usenet ou de torrents.'; -$L['CSF'] = 'ConfigServer Firewall, connu sous le nom de CSF, est un script de configuration de pare-feu créé pour assurer une meilleure sécurité pour votre serveur tout en vous donnant une interface avancée et facile à utiliser pour gérer vos paramètres de pare-feu.'; -$L['DELUGE'] = 'Deluge est un client BitTorrent léger, gratuit et multi-plateforme.'; -$L['EMBY'] = 'Emby Server vous permet de diffuser votre contenu à tous vos dispositifs Emby activés. Une alternative robuste et open source à Plex'; -$L['JACKETT'] = 'Support API pour vos trackers privés préférés.'; -$L['NEXTCLOUD'] = 'NextCloud est un logiciel open source vous permettant d\'accéder depuis n\'importe quel endroit à vos documents importants. Il peut être installé sur n\'importe quel serveur et vous permet de synchroniser vos données (contacts, calendriers) \'dans le nuage\' sur votre serveur. Vous décidez de ce qui se passe avec vos données, où elles sont et qui peut y accéder!'; -$L['NZBHYDRA'] = 'NZBhydra vous permet de rechercher plus facilement les NZB. Le programme recherche plusieurs indexeurs NZB compatibles Newznab. Ils comprennent les NZBClub, NZBIndex, Womble et d\'autres... Vous pouvez aussi l\'utiliser comme source d\'indexeur pour des outils comme CouchPotato ou Sonarr.'; -$L['OVPN'] = 'VPN basé sur SSL/TLS. Supporté sur Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, et Windows 2000/XP+.'; -$L['PLEX'] = 'Plex vous permet de diffuser votre contenu à tous vos dispositifs Plex activés.'; -$L['PLEX_REQUESTS'] = 'Ombi offre une belle interface pour que vos utilisateurs vous demandent facilement d\'ajouter de nouveaux films à la bibliothèque. S\'intègre avec CouchPotato, SickRage et Sonarr.'; -$L['PLEXPY'] = 'Une application web python conçue pour la surveillance, l\'analyse et les notifications de Plex Media Server'; -$L['PYLOAD'] = 'pyLoad vous permet de télécharger directement sur votre serveur des liens provenant de sites comme Sendspace ou Rapidshare (une liste de ces sites peut être trouvée en cliquant <a href="https://github.com/pyload/pyload/wiki/Supported-Hoster" target="_blank">ici</a>. Vous pourrez ensuite facilement récupérer ces fichiers via votre client FTP habituel.'; -$L['QUASSEL'] = 'Quassel est un client IRC multi-plateforme moderne basé sur le framework Qt4.'; -$L['QUOTAS'] = 'Cette fonctionnalité de Linux permet à l\'administrateur du système d\'allouer un montant maximum de l\'espace disque d\'un utilisateur.'; -$L['RAPIDLEECH'] = 'Rapid Leech est un script de transfert de serveur gratuit pour une utilisation sur différents sites de Direct Download populaires tels que uploaded.net, rapidshare.com et plus de 120 autres.'; -$L['SABNZBD'] = 'SABnzbd est un projet Open Source de lecteur de newsgroup pour fichier binaire écrit en Python. Le programme fonctionne en arrière-plan et simplifie la vérification de téléchargement et l\'extraction de fichiers à partir de Usenet. SABnzbd utilise des fichiers NZB (similaires aux fichiers .torrent, mais pour Usenet), au lieu de naviguer sur Usenet.'; -$L['SICKRAGE'] = 'Gestionnaire de fichiers vidéo pour Séries TV. Il surveille les nouveaux épisodes de vos émissions préférées et quand ils sont postés, sa magie entre en jeu.'; -$L['SONARR'] = 'Sonarr est un outil de gestion de Séries TV qui travaillera avec les torrents et liens Usenet.'; -$L['SUBSONIC'] = 'Subsonic est un serveur de contenu audio et vidéo en streaming écrit en JAVA avec une interface web (via HHTP ou HTTPS) et une gestion de plusieurs utilisateurs, ainsi que l\'authentification LDAP. Il suuporte un grand nombre de fichiers (MP3, AAC, OGG, FLAC, WMA, APE...).'; -$L['SYNCTHING'] = 'Syncthing est une application open source vous permettant de synchroniser vos fichiers en continu avec BitTorrent.'; -$L['X2GO'] = 'X2Go est un logiciel de bureau à distance open source pour Linux qui utilise le protocole de technologie NX.'; -$L['ZNC'] = 'ZNC est un bouncer IRC sous licence GPL. Celui-ci sera connecté en permanence à vos salons de discussions et fera office de passerelle entre votre client et vos serveurs IRC.'; - -// package management center buttons -$L['CLI'] = 'Console Web Seulement'; -$L['INSTALL'] = 'Installer'; -$L['INSTALLED'] = 'Installé'; -$L['OVPN_TOOLTIP_I'] = 'Accedez à cette fonctionnalité depuis votre console web en tapant: quickVPN.'; -$L['OVPN_TOOLTIP_U'] = 'Accedez à cette fonctionnalité depuis votre console web en tapant: quickVPN.'; -$L['BOX'] = 'BOX requis'; -$L['BOX_TOOLTIP_CSF'] = 'Accedez à cette fonctionnalité en SSH simplement en tapant: box install csf'; -$L['BOX_TOOLTIP_NEXTCLOUD'] = 'Accedez à cette fonctionnalité en SSH simplement en tapant: box install nextcloud'; -$L['BOX_TOOLTIP_ZNC'] = 'Accedez à cette fonctionnalité en SSH simplement en tapant: box install znc'; - -//////////////////////////////////////// -//BANDWIDTH & DATA TABLES -/////////////////////////////////////// - -// column headers and dropdown toggle button -$L['NETWORK'] = 'Réseau'; -$L['UPLOAD'] = 'Upload'; -$L['DOWNLOAD'] = 'Download'; -$L['VIEW_ADDITIONAL_BANDWIDTH_DETAILS'] = 'Voir les détails additionnels'; - -// main table headers -$L['Summary'] = 'Sommaire'; -$L['Top 10 days'] = 'Les 10 meilleurs jours'; -$L['Last 24 hours'] = 'Les dernières 24 heures'; -$L['Last 30 days'] = 'Les 30 derniers jours'; -$L['Last 12 months'] = 'Les 12 derniers mois'; - -// traffic table columns -$L['In'] = 'Entrant'; -$L['Out'] = 'Sortant'; -$L['Total'] = 'Total'; - -// summary rows -$L['This hour'] = 'Cette Heure'; -$L['This day'] = 'Aujourd\' hui'; -$L['This month'] = 'Ce Mois-ci'; -$L['All time'] = 'Au Total'; - -// date formats -$L['datefmt_days'] = '%d %B'; -$L['datefmt_days_img'] = '%d'; -$L['datefmt_months'] = '%B %Y'; -$L['datefmt_months_img'] = '%b'; -$L['datefmt_hours'] = '%l%p'; -$L['datefmt_hours_img'] = '%l'; -$L['datefmt_top'] = '%d %B %Y'; - - -//////////////////////////////////////// -//DISK STATUS WIDGET -/////////////////////////////////////// - -$L['FREE'] = 'Libre'; -$L['USED'] = 'Utilisé'; -$L['SIZE'] = 'Taille'; -$L['DISK_SPACE'] = 'Espace Disque'; -$L['RTORRENTS_TITLE'] = 'Torrents dans rTorrent'; -$L['DTORRENTS_TITLE'] = 'Torrents dans Deluge'; -$L['PERCENTAGE_TXT_1'] = 'Vous avez utilisé'; -$L['PERCENTAGE_TXT_2'] = 'de votre espace disque total'; -$L['TORRENTS_LOADED_1'] = 'Il y a'; -$L['TORRENTS_LOADED_2'] = 'torrents chargés'; - - -//////////////////////////////////////// -//SYSTEM RAM STATUS WIDGET -/////////////////////////////////////// - -// physical memory -$L['PHYSICAL_MEMORY_TITLE'] = 'Utilisation de la Mémoire Physique'; -$L['PHYSICAL_MEMORY_USED_TXT'] = 'Utilisé'; -$L['PHYSICAL_MEMORY_IDLE_TXT'] = 'Libre'; - -//cached memory -$L['CACHED_MEMORY_TITLE'] = 'Utilisation de la Mémoire Cache'; -$L['CACHED_MEMORY_USAGE_TXT'] = 'Mémoire cache utilisée :'; -$L['CACHED_MEMORY_BUFFERS_TXT'] = 'Mémoire tampon est à'; - -// real memory -$L['REAL_MEMORY_TITLE'] = 'Utilisation de la Mémoire Réelle'; -$L['REAL_MEMORY_USAGE_TXT'] = 'Mémoire Réelle utilisée:'; -$L['REAL_MEMORY_FREE_TXT'] = 'Mémoire Réelle libre:'; - -// swap usage -$L['SWAP_TITLE'] = 'Utilisation Swap'; -$L['SWAP_TOTAL_TXT'] = 'Zone SWAP:'; -$L['SWAP_USED_TXT'] = 'Utilisé:'; -$L['SWAP_IDLE_TXT'] = 'Libre:'; - -// total ram -$L['TOTAL_RAM'] = 'RAM Totale du Système'; - -// clean mem button -$L['CLEAR_CACHE'] = 'Nettoyer le cache Mémoire'; - - -//////////////////////////////////////// -//CPU STATUS WIDGET -/////////////////////////////////////// - -// used percentage -$L['CPU_USED'] = 'Utilisé'; - -// idle percentage -$L['CPU_IDLE'] = 'Libre'; - -// cpu info -$L['FREQUENCY'] = 'Fréquence:'; -$L['SECONDARY'] = 'Cache Secondaire:'; - - -//////////////////////////////////////// -//SERVER LOAD WIDGET -/////////////////////////////////////// - -$L['SL_TXT'] = 'Ceci est la moyenne de charge de votre serveur'; -$L['UPTIME'] = 'Uptime'; - - -//////////////////////////////////////// -//SERVICE TOGGLES -/////////////////////////////////////// - -$L['ENABLED'] = 'Activé'; -$L['DISABLED'] = 'Désactivé'; - -$L['INSTALLED'] = 'Installé'; -$L['UNINSTALLED'] = 'Désinstallé'; -$L['INSTALLING'] = 'Installation'; -$L['UNINSTALLING'] = 'Désinstallation'; - - -//////////////////////////////////////// -//STATUS BUTTONS -/////////////////////////////////////// - -$L['REFRESH'] = 'Rafraîchir'; -$L['UPDATE'] = 'Lancer mise à jour'; - -$L['CANCEL'] = 'Annuler'; -$L['AGREE'] = 'Je comprends, fais-le!'; - -$L['CLOSE_REFRESH'] = 'Fermer & Rafraîchir'; - -//////////////////////////////////////// -//ADDITIONAL DICTIONARY -/////////////////////////////////////// - -$L['IDLE'] = 'Libre'; -$L['TOTAL'] = 'Total'; -$L['USED'] = 'Utilisé'; - -$L['DAYS_L'] = 'jours'; -$L['HOURS_L'] = 'hrs'; -$L['MINUTES_L'] = 'min'; -$L['SECONDS_L'] = 'sec'; -$L['IDLE_L'] = 'libre'; -$L['TOTAL_L'] = 'total'; -$L['USED_L'] = 'utilisé'; - - -//////////////////////////////////////// -//MODALS & POPUP NOTICES -/////////////////////////////////////// - -//MODAL TITLES -$L['UNINSTALL_TITLE'] = 'Désinstaller'; - -//MODAL TEXT -$L['UNINSTALL_BTSYNC_TXT'] = 'Vous êtes sur le point de désinstaller BitTorrent Sync de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés ... cette action est irréversible. <br/><br/>Vous pouvez réinstaller BitTorrent Sync à tout moment, cependant, vos chemin de stockage et les paramètres des dossiers liés seront réinitialisés.'; -$L['UNINSTALL_CSF_TXT'] = 'Vous êtes sur le point de désinstaller Config Server Firewall (CSF) de votre système.<br/><br/>Cela va complètement supprimer tous ses paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Config Server Firewall (CSF) à tout moment, cependant, vos paramètres de configuration (si des modifications ont été apportées) seront réinitialisés.'; -$L['UNINSTALL_COUCHPOTATO_TXT'] = 'Vous êtes sur le point de désinstaller CouchPotato de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller CouchPotato à tout moment, cependant, vos paramètres seront réinitialisés.'; -$L['UNINSTALL_DELUGE_TXT'] = 'Vous êtes sur le point de désinstaller Deluge de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour <strong>tous les utilisateurs</strong>... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Deluge à tout moment, cependant, vos chemin de stockage et les paramètres des dossiers liés seront réinitialisés.'; -$L['UNINSTALL_EMBY_TXT'] = 'Vous êtes sur le point de désinstaller Emby de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés ... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Emby à tout moment, cependant, vos chemin de stockage et les paramètres des dossiers liés seront réinitialisés.'; -$L['UNINSTALL_JACKETT_TXT'] = 'Vous êtes sur le point de désinstaller Jackett de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Jackett à tout moment, cependant, vos paramètres seront réinitialisés.'; -$L['UNINSTALL_NEXTCLOUD_TXT'] = 'Vous êtes sur le point de désinstaller NextCloud de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller NextCloud à tout moment, cependant, vos paramètres seront réinitialisés.'; -$L['UNINSTALL_NZBHYDRA_TXT'] = 'Vous êtes sur le point de désinstaller NZBHydra de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller NZBHydra à tout moment, cependant, vos paramètres seront réinitialisés.'; -$L['UNINSTALL_PLEX_TXT'] = 'Vous êtes sur le point de désinstaller Plex Media Server de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Plex à tout moment, cependant, vos paramètres et librairies seront réinitialisés.'; -$L['UNINSTALL_PLEXPY_TXT'] = 'Vous êtes sur le point de désinstaller PlexPy de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible. <br/><br/>Vous pouvez réinstaller PlexPy à tout moment, cependant, vos paramètres seront réinitialisés.'; -$L['UNINSTALL_PLEXREQUESTS_TXT'] = 'Vous êtes sur le point de désinstaller Ombi de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Ombi à tout moment, cependant, vos paramètres de librairies et vos requêtes en cours seront réinitialisés.'; -$L['UNINSTALL_PYLOAD_TXT'] = 'Vous êtes sur le point de désinstaller pyLoad de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller pyLoad à tout moment, cependant, vos paramètres seront réinitialisés.'; -$L['UNINSTALL_QUASSEL_TXT'] = 'Vous êtes sur le point de désinstaller Quassel de votre système.<br/><br/>Cela va complètement supprimer Quassel et tous ses paramètres / logs de votre système.'; -$L['UNINSTALL_QUOTAS_TXT'] = 'Vous êtes sur le point de désinstaller Quotas de votre système.<br/><br/>Cela va complètement supprimer les Quotas de vos utilisateurs et tout paramètres associés avec eux.'; -$L['UNINSTALL_RAPIDLEECH_TXT'] = 'Vous êtes sur le point de désinstaller Rapidleech de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Rapidleech à tout moment, cependant, vos paramètres de configuration seront réinitialisés.'; -$L['UNINSTALL_SABNZBD_TXT'] = 'Vous êtes sur le point de désinstaller SABnzbd de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller SABnzbd à tout moment, cependant, vos paramètres seront réinitialisés.'; -$L['UNINSTALL_SICKRAGE_TXT'] = 'Vous êtes sur le point de désinstaller SickRage de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller SickRage à tout moment, cependant, vos paramètres de configuration seront réinitialisés.'; -$L['UNINSTALL_SONARR_TXT'] = 'Vous êtes sur le point de désinstaller Sonarr de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Sonarr-NzbDrone à tout moment, cependant, vos paramètres de configuration seront réinitialisés.'; -$L['UNINSTALL_SUBSONIC_TXT'] = 'Vous êtes sur le point de désinstaller Subsonic de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Subsonic à tout moment, cependant, vos paramètres seront réinitialisés.'; -$L['UNINSTALL_SYNCTHING_TXT'] = 'Vous êtes sur le point de désinstaller Syncthing de votre système.<br/><br/>Cela va complètement supprimer tous ses paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller Syncthing à tout moment, cependant, vos paramètres de configuration seront réinitialisés.'; -$L['UNINSTALL_X2GO_TXT'] = 'Vous êtes sur le point de désinstaller x2go de votre système.<br/><br/>Cela va complètement supprimer x2goserver et l\'environnement de bureau xfce4 de votre système.'; -$L['UNINSTALL_ZNC_TXT'] = 'Vous êtes sur le point de désinstaller ZNC de votre système.<br/><br/>Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible. <br/><br/>Vous pouvez réinstaller ZNC à tout moment, cependant, vos paramètres seront réinitialisés.'; - -//SYSTEM RESPONSE MODAL -$L['SYSTEM_RESPONSE_TITLE'] = 'Réponse Système'; - -//GRITTER POPUPS -$L['UNINSTALLING_TITLE'] = 'Désinstallation'; - -//GRITTER TEXT -$L['UNINSTALLING_TXT_1'] = 'Patientez pendant que'; -$L['UNINSTALLING_TXT_2'] = 'soit désinstallé de votre système.'; - - -//////////////////////////////////////////////////////////////////////////// -// SAMPLE -// $L['SAMPLE'] = 'Sample'; -//////////////////////////////////////////////////////////////////////////// - - -?> diff --git a/dashboard/lang/locale_country-array b/dashboard/lang/locale_country-array deleted file mode 100644 index 41f12856..00000000 --- a/dashboard/lang/locale_country-array +++ /dev/null @@ -1,440 +0,0 @@ -<?php - -var LANGUAGE_BY_LOCALE = { - af_NA: "Afrikaans (Namibia)", - af_ZA: "Afrikaans (South Africa)", - af: "Afrikaans", - ak_GH: "Akan (Ghana)", - ak: "Akan", - sq_AL: "Albanian (Albania)", - sq: "Albanian", - am_ET: "Amharic (Ethiopia)", - am: "Amharic", - ar_DZ: "Arabic (Algeria)", - ar_BH: "Arabic (Bahrain)", - ar_EG: "Arabic (Egypt)", - ar_IQ: "Arabic (Iraq)", - ar_JO: "Arabic (Jordan)", - ar_KW: "Arabic (Kuwait)", - ar_LB: "Arabic (Lebanon)", - ar_LY: "Arabic (Libya)", - ar_MA: "Arabic (Morocco)", - ar_OM: "Arabic (Oman)", - ar_QA: "Arabic (Qatar)", - ar_SA: "Arabic (Saudi Arabia)", - ar_SD: "Arabic (Sudan)", - ar_SY: "Arabic (Syria)", - ar_TN: "Arabic (Tunisia)", - ar_AE: "Arabic (United Arab Emirates)", - ar_YE: "Arabic (Yemen)", - ar: "Arabic", - hy_AM: "Armenian (Armenia)", - hy: "Armenian", - as_IN: "Assamese (India)", - as: "Assamese", - asa_TZ: "Asu (Tanzania)", - asa: "Asu", - az_Cyrl: "Azerbaijani (Cyrillic)", - az_Cyrl_AZ: "Azerbaijani (Cyrillic, Azerbaijan)", - az_Latn: "Azerbaijani (Latin)", - az_Latn_AZ: "Azerbaijani (Latin, Azerbaijan)", - az: "Azerbaijani", - bm_ML: "Bambara (Mali)", - bm: "Bambara", - eu_ES: "Basque (Spain)", - eu: "Basque", - be_BY: "Belarusian (Belarus)", - be: "Belarusian", - bem_ZM: "Bemba (Zambia)", - bem: "Bemba", - bez_TZ: "Bena (Tanzania)", - bez: "Bena", - bn_BD: "Bengali (Bangladesh)", - bn_IN: "Bengali (India)", - bn: "Bengali", - bs_BA: "Bosnian (Bosnia and Herzegovina)", - bs: "Bosnian", - bg_BG: "Bulgarian (Bulgaria)", - bg: "Bulgarian", - my_MM: "Burmese (Myanmar [Burma])", - my: "Burmese", - ca_ES: "Catalan (Spain)", - ca: "Catalan", - tzm_Latn: "Central Morocco Tamazight (Latin)", - tzm_Latn_MA: "Central Morocco Tamazight (Latin, Morocco)", - tzm: "Central Morocco Tamazight", - chr_US: "Cherokee (United States)", - chr: "Cherokee", - cgg_UG: "Chiga (Uganda)", - cgg: "Chiga", - zh_Hans: "Chinese (Simplified Han)", - zh_Hans_CN: "Chinese (Simplified Han, China)", - zh_Hans_HK: "Chinese (Simplified Han, Hong Kong SAR China)", - zh_Hans_MO: "Chinese (Simplified Han, Macau SAR China)", - zh_Hans_SG: "Chinese (Simplified Han, Singapore)", - zh_Hant: "Chinese (Traditional Han)", - zh_Hant_HK: "Chinese (Traditional Han, Hong Kong SAR China)", - zh_Hant_MO: "Chinese (Traditional Han, Macau SAR China)", - zh_Hant_TW: "Chinese (Traditional Han, Taiwan)", - zh: "Chinese", - kw_GB: "Cornish (United Kingdom)", - kw: "Cornish", - hr_HR: "Croatian (Croatia)", - hr: "Croatian", - cs_CZ: "Czech (Czech Republic)", - cs: "Czech", - da_DK: "Danish (Denmark)", - da: "Danish", - nl_BE: "Dutch (Belgium)", - nl_NL: "Dutch (Netherlands)", - nl: "Dutch", - ebu_KE: "Embu (Kenya)", - ebu: "Embu", - en_AS: "English (American Samoa)", - en_AU: "English (Australia)", - en_BE: "English (Belgium)", - en_BZ: "English (Belize)", - en_BW: "English (Botswana)", - en_CA: "English (Canada)", - en_GU: "English (Guam)", - en_HK: "English (Hong Kong SAR China)", - en_IN: "English (India)", - en_IE: "English (Ireland)", - en_JM: "English (Jamaica)", - en_MT: "English (Malta)", - en_MH: "English (Marshall Islands)", - en_MU: "English (Mauritius)", - en_NA: "English (Namibia)", - en_NZ: "English (New Zealand)", - en_MP: "English (Northern Mariana Islands)", - en_PK: "English (Pakistan)", - en_PH: "English (Philippines)", - en_SG: "English (Singapore)", - en_ZA: "English (South Africa)", - en_TT: "English (Trinidad and Tobago)", - en_UM: "English (U.S. Minor Outlying Islands)", - en_VI: "English (U.S. Virgin Islands)", - en_GB: "English (United Kingdom)", - en_US: "English (United States)", - en_ZW: "English (Zimbabwe)", - en: "English", - eo: "Esperanto", - et_EE: "Estonian (Estonia)", - et: "Estonian", - ee_GH: "Ewe (Ghana)", - ee_TG: "Ewe (Togo)", - ee: "Ewe", - fo_FO: "Faroese (Faroe Islands)", - fo: "Faroese", - fil_PH: "Filipino (Philippines)", - fil: "Filipino", - fi_FI: "Finnish (Finland)", - fi: "Finnish", - fr_BE: "French (Belgium)", - fr_BJ: "French (Benin)", - fr_BF: "French (Burkina Faso)", - fr_BI: "French (Burundi)", - fr_CM: "French (Cameroon)", - fr_CA: "French (Canada)", - fr_CF: "French (Central African Republic)", - fr_TD: "French (Chad)", - fr_KM: "French (Comoros)", - fr_CG: "French (Congo - Brazzaville)", - fr_CD: "French (Congo - Kinshasa)", - fr_CI: "French (Côte d’Ivoire)", - fr_DJ: "French (Djibouti)", - fr_GQ: "French (Equatorial Guinea)", - fr_FR: "French (France)", - fr_GA: "French (Gabon)", - fr_GP: "French (Guadeloupe)", - fr_GN: "French (Guinea)", - fr_LU: "French (Luxembourg)", - fr_MG: "French (Madagascar)", - fr_ML: "French (Mali)", - fr_MQ: "French (Martinique)", - fr_MC: "French (Monaco)", - fr_NE: "French (Niger)", - fr_RW: "French (Rwanda)", - fr_RE: "French (Réunion)", - fr_BL: "French (Saint Barthélemy)", - fr_MF: "French (Saint Martin)", - fr_SN: "French (Senegal)", - fr_CH: "French (Switzerland)", - fr_TG: "French (Togo)", - fr: "French", - ff_SN: "Fulah (Senegal)", - ff: "Fulah", - gl_ES: "Galician (Spain)", - gl: "Galician", - lg_UG: "Ganda (Uganda)", - lg: "Ganda", - ka_GE: "Georgian (Georgia)", - ka: "Georgian", - de_AT: "German (Austria)", - de_BE: "German (Belgium)", - de_DE: "German (Germany)", - de_LI: "German (Liechtenstein)", - de_LU: "German (Luxembourg)", - de_CH: "German (Switzerland)", - de: "German", - el_CY: "Greek (Cyprus)", - el_GR: "Greek (Greece)", - el: "Greek", - gu_IN: "Gujarati (India)", - gu: "Gujarati", - guz_KE: "Gusii (Kenya)", - guz: "Gusii", - ha_Latn: "Hausa (Latin)", - ha_Latn_GH: "Hausa (Latin, Ghana)", - ha_Latn_NE: "Hausa (Latin, Niger)", - ha_Latn_NG: "Hausa (Latin, Nigeria)", - ha: "Hausa", - haw_US: "Hawaiian (United States)", - haw: "Hawaiian", - he_IL: "Hebrew (Israel)", - he: "Hebrew", - hi_IN: "Hindi (India)", - hi: "Hindi", - hu_HU: "Hungarian (Hungary)", - hu: "Hungarian", - is_IS: "Icelandic (Iceland)", - is: "Icelandic", - ig_NG: "Igbo (Nigeria)", - ig: "Igbo", - id_ID: "Indonesian (Indonesia)", - id: "Indonesian", - ga_IE: "Irish (Ireland)", - ga: "Irish", - it_IT: "Italian (Italy)", - it_CH: "Italian (Switzerland)", - it: "Italian", - ja_JP: "Japanese (Japan)", - ja: "Japanese", - kea_CV: "Kabuverdianu (Cape Verde)", - kea: "Kabuverdianu", - kab_DZ: "Kabyle (Algeria)", - kab: "Kabyle", - kl_GL: "Kalaallisut (Greenland)", - kl: "Kalaallisut", - kln_KE: "Kalenjin (Kenya)", - kln: "Kalenjin", - kam_KE: "Kamba (Kenya)", - kam: "Kamba", - kn_IN: "Kannada (India)", - kn: "Kannada", - kk_Cyrl: "Kazakh (Cyrillic)", - kk_Cyrl_KZ: "Kazakh (Cyrillic, Kazakhstan)", - kk: "Kazakh", - km_KH: "Khmer (Cambodia)", - km: "Khmer", - ki_KE: "Kikuyu (Kenya)", - ki: "Kikuyu", - rw_RW: "Kinyarwanda (Rwanda)", - rw: "Kinyarwanda", - kok_IN: "Konkani (India)", - kok: "Konkani", - ko_KR: "Korean (South Korea)", - ko: "Korean", - khq_ML: "Koyra Chiini (Mali)", - khq: "Koyra Chiini", - ses_ML: "Koyraboro Senni (Mali)", - ses: "Koyraboro Senni", - lag_TZ: "Langi (Tanzania)", - lag: "Langi", - lv_LV: "Latvian (Latvia)", - lv: "Latvian", - lt_LT: "Lithuanian (Lithuania)", - lt: "Lithuanian", - luo_KE: "Luo (Kenya)", - luo: "Luo", - luy_KE: "Luyia (Kenya)", - luy: "Luyia", - mk_MK: "Macedonian (Macedonia)", - mk: "Macedonian", - jmc_TZ: "Machame (Tanzania)", - jmc: "Machame", - kde_TZ: "Makonde (Tanzania)", - kde: "Makonde", - mg_MG: "Malagasy (Madagascar)", - mg: "Malagasy", - ms_BN: "Malay (Brunei)", - ms_MY: "Malay (Malaysia)", - ms: "Malay", - ml_IN: "Malayalam (India)", - ml: "Malayalam", - mt_MT: "Maltese (Malta)", - mt: "Maltese", - gv_GB: "Manx (United Kingdom)", - gv: "Manx", - mr_IN: "Marathi (India)", - mr: "Marathi", - mas_KE: "Masai (Kenya)", - mas_TZ: "Masai (Tanzania)", - mas: "Masai", - mer_KE: "Meru (Kenya)", - mer: "Meru", - mfe_MU: "Morisyen (Mauritius)", - mfe: "Morisyen", - naq_NA: "Nama (Namibia)", - naq: "Nama", - ne_IN: "Nepali (India)", - ne_NP: "Nepali (Nepal)", - ne: "Nepali", - nd_ZW: "North Ndebele (Zimbabwe)", - nd: "North Ndebele", - nb_NO: "Norwegian Bokmål (Norway)", - nb: "Norwegian Bokmål", - nn_NO: "Norwegian Nynorsk (Norway)", - nn: "Norwegian Nynorsk", - nyn_UG: "Nyankole (Uganda)", - nyn: "Nyankole", - or_IN: "Oriya (India)", - or: "Oriya", - om_ET: "Oromo (Ethiopia)", - om_KE: "Oromo (Kenya)", - om: "Oromo", - ps_AF: "Pashto (Afghanistan)", - ps: "Pashto", - fa_AF: "Persian (Afghanistan)", - fa_IR: "Persian (Iran)", - fa: "Persian", - pl_PL: "Polish (Poland)", - pl: "Polish", - pt_BR: "Portuguese (Brazil)", - pt_GW: "Portuguese (Guinea-Bissau)", - pt_MZ: "Portuguese (Mozambique)", - pt_PT: "Portuguese (Portugal)", - pt: "Portuguese", - pa_Arab: "Punjabi (Arabic)", - pa_Arab_PK: "Punjabi (Arabic, Pakistan)", - pa_Guru: "Punjabi (Gurmukhi)", - pa_Guru_IN: "Punjabi (Gurmukhi, India)", - pa: "Punjabi", - ro_MD: "Romanian (Moldova)", - ro_RO: "Romanian (Romania)", - ro: "Romanian", - rm_CH: "Romansh (Switzerland)", - rm: "Romansh", - rof_TZ: "Rombo (Tanzania)", - rof: "Rombo", - ru_MD: "Russian (Moldova)", - ru_RU: "Russian (Russia)", - ru_UA: "Russian (Ukraine)", - ru: "Russian", - rwk_TZ: "Rwa (Tanzania)", - rwk: "Rwa", - saq_KE: "Samburu (Kenya)", - saq: "Samburu", - sg_CF: "Sango (Central African Republic)", - sg: "Sango", - seh_MZ: "Sena (Mozambique)", - seh: "Sena", - sr_Cyrl: "Serbian (Cyrillic)", - sr_Cyrl_BA: "Serbian (Cyrillic, Bosnia and Herzegovina)", - sr_Cyrl_ME: "Serbian (Cyrillic, Montenegro)", - sr_Cyrl_RS: "Serbian (Cyrillic, Serbia)", - sr_Latn: "Serbian (Latin)", - sr_Latn_BA: "Serbian (Latin, Bosnia and Herzegovina)", - sr_Latn_ME: "Serbian (Latin, Montenegro)", - sr_Latn_RS: "Serbian (Latin, Serbia)", - sr: "Serbian", - sn_ZW: "Shona (Zimbabwe)", - sn: "Shona", - ii_CN: "Sichuan Yi (China)", - ii: "Sichuan Yi", - si_LK: "Sinhala (Sri Lanka)", - si: "Sinhala", - sk_SK: "Slovak (Slovakia)", - sk: "Slovak", - sl_SI: "Slovenian (Slovenia)", - sl: "Slovenian", - xog_UG: "Soga (Uganda)", - xog: "Soga", - so_DJ: "Somali (Djibouti)", - so_ET: "Somali (Ethiopia)", - so_KE: "Somali (Kenya)", - so_SO: "Somali (Somalia)", - so: "Somali", - es_AR: "Spanish (Argentina)", - es_BO: "Spanish (Bolivia)", - es_CL: "Spanish (Chile)", - es_CO: "Spanish (Colombia)", - es_CR: "Spanish (Costa Rica)", - es_DO: "Spanish (Dominican Republic)", - es_EC: "Spanish (Ecuador)", - es_SV: "Spanish (El Salvador)", - es_GQ: "Spanish (Equatorial Guinea)", - es_GT: "Spanish (Guatemala)", - es_HN: "Spanish (Honduras)", - es_419: "Spanish (Latin America)", - es_MX: "Spanish (Mexico)", - es_NI: "Spanish (Nicaragua)", - es_PA: "Spanish (Panama)", - es_PY: "Spanish (Paraguay)", - es_PE: "Spanish (Peru)", - es_PR: "Spanish (Puerto Rico)", - es_ES: "Spanish (Spain)", - es_US: "Spanish (United States)", - es_UY: "Spanish (Uruguay)", - es_VE: "Spanish (Venezuela)", - es: "Spanish", - sw_KE: "Swahili (Kenya)", - sw_TZ: "Swahili (Tanzania)", - sw: "Swahili", - sv_FI: "Swedish (Finland)", - sv_SE: "Swedish (Sweden)", - sv: "Swedish", - gsw_CH: "Swiss German (Switzerland)", - gsw: "Swiss German", - shi_Latn: "Tachelhit (Latin)", - shi_Latn_MA: "Tachelhit (Latin, Morocco)", - shi_Tfng: "Tachelhit (Tifinagh)", - shi_Tfng_MA: "Tachelhit (Tifinagh, Morocco)", - shi: "Tachelhit", - dav_KE: "Taita (Kenya)", - dav: "Taita", - ta_IN: "Tamil (India)", - ta_LK: "Tamil (Sri Lanka)", - ta: "Tamil", - te_IN: "Telugu (India)", - te: "Telugu", - teo_KE: "Teso (Kenya)", - teo_UG: "Teso (Uganda)", - teo: "Teso", - th_TH: "Thai (Thailand)", - th: "Thai", - bo_CN: "Tibetan (China)", - bo_IN: "Tibetan (India)", - bo: "Tibetan", - ti_ER: "Tigrinya (Eritrea)", - ti_ET: "Tigrinya (Ethiopia)", - ti: "Tigrinya", - to_TO: "Tonga (Tonga)", - to: "Tonga", - tr_TR: "Turkish (Turkey)", - tr: "Turkish", - uk_UA: "Ukrainian (Ukraine)", - uk: "Ukrainian", - ur_IN: "Urdu (India)", - ur_PK: "Urdu (Pakistan)", - ur: "Urdu", - uz_Arab: "Uzbek (Arabic)", - uz_Arab_AF: "Uzbek (Arabic, Afghanistan)", - uz_Cyrl: "Uzbek (Cyrillic)", - uz_Cyrl_UZ: "Uzbek (Cyrillic, Uzbekistan)", - uz_Latn: "Uzbek (Latin)", - uz_Latn_UZ: "Uzbek (Latin, Uzbekistan)", - uz: "Uzbek", - vi_VN: "Vietnamese (Vietnam)", - vi: "Vietnamese", - vun_TZ: "Vunjo (Tanzania)", - vun: "Vunjo", - cy_GB: "Welsh (United Kingdom)", - cy: "Welsh", - yo_NG: "Yoruba (Nigeria)", - yo: "Yoruba", - zu_ZA: "Zulu (South Africa)", - zu: "Zulu" -} - -?> diff --git a/dashboard/lib/Hover/hover.css b/dashboard/lib/Hover/hover.css deleted file mode 100644 index 8d0a16d7..00000000 --- a/dashboard/lib/Hover/hover.css +++ /dev/null @@ -1,4879 +0,0 @@ -/*! - * Hover.css (http://ianlunn.github.io/Hover/) - * Version: 2.0.2 - * Author: Ian Lunn @IanLunn - * Author URL: http://ianlunn.co.uk/ - * Github: https://github.com/IanLunn/Hover - - * Made available under a MIT License: - * http://www.opensource.org/licenses/mit-license.php - - * Hover.css Copyright Ian Lunn 2014. Generated with Sass. - */ -/* 2D TRANSITIONS */ -/* Grow */ -.hvr-grow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-grow:hover, .hvr-grow:focus, .hvr-grow:active { - -webkit-transform: scale(1.1); - transform: scale(1.1); -} - -/* Shrink */ -.hvr-shrink { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-shrink:hover, .hvr-shrink:focus, .hvr-shrink:active { - -webkit-transform: scale(0.9); - transform: scale(0.9); -} - -/* Pulse */ -@-webkit-keyframes hvr-pulse { - 25% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - - 75% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } -} - -@keyframes hvr-pulse { - 25% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - - 75% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } -} - -.hvr-pulse { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-pulse:hover, .hvr-pulse:focus, .hvr-pulse:active { - -webkit-animation-name: hvr-pulse; - animation-name: hvr-pulse; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -/* Pulse Grow */ -@-webkit-keyframes hvr-pulse-grow { - to { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } -} - -@keyframes hvr-pulse-grow { - to { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } -} - -.hvr-pulse-grow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-pulse-grow:hover, .hvr-pulse-grow:focus, .hvr-pulse-grow:active { - -webkit-animation-name: hvr-pulse-grow; - animation-name: hvr-pulse-grow; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - -webkit-animation-direction: alternate; - animation-direction: alternate; -} - -/* Pulse Shrink */ -@-webkit-keyframes hvr-pulse-shrink { - to { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } -} - -@keyframes hvr-pulse-shrink { - to { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } -} - -.hvr-pulse-shrink { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-pulse-shrink:hover, .hvr-pulse-shrink:focus, .hvr-pulse-shrink:active { - -webkit-animation-name: hvr-pulse-shrink; - animation-name: hvr-pulse-shrink; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - -webkit-animation-direction: alternate; - animation-direction: alternate; -} - -/* Push */ -@-webkit-keyframes hvr-push { - 50% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes hvr-push { - 50% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -.hvr-push { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-push:hover, .hvr-push:focus, .hvr-push:active { - -webkit-animation-name: hvr-push; - animation-name: hvr-push; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Pop */ -@-webkit-keyframes hvr-pop { - 50% { - -webkit-transform: scale(1.2); - transform: scale(1.2); - } -} - -@keyframes hvr-pop { - 50% { - -webkit-transform: scale(1.2); - transform: scale(1.2); - } -} - -.hvr-pop { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-pop:hover, .hvr-pop:focus, .hvr-pop:active { - -webkit-animation-name: hvr-pop; - animation-name: hvr-pop; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Bounce In */ -.hvr-bounce-in { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; -} -.hvr-bounce-in:hover, .hvr-bounce-in:focus, .hvr-bounce-in:active { - -webkit-transform: scale(1.2); - transform: scale(1.2); - -webkit-transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36); - transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36); -} - -/* Bounce Out */ -.hvr-bounce-out { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; -} -.hvr-bounce-out:hover, .hvr-bounce-out:focus, .hvr-bounce-out:active { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36); - transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36); -} - -/* Rotate */ -.hvr-rotate { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-rotate:hover, .hvr-rotate:focus, .hvr-rotate:active { - -webkit-transform: rotate(4deg); - transform: rotate(4deg); -} - -/* Grow Rotate */ -.hvr-grow-rotate { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-grow-rotate:hover, .hvr-grow-rotate:focus, .hvr-grow-rotate:active { - -webkit-transform: scale(1.1) rotate(4deg); - transform: scale(1.1) rotate(4deg); -} - -/* Float */ -.hvr-float { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-float:hover, .hvr-float:focus, .hvr-float:active { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); -} - -/* Sink */ -.hvr-sink { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-sink:hover, .hvr-sink:focus, .hvr-sink:active { - -webkit-transform: translateY(8px); - transform: translateY(8px); -} - -/* Bob */ -@-webkit-keyframes hvr-bob { - 0% { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); - } - - 50% { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); - } - - 100% { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); - } -} - -@keyframes hvr-bob { - 0% { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); - } - - 50% { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); - } - - 100% { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); - } -} - -@-webkit-keyframes hvr-bob-float { - 100% { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); - } -} - -@keyframes hvr-bob-float { - 100% { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); - } -} - -.hvr-bob { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-bob:hover, .hvr-bob:focus, .hvr-bob:active { - -webkit-animation-name: hvr-bob-float, hvr-bob; - animation-name: hvr-bob-float, hvr-bob; - -webkit-animation-duration: .3s, 1.5s; - animation-duration: .3s, 1.5s; - -webkit-animation-delay: 0s, .3s; - animation-delay: 0s, .3s; - -webkit-animation-timing-function: ease-out, ease-in-out; - animation-timing-function: ease-out, ease-in-out; - -webkit-animation-iteration-count: 1, infinite; - animation-iteration-count: 1, infinite; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-direction: normal, alternate; - animation-direction: normal, alternate; -} - -/* Hang */ -@-webkit-keyframes hvr-hang { - 0% { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } - - 50% { - -webkit-transform: translateY(4px); - transform: translateY(4px); - } - - 100% { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } -} - -@keyframes hvr-hang { - 0% { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } - - 50% { - -webkit-transform: translateY(4px); - transform: translateY(4px); - } - - 100% { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } -} - -@-webkit-keyframes hvr-hang-sink { - 100% { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } -} - -@keyframes hvr-hang-sink { - 100% { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } -} - -.hvr-hang { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-hang:hover, .hvr-hang:focus, .hvr-hang:active { - -webkit-animation-name: hvr-hang-sink, hvr-hang; - animation-name: hvr-hang-sink, hvr-hang; - -webkit-animation-duration: .3s, 1.5s; - animation-duration: .3s, 1.5s; - -webkit-animation-delay: 0s, .3s; - animation-delay: 0s, .3s; - -webkit-animation-timing-function: ease-out, ease-in-out; - animation-timing-function: ease-out, ease-in-out; - -webkit-animation-iteration-count: 1, infinite; - animation-iteration-count: 1, infinite; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-direction: normal, alternate; - animation-direction: normal, alternate; -} - -/* Skew */ -.hvr-skew { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-skew:hover, .hvr-skew:focus, .hvr-skew:active { - -webkit-transform: skew(-10deg); - transform: skew(-10deg); -} - -/* Skew Forward */ -.hvr-skew-forward { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transform-origin: 0 100%; - transform-origin: 0 100%; -} -.hvr-skew-forward:hover, .hvr-skew-forward:focus, .hvr-skew-forward:active { - -webkit-transform: skew(-10deg); - transform: skew(-10deg); -} - -/* Skew Backward */ -.hvr-skew-backward { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transform-origin: 0 100%; - transform-origin: 0 100%; -} -.hvr-skew-backward:hover, .hvr-skew-backward:focus, .hvr-skew-backward:active { - -webkit-transform: skew(10deg); - transform: skew(10deg); -} - -/* Wobble Vertical */ -@-webkit-keyframes hvr-wobble-vertical { - 16.65% { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } - - 33.3% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } - - 49.95% { - -webkit-transform: translateY(4px); - transform: translateY(4px); - } - - 66.6% { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - - 83.25% { - -webkit-transform: translateY(1px); - transform: translateY(1px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes hvr-wobble-vertical { - 16.65% { - -webkit-transform: translateY(8px); - transform: translateY(8px); - } - - 33.3% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } - - 49.95% { - -webkit-transform: translateY(4px); - transform: translateY(4px); - } - - 66.6% { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - - 83.25% { - -webkit-transform: translateY(1px); - transform: translateY(1px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -.hvr-wobble-vertical { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-wobble-vertical:hover, .hvr-wobble-vertical:focus, .hvr-wobble-vertical:active { - -webkit-animation-name: hvr-wobble-vertical; - animation-name: hvr-wobble-vertical; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Wobble Horizontal */ -@-webkit-keyframes hvr-wobble-horizontal { - 16.65% { - -webkit-transform: translateX(8px); - transform: translateX(8px); - } - - 33.3% { - -webkit-transform: translateX(-6px); - transform: translateX(-6px); - } - - 49.95% { - -webkit-transform: translateX(4px); - transform: translateX(4px); - } - - 66.6% { - -webkit-transform: translateX(-2px); - transform: translateX(-2px); - } - - 83.25% { - -webkit-transform: translateX(1px); - transform: translateX(1px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes hvr-wobble-horizontal { - 16.65% { - -webkit-transform: translateX(8px); - transform: translateX(8px); - } - - 33.3% { - -webkit-transform: translateX(-6px); - transform: translateX(-6px); - } - - 49.95% { - -webkit-transform: translateX(4px); - transform: translateX(4px); - } - - 66.6% { - -webkit-transform: translateX(-2px); - transform: translateX(-2px); - } - - 83.25% { - -webkit-transform: translateX(1px); - transform: translateX(1px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -.hvr-wobble-horizontal { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-wobble-horizontal:hover, .hvr-wobble-horizontal:focus, .hvr-wobble-horizontal:active { - -webkit-animation-name: hvr-wobble-horizontal; - animation-name: hvr-wobble-horizontal; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Wobble To Bottom Right */ -@-webkit-keyframes hvr-wobble-to-bottom-right { - 16.65% { - -webkit-transform: translate(8px, 8px); - transform: translate(8px, 8px); - } - - 33.3% { - -webkit-transform: translate(-6px, -6px); - transform: translate(-6px, -6px); - } - - 49.95% { - -webkit-transform: translate(4px, 4px); - transform: translate(4px, 4px); - } - - 66.6% { - -webkit-transform: translate(-2px, -2px); - transform: translate(-2px, -2px); - } - - 83.25% { - -webkit-transform: translate(1px, 1px); - transform: translate(1px, 1px); - } - - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} - -@keyframes hvr-wobble-to-bottom-right { - 16.65% { - -webkit-transform: translate(8px, 8px); - transform: translate(8px, 8px); - } - - 33.3% { - -webkit-transform: translate(-6px, -6px); - transform: translate(-6px, -6px); - } - - 49.95% { - -webkit-transform: translate(4px, 4px); - transform: translate(4px, 4px); - } - - 66.6% { - -webkit-transform: translate(-2px, -2px); - transform: translate(-2px, -2px); - } - - 83.25% { - -webkit-transform: translate(1px, 1px); - transform: translate(1px, 1px); - } - - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} - -.hvr-wobble-to-bottom-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-wobble-to-bottom-right:hover, .hvr-wobble-to-bottom-right:focus, .hvr-wobble-to-bottom-right:active { - -webkit-animation-name: hvr-wobble-to-bottom-right; - animation-name: hvr-wobble-to-bottom-right; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Wobble To Top Right */ -@-webkit-keyframes hvr-wobble-to-top-right { - 16.65% { - -webkit-transform: translate(8px, -8px); - transform: translate(8px, -8px); - } - - 33.3% { - -webkit-transform: translate(-6px, 6px); - transform: translate(-6px, 6px); - } - - 49.95% { - -webkit-transform: translate(4px, -4px); - transform: translate(4px, -4px); - } - - 66.6% { - -webkit-transform: translate(-2px, 2px); - transform: translate(-2px, 2px); - } - - 83.25% { - -webkit-transform: translate(1px, -1px); - transform: translate(1px, -1px); - } - - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} - -@keyframes hvr-wobble-to-top-right { - 16.65% { - -webkit-transform: translate(8px, -8px); - transform: translate(8px, -8px); - } - - 33.3% { - -webkit-transform: translate(-6px, 6px); - transform: translate(-6px, 6px); - } - - 49.95% { - -webkit-transform: translate(4px, -4px); - transform: translate(4px, -4px); - } - - 66.6% { - -webkit-transform: translate(-2px, 2px); - transform: translate(-2px, 2px); - } - - 83.25% { - -webkit-transform: translate(1px, -1px); - transform: translate(1px, -1px); - } - - 100% { - -webkit-transform: translate(0, 0); - transform: translate(0, 0); - } -} - -.hvr-wobble-to-top-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-wobble-to-top-right:hover, .hvr-wobble-to-top-right:focus, .hvr-wobble-to-top-right:active { - -webkit-animation-name: hvr-wobble-to-top-right; - animation-name: hvr-wobble-to-top-right; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Wobble Top */ -@-webkit-keyframes hvr-wobble-top { - 16.65% { - -webkit-transform: skew(-12deg); - transform: skew(-12deg); - } - - 33.3% { - -webkit-transform: skew(10deg); - transform: skew(10deg); - } - - 49.95% { - -webkit-transform: skew(-6deg); - transform: skew(-6deg); - } - - 66.6% { - -webkit-transform: skew(4deg); - transform: skew(4deg); - } - - 83.25% { - -webkit-transform: skew(-2deg); - transform: skew(-2deg); - } - - 100% { - -webkit-transform: skew(0); - transform: skew(0); - } -} - -@keyframes hvr-wobble-top { - 16.65% { - -webkit-transform: skew(-12deg); - transform: skew(-12deg); - } - - 33.3% { - -webkit-transform: skew(10deg); - transform: skew(10deg); - } - - 49.95% { - -webkit-transform: skew(-6deg); - transform: skew(-6deg); - } - - 66.6% { - -webkit-transform: skew(4deg); - transform: skew(4deg); - } - - 83.25% { - -webkit-transform: skew(-2deg); - transform: skew(-2deg); - } - - 100% { - -webkit-transform: skew(0); - transform: skew(0); - } -} - -.hvr-wobble-top { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transform-origin: 0 100%; - transform-origin: 0 100%; -} -.hvr-wobble-top:hover, .hvr-wobble-top:focus, .hvr-wobble-top:active { - -webkit-animation-name: hvr-wobble-top; - animation-name: hvr-wobble-top; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Wobble Bottom */ -@-webkit-keyframes hvr-wobble-bottom { - 16.65% { - -webkit-transform: skew(-12deg); - transform: skew(-12deg); - } - - 33.3% { - -webkit-transform: skew(10deg); - transform: skew(10deg); - } - - 49.95% { - -webkit-transform: skew(-6deg); - transform: skew(-6deg); - } - - 66.6% { - -webkit-transform: skew(4deg); - transform: skew(4deg); - } - - 83.25% { - -webkit-transform: skew(-2deg); - transform: skew(-2deg); - } - - 100% { - -webkit-transform: skew(0); - transform: skew(0); - } -} - -@keyframes hvr-wobble-bottom { - 16.65% { - -webkit-transform: skew(-12deg); - transform: skew(-12deg); - } - - 33.3% { - -webkit-transform: skew(10deg); - transform: skew(10deg); - } - - 49.95% { - -webkit-transform: skew(-6deg); - transform: skew(-6deg); - } - - 66.6% { - -webkit-transform: skew(4deg); - transform: skew(4deg); - } - - 83.25% { - -webkit-transform: skew(-2deg); - transform: skew(-2deg); - } - - 100% { - -webkit-transform: skew(0); - transform: skew(0); - } -} - -.hvr-wobble-bottom { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transform-origin: 100% 0; - transform-origin: 100% 0; -} -.hvr-wobble-bottom:hover, .hvr-wobble-bottom:focus, .hvr-wobble-bottom:active { - -webkit-animation-name: hvr-wobble-bottom; - animation-name: hvr-wobble-bottom; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Wobble Skew */ -@-webkit-keyframes hvr-wobble-skew { - 16.65% { - -webkit-transform: skew(-12deg); - transform: skew(-12deg); - } - - 33.3% { - -webkit-transform: skew(10deg); - transform: skew(10deg); - } - - 49.95% { - -webkit-transform: skew(-6deg); - transform: skew(-6deg); - } - - 66.6% { - -webkit-transform: skew(4deg); - transform: skew(4deg); - } - - 83.25% { - -webkit-transform: skew(-2deg); - transform: skew(-2deg); - } - - 100% { - -webkit-transform: skew(0); - transform: skew(0); - } -} - -@keyframes hvr-wobble-skew { - 16.65% { - -webkit-transform: skew(-12deg); - transform: skew(-12deg); - } - - 33.3% { - -webkit-transform: skew(10deg); - transform: skew(10deg); - } - - 49.95% { - -webkit-transform: skew(-6deg); - transform: skew(-6deg); - } - - 66.6% { - -webkit-transform: skew(4deg); - transform: skew(4deg); - } - - 83.25% { - -webkit-transform: skew(-2deg); - transform: skew(-2deg); - } - - 100% { - -webkit-transform: skew(0); - transform: skew(0); - } -} - -.hvr-wobble-skew { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-wobble-skew:hover, .hvr-wobble-skew:focus, .hvr-wobble-skew:active { - -webkit-animation-name: hvr-wobble-skew; - animation-name: hvr-wobble-skew; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Buzz */ -@-webkit-keyframes hvr-buzz { - 50% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 100% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } -} - -@keyframes hvr-buzz { - 50% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 100% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } -} - -.hvr-buzz { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-buzz:hover, .hvr-buzz:focus, .hvr-buzz:active { - -webkit-animation-name: hvr-buzz; - animation-name: hvr-buzz; - -webkit-animation-duration: 0.15s; - animation-duration: 0.15s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -/* Buzz Out */ -@-webkit-keyframes hvr-buzz-out { - 10% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 20% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } - - 30% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 40% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } - - 50% { - -webkit-transform: translateX(2px) rotate(1deg); - transform: translateX(2px) rotate(1deg); - } - - 60% { - -webkit-transform: translateX(-2px) rotate(-1deg); - transform: translateX(-2px) rotate(-1deg); - } - - 70% { - -webkit-transform: translateX(2px) rotate(1deg); - transform: translateX(2px) rotate(1deg); - } - - 80% { - -webkit-transform: translateX(-2px) rotate(-1deg); - transform: translateX(-2px) rotate(-1deg); - } - - 90% { - -webkit-transform: translateX(1px) rotate(0); - transform: translateX(1px) rotate(0); - } - - 100% { - -webkit-transform: translateX(-1px) rotate(0); - transform: translateX(-1px) rotate(0); - } -} - -@keyframes hvr-buzz-out { - 10% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 20% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } - - 30% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 40% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } - - 50% { - -webkit-transform: translateX(2px) rotate(1deg); - transform: translateX(2px) rotate(1deg); - } - - 60% { - -webkit-transform: translateX(-2px) rotate(-1deg); - transform: translateX(-2px) rotate(-1deg); - } - - 70% { - -webkit-transform: translateX(2px) rotate(1deg); - transform: translateX(2px) rotate(1deg); - } - - 80% { - -webkit-transform: translateX(-2px) rotate(-1deg); - transform: translateX(-2px) rotate(-1deg); - } - - 90% { - -webkit-transform: translateX(1px) rotate(0); - transform: translateX(1px) rotate(0); - } - - 100% { - -webkit-transform: translateX(-1px) rotate(0); - transform: translateX(-1px) rotate(0); - } -} - -.hvr-buzz-out { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; -} -.hvr-buzz-out:hover, .hvr-buzz-out:focus, .hvr-buzz-out:active { - -webkit-animation-name: hvr-buzz-out; - animation-name: hvr-buzz-out; - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* BACKGROUND TRANSITIONS */ -/* Fade */ -.hvr-fade { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - overflow: hidden; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: color, background-color; - transition-property: color, background-color; -} -.hvr-fade:hover, .hvr-fade:focus, .hvr-fade:active { - background-color: #2098d1; - color: white; -} - -/* Back Pulse */ -@-webkit-keyframes hvr-back-pulse { - 50% { - background-color: rgba(32, 152, 209, 0.75); - } -} - -@keyframes hvr-back-pulse { - 50% { - background-color: rgba(32, 152, 209, 0.75); - } -} - -.hvr-back-pulse { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - overflow: hidden; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; - -webkit-transition-property: color, background-color; - transition-property: color, background-color; -} -.hvr-back-pulse:hover, .hvr-back-pulse:focus, .hvr-back-pulse:active { - -webkit-animation-name: hvr-back-pulse; - animation-name: hvr-back-pulse; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-delay: 0.5s; - animation-delay: 0.5s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - background-color: #2098d1; - background-color: #2098d1; - color: white; -} - -/* Sweep To Right */ -.hvr-sweep-to-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-sweep-to-right:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scaleX(0); - transform: scaleX(0); - -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-sweep-to-right:hover, .hvr-sweep-to-right:focus, .hvr-sweep-to-right:active { - color: white; -} -.hvr-sweep-to-right:hover:before, .hvr-sweep-to-right:focus:before, .hvr-sweep-to-right:active:before { - -webkit-transform: scaleX(1); - transform: scaleX(1); -} - -/* Sweep To Left */ -.hvr-sweep-to-left { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-sweep-to-left:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scaleX(0); - transform: scaleX(0); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-sweep-to-left:hover, .hvr-sweep-to-left:focus, .hvr-sweep-to-left:active { - color: white; -} -.hvr-sweep-to-left:hover:before, .hvr-sweep-to-left:focus:before, .hvr-sweep-to-left:active:before { - -webkit-transform: scaleX(1); - transform: scaleX(1); -} - -/* Sweep To Bottom */ -.hvr-sweep-to-bottom { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-sweep-to-bottom:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 50% 0; - transform-origin: 50% 0; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-sweep-to-bottom:hover, .hvr-sweep-to-bottom:focus, .hvr-sweep-to-bottom:active { - color: white; -} -.hvr-sweep-to-bottom:hover:before, .hvr-sweep-to-bottom:focus:before, .hvr-sweep-to-bottom:active:before { - -webkit-transform: scaleY(1); - transform: scaleY(1); -} - -/* Sweep To Top */ -.hvr-sweep-to-top { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-sweep-to-top:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-sweep-to-top:hover, .hvr-sweep-to-top:focus, .hvr-sweep-to-top:active { - color: white; -} -.hvr-sweep-to-top:hover:before, .hvr-sweep-to-top:focus:before, .hvr-sweep-to-top:active:before { - -webkit-transform: scaleY(1); - transform: scaleY(1); -} - -/* Bounce To Right */ -.hvr-bounce-to-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; -} -.hvr-bounce-to-right:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scaleX(0); - transform: scaleX(0); - -webkit-transform-origin: 0 50%; - transform-origin: 0 50%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-bounce-to-right:hover, .hvr-bounce-to-right:focus, .hvr-bounce-to-right:active { - color: white; -} -.hvr-bounce-to-right:hover:before, .hvr-bounce-to-right:focus:before, .hvr-bounce-to-right:active:before { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); - transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); -} - -/* Bounce To Left */ -.hvr-bounce-to-left { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; -} -.hvr-bounce-to-left:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scaleX(0); - transform: scaleX(0); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-bounce-to-left:hover, .hvr-bounce-to-left:focus, .hvr-bounce-to-left:active { - color: white; -} -.hvr-bounce-to-left:hover:before, .hvr-bounce-to-left:focus:before, .hvr-bounce-to-left:active:before { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); - transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); -} - -/* Bounce To Bottom */ -.hvr-bounce-to-bottom { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; -} -.hvr-bounce-to-bottom:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 50% 0; - transform-origin: 50% 0; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-bounce-to-bottom:hover, .hvr-bounce-to-bottom:focus, .hvr-bounce-to-bottom:active { - color: white; -} -.hvr-bounce-to-bottom:hover:before, .hvr-bounce-to-bottom:focus:before, .hvr-bounce-to-bottom:active:before { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); - transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); -} - -/* Bounce To Top */ -.hvr-bounce-to-top { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; -} -.hvr-bounce-to-top:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-bounce-to-top:hover, .hvr-bounce-to-top:focus, .hvr-bounce-to-top:active { - color: white; -} -.hvr-bounce-to-top:hover:before, .hvr-bounce-to-top:focus:before, .hvr-bounce-to-top:active:before { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); - transition-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); -} - -/* Radial Out */ -.hvr-radial-out { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; - background: #e1e1e1; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-radial-out:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - border-radius: 100%; - -webkit-transform: scale(0); - transform: scale(0); - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-radial-out:hover, .hvr-radial-out:focus, .hvr-radial-out:active { - color: white; -} -.hvr-radial-out:hover:before, .hvr-radial-out:focus:before, .hvr-radial-out:active:before { - -webkit-transform: scale(2); - transform: scale(2); -} - -/* Radial In */ -.hvr-radial-in { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; - background: #2098d1; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-radial-in:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #e1e1e1; - border-radius: 100%; - -webkit-transform: scale(2); - transform: scale(2); - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-radial-in:hover, .hvr-radial-in:focus, .hvr-radial-in:active { - color: white; -} -.hvr-radial-in:hover:before, .hvr-radial-in:focus:before, .hvr-radial-in:active:before { - -webkit-transform: scale(0); - transform: scale(0); -} - -/* Rectangle In */ -.hvr-rectangle-in { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - background: #2098d1; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-rectangle-in:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #e1e1e1; - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-rectangle-in:hover, .hvr-rectangle-in:focus, .hvr-rectangle-in:active { - color: white; -} -.hvr-rectangle-in:hover:before, .hvr-rectangle-in:focus:before, .hvr-rectangle-in:active:before { - -webkit-transform: scale(0); - transform: scale(0); -} - -/* Rectangle Out */ -.hvr-rectangle-out { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - background: #e1e1e1; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-rectangle-out:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - -webkit-transform: scale(0); - transform: scale(0); - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-rectangle-out:hover, .hvr-rectangle-out:focus, .hvr-rectangle-out:active { - color: white; -} -.hvr-rectangle-out:hover:before, .hvr-rectangle-out:focus:before, .hvr-rectangle-out:active:before { - -webkit-transform: scale(1); - transform: scale(1); -} - -/* Shutter In Horizontal */ -.hvr-shutter-in-horizontal { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - background: #2098d1; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-shutter-in-horizontal:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: #e1e1e1; - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 50%; - transform-origin: 50%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-shutter-in-horizontal:hover, .hvr-shutter-in-horizontal:focus, .hvr-shutter-in-horizontal:active { - color: white; -} -.hvr-shutter-in-horizontal:hover:before, .hvr-shutter-in-horizontal:focus:before, .hvr-shutter-in-horizontal:active:before { - -webkit-transform: scaleX(0); - transform: scaleX(0); -} - -/* Shutter Out Horizontal */ -.hvr-shutter-out-horizontal { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - background: #e1e1e1; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-shutter-out-horizontal:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: #2098d1; - -webkit-transform: scaleX(0); - transform: scaleX(0); - -webkit-transform-origin: 50%; - transform-origin: 50%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-shutter-out-horizontal:hover, .hvr-shutter-out-horizontal:focus, .hvr-shutter-out-horizontal:active { - color: white; -} -.hvr-shutter-out-horizontal:hover:before, .hvr-shutter-out-horizontal:focus:before, .hvr-shutter-out-horizontal:active:before { - -webkit-transform: scaleX(1); - transform: scaleX(1); -} - -/* Shutter In Vertical */ -.hvr-shutter-in-vertical { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - background: #2098d1; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-shutter-in-vertical:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: #e1e1e1; - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 50%; - transform-origin: 50%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-shutter-in-vertical:hover, .hvr-shutter-in-vertical:focus, .hvr-shutter-in-vertical:active { - color: white; -} -.hvr-shutter-in-vertical:hover:before, .hvr-shutter-in-vertical:focus:before, .hvr-shutter-in-vertical:active:before { - -webkit-transform: scaleY(0); - transform: scaleY(0); -} - -/* Shutter Out Vertical */ -.hvr-shutter-out-vertical { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - background: #e1e1e1; - -webkit-transition-property: color; - transition-property: color; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-shutter-out-vertical:before { - content: ""; - position: absolute; - z-index: -1; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: #2098d1; - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 50%; - transform-origin: 50%; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-shutter-out-vertical:hover, .hvr-shutter-out-vertical:focus, .hvr-shutter-out-vertical:active { - color: white; -} -.hvr-shutter-out-vertical:hover:before, .hvr-shutter-out-vertical:focus:before, .hvr-shutter-out-vertical:active:before { - -webkit-transform: scaleY(1); - transform: scaleY(1); -} - -/* BORDER TRANSITIONS */ -/* Border Fade */ -.hvr-border-fade { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: box-shadow; - transition-property: box-shadow; - box-shadow: inset 0 0 0 4px #e1e1e1, 0 0 1px rgba(0, 0, 0, 0); - /* Hack to improve aliasing on mobile/tablet devices */ -} -.hvr-border-fade:hover, .hvr-border-fade:focus, .hvr-border-fade:active { - box-shadow: inset 0 0 0 4px #2098d1, 0 0 1px rgba(0, 0, 0, 0); - /* Hack to improve aliasing on mobile/tablet devices */ -} - -/* Hollow */ -.hvr-hollow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: background; - transition-property: background; - box-shadow: inset 0 0 0 4px #e1e1e1, 0 0 1px rgba(0, 0, 0, 0); - /* Hack to improve aliasing on mobile/tablet devices */ -} -.hvr-hollow:hover, .hvr-hollow:focus, .hvr-hollow:active { - background: none; -} - -/* Trim */ -.hvr-trim { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-trim:before { - content: ''; - position: absolute; - border: white solid 4px; - top: 4px; - left: 4px; - right: 4px; - bottom: 4px; - opacity: 0; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: opacity; - transition-property: opacity; -} -.hvr-trim:hover:before, .hvr-trim:focus:before, .hvr-trim:active:before { - opacity: 1; -} - -/* Ripple Out */ -@-webkit-keyframes hvr-ripple-out { - 100% { - top: -12px; - right: -12px; - bottom: -12px; - left: -12px; - opacity: 0; - } -} - -@keyframes hvr-ripple-out { - 100% { - top: -12px; - right: -12px; - bottom: -12px; - left: -12px; - opacity: 0; - } -} - -.hvr-ripple-out { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-ripple-out:before { - content: ''; - position: absolute; - border: #e1e1e1 solid 6px; - top: 0; - right: 0; - bottom: 0; - left: 0; - -webkit-animation-duration: 1s; - animation-duration: 1s; -} -.hvr-ripple-out:hover:before, .hvr-ripple-out:focus:before, .hvr-ripple-out:active:before { - -webkit-animation-name: hvr-ripple-out; - animation-name: hvr-ripple-out; -} - -/* Ripple In */ -@-webkit-keyframes hvr-ripple-in { - 100% { - top: 0; - right: 0; - bottom: 0; - left: 0; - opacity: 1; - } -} - -@keyframes hvr-ripple-in { - 100% { - top: 0; - right: 0; - bottom: 0; - left: 0; - opacity: 1; - } -} - -.hvr-ripple-in { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-ripple-in:before { - content: ''; - position: absolute; - border: #e1e1e1 solid 4px; - top: -12px; - right: -12px; - bottom: -12px; - left: -12px; - opacity: 0; - -webkit-animation-duration: 1s; - animation-duration: 1s; -} -.hvr-ripple-in:hover:before, .hvr-ripple-in:focus:before, .hvr-ripple-in:active:before { - -webkit-animation-name: hvr-ripple-in; - animation-name: hvr-ripple-in; -} - -/* Outline Out */ -.hvr-outline-out { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-outline-out:before { - content: ''; - position: absolute; - border: #e1e1e1 solid 4px; - top: 0; - right: 0; - bottom: 0; - left: 0; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: top, right, bottom, left; - transition-property: top, right, bottom, left; -} -.hvr-outline-out:hover:before, .hvr-outline-out:focus:before, .hvr-outline-out:active:before { - top: -8px; - right: -8px; - bottom: -8px; - left: -8px; -} - -/* Outline In */ -.hvr-outline-in { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-outline-in:before { - pointer-events: none; - content: ''; - position: absolute; - border: #e1e1e1 solid 4px; - top: -16px; - right: -16px; - bottom: -16px; - left: -16px; - opacity: 0; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: top, right, bottom, left; - transition-property: top, right, bottom, left; -} -.hvr-outline-in:hover:before, .hvr-outline-in:focus:before, .hvr-outline-in:active:before { - top: -8px; - right: -8px; - bottom: -8px; - left: -8px; - opacity: 1; -} - -/* Round Corners */ -.hvr-round-corners { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: border-radius; - transition-property: border-radius; -} -.hvr-round-corners:hover, .hvr-round-corners:focus, .hvr-round-corners:active { - border-radius: 1em; -} - -/* Underline From Left */ -.hvr-underline-from-left { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-underline-from-left:before { - content: ""; - position: absolute; - z-index: -1; - left: 0; - right: 100%; - bottom: 0; - background: #2098d1; - height: 4px; - -webkit-transition-property: right; - transition-property: right; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-underline-from-left:hover:before, .hvr-underline-from-left:focus:before, .hvr-underline-from-left:active:before { - right: 0; -} - -/* Underline From Center */ -.hvr-underline-from-center { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-underline-from-center:before { - content: ""; - position: absolute; - z-index: -1; - left: 50%; - right: 50%; - bottom: 0; - background: #2098d1; - height: 4px; - -webkit-transition-property: left, right; - transition-property: left, right; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-underline-from-center:hover:before, .hvr-underline-from-center:focus:before, .hvr-underline-from-center:active:before { - left: 0; - right: 0; -} - -/* Underline From Right */ -.hvr-underline-from-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-underline-from-right:before { - content: ""; - position: absolute; - z-index: -1; - left: 100%; - right: 0; - bottom: 0; - background: #2098d1; - height: 4px; - -webkit-transition-property: left; - transition-property: left; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-underline-from-right:hover:before, .hvr-underline-from-right:focus:before, .hvr-underline-from-right:active:before { - left: 0; -} - -/* Overline From Left */ -.hvr-overline-from-left { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-overline-from-left:before { - content: ""; - position: absolute; - z-index: -1; - left: 0; - right: 100%; - top: 0; - background: #2098d1; - height: 4px; - -webkit-transition-property: right; - transition-property: right; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-overline-from-left:hover:before, .hvr-overline-from-left:focus:before, .hvr-overline-from-left:active:before { - right: 0; -} - -/* Overline From Center */ -.hvr-overline-from-center { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-overline-from-center:before { - content: ""; - position: absolute; - z-index: -1; - left: 50%; - right: 50%; - top: 0; - background: #2098d1; - height: 4px; - -webkit-transition-property: left, right; - transition-property: left, right; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-overline-from-center:hover:before, .hvr-overline-from-center:focus:before, .hvr-overline-from-center:active:before { - left: 0; - right: 0; -} - -/* Overline From Right */ -.hvr-overline-from-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-overline-from-right:before { - content: ""; - position: absolute; - z-index: -1; - left: 100%; - right: 0; - top: 0; - background: #2098d1; - height: 4px; - -webkit-transition-property: left; - transition-property: left; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-overline-from-right:hover:before, .hvr-overline-from-right:focus:before, .hvr-overline-from-right:active:before { - left: 0; -} - -/* Reveal */ -.hvr-reveal { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-reveal:before { - content: ""; - position: absolute; - z-index: -1; - left: 0; - right: 0; - top: 0; - bottom: 0; - border-color: #2098d1; - border-style: solid; - border-width: 0; - -webkit-transition-property: border-width; - transition-property: border-width; - -webkit-transition-duration: 0.1s; - transition-duration: 0.1s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-reveal:hover:before, .hvr-reveal:focus:before, .hvr-reveal:active:before { - -webkit-transform: translateY(0); - transform: translateY(0); - border-width: 4px; -} - -/* Underline Reveal */ -.hvr-underline-reveal { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-underline-reveal:before { - content: ""; - position: absolute; - z-index: -1; - left: 0; - right: 0; - bottom: 0; - background: #2098d1; - height: 4px; - -webkit-transform: translateY(4px); - transform: translateY(4px); - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-underline-reveal:hover:before, .hvr-underline-reveal:focus:before, .hvr-underline-reveal:active:before { - -webkit-transform: translateY(0); - transform: translateY(0); -} - -/* Overline Reveal */ -.hvr-overline-reveal { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - overflow: hidden; -} -.hvr-overline-reveal:before { - content: ""; - position: absolute; - z-index: -1; - left: 0; - right: 0; - top: 0; - background: #2098d1; - height: 4px; - -webkit-transform: translateY(-4px); - transform: translateY(-4px); - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-overline-reveal:hover:before, .hvr-overline-reveal:focus:before, .hvr-overline-reveal:active:before { - -webkit-transform: translateY(0); - transform: translateY(0); -} - -/* SHADOW/GLOW TRANSITIONS */ -/* Glow */ -.hvr-glow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: box-shadow; - transition-property: box-shadow; -} -.hvr-glow:hover, .hvr-glow:focus, .hvr-glow:active { - box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); -} - -/* Shadow */ -.hvr-shadow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: box-shadow; - transition-property: box-shadow; -} -.hvr-shadow:hover, .hvr-shadow:focus, .hvr-shadow:active { - box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.5); -} - -/* Grow Shadow */ -.hvr-grow-shadow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: box-shadow, transform; - transition-property: box-shadow, transform; -} -.hvr-grow-shadow:hover, .hvr-grow-shadow:focus, .hvr-grow-shadow:active { - box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.5); - -webkit-transform: scale(1.1); - transform: scale(1.1); -} - -/* Box Shadow Outset */ -.hvr-box-shadow-outset { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: box-shadow; - transition-property: box-shadow; -} -.hvr-box-shadow-outset:hover, .hvr-box-shadow-outset:focus, .hvr-box-shadow-outset:active { - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.6); -} - -/* Box Shadow Inset */ -.hvr-box-shadow-inset { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: box-shadow; - transition-property: box-shadow; - box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.6), 0 0 1px rgba(0, 0, 0, 0); - /* Hack to improve aliasing on mobile/tablet devices */ -} -.hvr-box-shadow-inset:hover, .hvr-box-shadow-inset:focus, .hvr-box-shadow-inset:active { - box-shadow: inset 2px 2px 2px rgba(0, 0, 0, 0.6), 0 0 1px rgba(0, 0, 0, 0); - /* Hack to improve aliasing on mobile/tablet devices */ -} - -/* Float Shadow */ -.hvr-float-shadow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-float-shadow:before { - pointer-events: none; - position: absolute; - z-index: -1; - content: ''; - top: 100%; - left: 5%; - height: 10px; - width: 90%; - opacity: 0; - background: -webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 80%); - background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 80%); - /* W3C */ - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform, opacity; - transition-property: transform, opacity; -} -.hvr-float-shadow:hover, .hvr-float-shadow:focus, .hvr-float-shadow:active { - -webkit-transform: translateY(-5px); - transform: translateY(-5px); - /* move the element up by 5px */ -} -.hvr-float-shadow:hover:before, .hvr-float-shadow:focus:before, .hvr-float-shadow:active:before { - opacity: 1; - -webkit-transform: translateY(5px); - transform: translateY(5px); - /* move the element down by 5px (it will stay in place because it's attached to the element that also moves up 5px) */ -} - -/* Shadow Radial */ -.hvr-shadow-radial { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-shadow-radial:before, .hvr-shadow-radial:after { - pointer-events: none; - position: absolute; - content: ''; - left: 0; - width: 100%; - box-sizing: border-box; - background-repeat: no-repeat; - height: 5px; - opacity: 0; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: opacity; - transition-property: opacity; -} -.hvr-shadow-radial:before { - bottom: 100%; - background: -webkit-radial-gradient(50% 150%, ellipse, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 80%); - background: radial-gradient(ellipse at 50% 150%, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 80%); -} -.hvr-shadow-radial:after { - top: 100%; - background: -webkit-radial-gradient(50% -50%, ellipse, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 80%); - background: radial-gradient(ellipse at 50% -50%, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 80%); -} -.hvr-shadow-radial:hover:before, .hvr-shadow-radial:focus:before, .hvr-shadow-radial:active:before, .hvr-shadow-radial:hover:after, .hvr-shadow-radial:focus:after, .hvr-shadow-radial:active:after { - opacity: 1; -} - -/* SPEECH BUBBLES */ -/* Bubble Top */ -.hvr-bubble-top { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-bubble-top:before { - pointer-events: none; - position: absolute; - z-index: -1; - content: ''; - border-style: solid; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - left: calc(50% - 10px); - top: 0; - border-width: 0 10px 10px 10px; - border-color: transparent transparent #e1e1e1 transparent; -} -.hvr-bubble-top:hover:before, .hvr-bubble-top:focus:before, .hvr-bubble-top:active:before { - -webkit-transform: translateY(-10px); - transform: translateY(-10px); -} - -/* Bubble Right */ -.hvr-bubble-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-bubble-right:before { - pointer-events: none; - position: absolute; - z-index: -1; - content: ''; - border-style: solid; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - top: calc(50% - 10px); - right: 0; - border-width: 10px 0 10px 10px; - border-color: transparent transparent transparent #e1e1e1; -} -.hvr-bubble-right:hover:before, .hvr-bubble-right:focus:before, .hvr-bubble-right:active:before { - -webkit-transform: translateX(10px); - transform: translateX(10px); -} - -/* Bubble Bottom */ -.hvr-bubble-bottom { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-bubble-bottom:before { - pointer-events: none; - position: absolute; - z-index: -1; - content: ''; - border-style: solid; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - left: calc(50% - 10px); - bottom: 0; - border-width: 10px 10px 0 10px; - border-color: #e1e1e1 transparent transparent transparent; -} -.hvr-bubble-bottom:hover:before, .hvr-bubble-bottom:focus:before, .hvr-bubble-bottom:active:before { - -webkit-transform: translateY(10px); - transform: translateY(10px); -} - -/* Bubble Left */ -.hvr-bubble-left { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-bubble-left:before { - pointer-events: none; - position: absolute; - z-index: -1; - content: ''; - border-style: solid; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - top: calc(50% - 10px); - left: 0; - border-width: 10px 10px 10px 0; - border-color: transparent #e1e1e1 transparent transparent; -} -.hvr-bubble-left:hover:before, .hvr-bubble-left:focus:before, .hvr-bubble-left:active:before { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); -} - -/* Bubble Float Top */ -.hvr-bubble-float-top { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-bubble-float-top:before { - position: absolute; - z-index: -1; - content: ''; - left: calc(50% - 10px); - top: 0; - border-style: solid; - border-width: 0 10px 10px 10px; - border-color: transparent transparent #e1e1e1 transparent; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-bubble-float-top:hover, .hvr-bubble-float-top:focus, .hvr-bubble-float-top:active { - -webkit-transform: translateY(10px); - transform: translateY(10px); -} -.hvr-bubble-float-top:hover:before, .hvr-bubble-float-top:focus:before, .hvr-bubble-float-top:active:before { - -webkit-transform: translateY(-10px); - transform: translateY(-10px); -} - -/* Bubble Float Right */ -.hvr-bubble-float-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-bubble-float-right:before { - position: absolute; - z-index: -1; - top: calc(50% - 10px); - right: 0; - content: ''; - border-style: solid; - border-width: 10px 0 10px 10px; - border-color: transparent transparent transparent #e1e1e1; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-bubble-float-right:hover, .hvr-bubble-float-right:focus, .hvr-bubble-float-right:active { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); -} -.hvr-bubble-float-right:hover:before, .hvr-bubble-float-right:focus:before, .hvr-bubble-float-right:active:before { - -webkit-transform: translateX(10px); - transform: translateX(10px); -} - -/* Bubble Float Bottom */ -.hvr-bubble-float-bottom { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-bubble-float-bottom:before { - position: absolute; - z-index: -1; - content: ''; - left: calc(50% - 10px); - bottom: 0; - border-style: solid; - border-width: 10px 10px 0 10px; - border-color: #e1e1e1 transparent transparent transparent; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-bubble-float-bottom:hover, .hvr-bubble-float-bottom:focus, .hvr-bubble-float-bottom:active { - -webkit-transform: translateY(-10px); - transform: translateY(-10px); -} -.hvr-bubble-float-bottom:hover:before, .hvr-bubble-float-bottom:focus:before, .hvr-bubble-float-bottom:active:before { - -webkit-transform: translateY(10px); - transform: translateY(10px); -} - -/* Bubble Float Left */ -.hvr-bubble-float-left { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-bubble-float-left:before { - position: absolute; - z-index: -1; - content: ''; - top: calc(50% - 10px); - left: 0; - border-style: solid; - border-width: 10px 10px 10px 0; - border-color: transparent #e1e1e1 transparent transparent; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; -} -.hvr-bubble-float-left:hover, .hvr-bubble-float-left:focus, .hvr-bubble-float-left:active { - -webkit-transform: translateX(10px); - transform: translateX(10px); -} -.hvr-bubble-float-left:hover:before, .hvr-bubble-float-left:focus:before, .hvr-bubble-float-left:active:before { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); -} - -/* ICONS */ -/* Icon Back */ -.hvr-icon-back { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-left: 2.2em; - -webkit-transition-duration: 0.1s; - transition-duration: 0.1s; -} -.hvr-icon-back:before { - content: "\f137"; - position: absolute; - left: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.1s; - transition-duration: 0.1s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-back:hover:before, .hvr-icon-back:focus:before, .hvr-icon-back:active:before { - -webkit-transform: translateX(-4px); - transform: translateX(-4px); -} - -/* Icon Forward */ -.hvr-icon-forward { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.1s; - transition-duration: 0.1s; -} -.hvr-icon-forward:before { - content: "\f138"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.1s; - transition-duration: 0.1s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-forward:hover:before, .hvr-icon-forward:focus:before, .hvr-icon-forward:active:before { - -webkit-transform: translateX(4px); - transform: translateX(4px); -} - -/* Icon Down */ -@-webkit-keyframes hvr-icon-down { - 0%, - 50%, - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 25%, - 75% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } -} - -@keyframes hvr-icon-down { - 0%, - 50%, - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 25%, - 75% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } -} - -/* Icon Down */ -.hvr-icon-down { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-down:before { - content: "\f01a"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-down:hover:before, .hvr-icon-down:focus:before, .hvr-icon-down:active:before { - -webkit-animation-name: hvr-icon-down; - animation-name: hvr-icon-down; - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -/* Icon Up */ -@-webkit-keyframes hvr-icon-up { - 0%, - 50%, - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 25%, - 75% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } -} - -@keyframes hvr-icon-up { - 0%, - 50%, - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 25%, - 75% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } -} - -/* Icon Up */ -.hvr-icon-up { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-up:before { - content: "\f01b"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-up:hover:before, .hvr-icon-up:focus:before, .hvr-icon-up:active:before { - -webkit-animation-name: hvr-icon-up; - animation-name: hvr-icon-up; - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -/* Icon Spin */ -.hvr-icon-spin { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-spin:before { - content: "\f021"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transition-duration: 1s; - transition-duration: 1s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-in-out; - transition-timing-function: ease-in-out; -} -.hvr-icon-spin:hover:before, .hvr-icon-spin:focus:before, .hvr-icon-spin:active:before { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); -} - -/* Icon Drop */ -@-webkit-keyframes hvr-icon-drop { - 0% { - opacity: 0; - } - - 50% { - opacity: 0; - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } - - 51%, - 100% { - opacity: 1; - } -} - -@keyframes hvr-icon-drop { - 0% { - opacity: 0; - } - - 50% { - opacity: 0; - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - } - - 51%, - 100% { - opacity: 1; - } -} - -/* Icon Drop */ -.hvr-icon-drop { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-drop:before { - content: "\f041"; - position: absolute; - right: 1em; - opacity: 1; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-drop:hover:before, .hvr-icon-drop:focus:before, .hvr-icon-drop:active:before { - opacity: 0; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-animation-name: hvr-icon-drop; - animation-name: hvr-icon-drop; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; - -webkit-animation-delay: 0.3s; - animation-delay: 0.3s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); - animation-timing-function: cubic-bezier(0.52, 1.64, 0.37, 0.66); -} - -/* Icon Fade */ -.hvr-icon-fade { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-fade:before { - content: "\f00c"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; - -webkit-transition-property: color; - transition-property: color; -} -.hvr-icon-fade:hover:before, .hvr-icon-fade:focus:before, .hvr-icon-fade:active:before { - color: #0F9E5E; -} - -/* Icon Float Away */ -@-webkit-keyframes hvr-icon-float-away { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-1em); - transform: translateY(-1em); - } -} - -@keyframes hvr-icon-float-away { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-1em); - transform: translateY(-1em); - } -} - -/* Icon Float Away */ -.hvr-icon-float-away { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-float-away:before, .hvr-icon-float-away:after { - content: "\f055"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; -} -.hvr-icon-float-away:after { - opacity: 0; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; -} -.hvr-icon-float-away:hover:after, .hvr-icon-float-away:focus:after, .hvr-icon-float-away:active:after { - -webkit-animation-name: hvr-icon-float-away; - animation-name: hvr-icon-float-away; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -/* Icon Sink Away */ -@-webkit-keyframes hvr-icon-sink-away { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translateY(1em); - transform: translateY(1em); - } -} - -@keyframes hvr-icon-sink-away { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translateY(1em); - transform: translateY(1em); - } -} - -/* Icon Sink Away */ -.hvr-icon-sink-away { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-sink-away:before, .hvr-icon-sink-away:after { - content: "\f056"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-sink-away:after { - opacity: 0; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; -} -.hvr-icon-sink-away:hover:after, .hvr-icon-sink-away:focus:after, .hvr-icon-sink-away:active:after { - -webkit-animation-name: hvr-icon-sink-away; - animation-name: hvr-icon-sink-away; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -/* Icon Grow */ -.hvr-icon-grow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-grow:before { - content: "\f118"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-grow:hover:before, .hvr-icon-grow:focus:before, .hvr-icon-grow:active:before { - -webkit-transform: scale(1.3) translateZ(0); - transform: scale(1.3) translateZ(0); -} - -/* Icon Shrink */ -.hvr-icon-shrink { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-shrink:before { - content: "\f119"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-shrink:hover:before, .hvr-icon-shrink:focus:before, .hvr-icon-shrink:active:before { - -webkit-transform: scale(0.8); - transform: scale(0.8); -} - -/* Icon Pulse */ -@-webkit-keyframes hvr-icon-pulse { - 25% { - -webkit-transform: scale(1.3); - transform: scale(1.3); - } - - 75% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - } -} - -@keyframes hvr-icon-pulse { - 25% { - -webkit-transform: scale(1.3); - transform: scale(1.3); - } - - 75% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - } -} - -.hvr-icon-pulse { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-pulse:before { - content: "\f015"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-pulse:hover:before, .hvr-icon-pulse:focus:before, .hvr-icon-pulse:active:before { - -webkit-animation-name: hvr-icon-pulse; - animation-name: hvr-icon-pulse; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -/* Icon Pulse Grow */ -@-webkit-keyframes hvr-icon-pulse-grow { - to { - -webkit-transform: scale(1.3); - transform: scale(1.3); - } -} - -@keyframes hvr-icon-pulse-grow { - to { - -webkit-transform: scale(1.3); - transform: scale(1.3); - } -} - -.hvr-icon-pulse-grow { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-pulse-grow:before { - content: "\f015"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-pulse-grow:hover:before, .hvr-icon-pulse-grow:focus:before, .hvr-icon-pulse-grow:active:before { - -webkit-animation-name: hvr-icon-pulse-grow; - animation-name: hvr-icon-pulse-grow; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - -webkit-animation-direction: alternate; - animation-direction: alternate; -} - -/* Icon Pulse Shrink */ -@-webkit-keyframes hvr-icon-pulse-shrink { - to { - -webkit-transform: scale(0.8); - transform: scale(0.8); - } -} - -@keyframes hvr-icon-pulse-shrink { - to { - -webkit-transform: scale(0.8); - transform: scale(0.8); - } -} - -.hvr-icon-pulse-shrink { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; -} -.hvr-icon-pulse-shrink:before { - content: "\f015"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-pulse-shrink:hover:before, .hvr-icon-pulse-shrink:focus:before, .hvr-icon-pulse-shrink:active:before { - -webkit-animation-name: hvr-icon-pulse-shrink; - animation-name: hvr-icon-pulse-shrink; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - -webkit-animation-direction: alternate; - animation-direction: alternate; -} - -/* Icon Push */ -@-webkit-keyframes hvr-icon-push { - 50% { - -webkit-transform: scale(0.5); - transform: scale(0.5); - } -} - -@keyframes hvr-icon-push { - 50% { - -webkit-transform: scale(0.5); - transform: scale(0.5); - } -} - -.hvr-icon-push { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-push:before { - content: "\f006"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-push:hover:before, .hvr-icon-push:focus:before, .hvr-icon-push:active:before { - -webkit-animation-name: hvr-icon-push; - animation-name: hvr-icon-push; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Icon Pop */ -@-webkit-keyframes hvr-icon-pop { - 50% { - -webkit-transform: scale(1.5); - transform: scale(1.5); - } -} - -@keyframes hvr-icon-pop { - 50% { - -webkit-transform: scale(1.5); - transform: scale(1.5); - } -} - -.hvr-icon-pop { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-pop:before { - content: "\f005"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-pop:hover:before, .hvr-icon-pop:focus:before, .hvr-icon-pop:active:before { - -webkit-animation-name: hvr-icon-pop; - animation-name: hvr-icon-pop; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Icon Bounce */ -.hvr-icon-bounce { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-bounce:before { - content: "\f087"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-bounce:hover:before, .hvr-icon-bounce:focus:before, .hvr-icon-bounce:active:before { - -webkit-transform: scale(1.5); - transform: scale(1.5); - -webkit-transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36); - transition-timing-function: cubic-bezier(0.47, 2.02, 0.31, -0.36); -} - -/* Icon Rotate */ -.hvr-icon-rotate { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-rotate:before { - content: "\f0c6"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-rotate:hover:before, .hvr-icon-rotate:focus:before, .hvr-icon-rotate:active:before { - -webkit-transform: rotate(20deg); - transform: rotate(20deg); -} - -/* Icon Grow Rotate */ -.hvr-icon-grow-rotate { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-grow-rotate:before { - content: "\f095"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-grow-rotate:hover:before, .hvr-icon-grow-rotate:focus:before, .hvr-icon-grow-rotate:active:before { - -webkit-transform: scale(1.5) rotate(12deg); - transform: scale(1.5) rotate(12deg); -} - -/* Icon Float */ -.hvr-icon-float { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-float:before { - content: "\f01b"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-float:hover:before, .hvr-icon-float:focus:before, .hvr-icon-float:active:before { - -webkit-transform: translateY(-4px); - transform: translateY(-4px); -} - -/* Icon Sink */ -.hvr-icon-sink { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-sink:before { - content: "\f01a"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: transform; - transition-property: transform; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; -} -.hvr-icon-sink:hover:before, .hvr-icon-sink:focus:before, .hvr-icon-sink:active:before { - -webkit-transform: translateY(4px); - transform: translateY(4px); -} - -/* Icon Bob */ -@-webkit-keyframes hvr-icon-bob { - 0% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } - - 50% { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - - 100% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } -} - -@keyframes hvr-icon-bob { - 0% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } - - 50% { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - - 100% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } -} - -@-webkit-keyframes hvr-icon-bob-float { - 100% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } -} - -@keyframes hvr-icon-bob-float { - 100% { - -webkit-transform: translateY(-6px); - transform: translateY(-6px); - } -} - -.hvr-icon-bob { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-bob:before { - content: "\f077"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-bob:hover:before, .hvr-icon-bob:focus:before, .hvr-icon-bob:active:before { - -webkit-animation-name: hvr-icon-bob-float, hvr-icon-bob; - animation-name: hvr-icon-bob-float, hvr-icon-bob; - -webkit-animation-duration: .3s, 1.5s; - animation-duration: .3s, 1.5s; - -webkit-animation-delay: 0s, .3s; - animation-delay: 0s, .3s; - -webkit-animation-timing-function: ease-out, ease-in-out; - animation-timing-function: ease-out, ease-in-out; - -webkit-animation-iteration-count: 1, infinite; - animation-iteration-count: 1, infinite; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-direction: normal, alternate; - animation-direction: normal, alternate; -} - -/* Icon Hang */ -@-webkit-keyframes hvr-icon-hang { - 0% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } - - 50% { - -webkit-transform: translateY(2px); - transform: translateY(2px); - } - - 100% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } -} - -@keyframes hvr-icon-hang { - 0% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } - - 50% { - -webkit-transform: translateY(2px); - transform: translateY(2px); - } - - 100% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } -} - -@-webkit-keyframes hvr-icon-hang-sink { - 100% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } -} - -@keyframes hvr-icon-hang-sink { - 100% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } -} - -.hvr-icon-hang { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-hang:before { - content: "\f078"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-hang:hover:before, .hvr-icon-hang:focus:before, .hvr-icon-hang:active:before { - -webkit-animation-name: hvr-icon-hang-sink, hvr-icon-hang; - animation-name: hvr-icon-hang-sink, hvr-icon-hang; - -webkit-animation-duration: .3s, 1.5s; - animation-duration: .3s, 1.5s; - -webkit-animation-delay: 0s, .3s; - animation-delay: 0s, .3s; - -webkit-animation-timing-function: ease-out, ease-in-out; - animation-timing-function: ease-out, ease-in-out; - -webkit-animation-iteration-count: 1, infinite; - animation-iteration-count: 1, infinite; - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - -webkit-animation-direction: normal, alternate; - animation-direction: normal, alternate; -} - -/* Icon Wobble Horizontal */ -@-webkit-keyframes hvr-icon-wobble-horizontal { - 16.65% { - -webkit-transform: translateX(6px); - transform: translateX(6px); - } - - 33.3% { - -webkit-transform: translateX(-5px); - transform: translateX(-5px); - } - - 49.95% { - -webkit-transform: translateX(4px); - transform: translateX(4px); - } - - 66.6% { - -webkit-transform: translateX(-2px); - transform: translateX(-2px); - } - - 83.25% { - -webkit-transform: translateX(1px); - transform: translateX(1px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes hvr-icon-wobble-horizontal { - 16.65% { - -webkit-transform: translateX(6px); - transform: translateX(6px); - } - - 33.3% { - -webkit-transform: translateX(-5px); - transform: translateX(-5px); - } - - 49.95% { - -webkit-transform: translateX(4px); - transform: translateX(4px); - } - - 66.6% { - -webkit-transform: translateX(-2px); - transform: translateX(-2px); - } - - 83.25% { - -webkit-transform: translateX(1px); - transform: translateX(1px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -.hvr-icon-wobble-horizontal { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-wobble-horizontal:before { - content: "\f061"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-wobble-horizontal:hover:before, .hvr-icon-wobble-horizontal:focus:before, .hvr-icon-wobble-horizontal:active:before { - -webkit-animation-name: hvr-icon-wobble-horizontal; - animation-name: hvr-icon-wobble-horizontal; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Icon Wobble Vertical */ -@-webkit-keyframes hvr-icon-wobble-vertical { - 16.65% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } - - 33.3% { - -webkit-transform: translateY(-5px); - transform: translateY(-5px); - } - - 49.95% { - -webkit-transform: translateY(4px); - transform: translateY(4px); - } - - 66.6% { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - - 83.25% { - -webkit-transform: translateY(1px); - transform: translateY(1px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes hvr-icon-wobble-vertical { - 16.65% { - -webkit-transform: translateY(6px); - transform: translateY(6px); - } - - 33.3% { - -webkit-transform: translateY(-5px); - transform: translateY(-5px); - } - - 49.95% { - -webkit-transform: translateY(4px); - transform: translateY(4px); - } - - 66.6% { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); - } - - 83.25% { - -webkit-transform: translateY(1px); - transform: translateY(1px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -.hvr-icon-wobble-vertical { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-wobble-vertical:before { - content: "\f062"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-wobble-vertical:hover:before, .hvr-icon-wobble-vertical:focus:before, .hvr-icon-wobble-vertical:active:before { - -webkit-animation-name: hvr-icon-wobble-vertical; - animation-name: hvr-icon-wobble-vertical; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* Icon Buzz */ -@-webkit-keyframes hvr-icon-buzz { - 50% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 100% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } -} - -@keyframes hvr-icon-buzz { - 50% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 100% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } -} - -.hvr-icon-buzz { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-buzz:before { - content: "\f017"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-buzz:hover:before, .hvr-icon-buzz:focus:before, .hvr-icon-buzz:active:before { - -webkit-animation-name: hvr-icon-buzz; - animation-name: hvr-icon-buzz; - -webkit-animation-duration: 0.15s; - animation-duration: 0.15s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -/* Icon Buzz Out */ -@-webkit-keyframes hvr-icon-buzz-out { - 10% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 20% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } - - 30% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 40% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } - - 50% { - -webkit-transform: translateX(2px) rotate(1deg); - transform: translateX(2px) rotate(1deg); - } - - 60% { - -webkit-transform: translateX(-2px) rotate(-1deg); - transform: translateX(-2px) rotate(-1deg); - } - - 70% { - -webkit-transform: translateX(2px) rotate(1deg); - transform: translateX(2px) rotate(1deg); - } - - 80% { - -webkit-transform: translateX(-2px) rotate(-1deg); - transform: translateX(-2px) rotate(-1deg); - } - - 90% { - -webkit-transform: translateX(1px) rotate(0); - transform: translateX(1px) rotate(0); - } - - 100% { - -webkit-transform: translateX(-1px) rotate(0); - transform: translateX(-1px) rotate(0); - } -} - -@keyframes hvr-icon-buzz-out { - 10% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 20% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } - - 30% { - -webkit-transform: translateX(3px) rotate(2deg); - transform: translateX(3px) rotate(2deg); - } - - 40% { - -webkit-transform: translateX(-3px) rotate(-2deg); - transform: translateX(-3px) rotate(-2deg); - } - - 50% { - -webkit-transform: translateX(2px) rotate(1deg); - transform: translateX(2px) rotate(1deg); - } - - 60% { - -webkit-transform: translateX(-2px) rotate(-1deg); - transform: translateX(-2px) rotate(-1deg); - } - - 70% { - -webkit-transform: translateX(2px) rotate(1deg); - transform: translateX(2px) rotate(1deg); - } - - 80% { - -webkit-transform: translateX(-2px) rotate(-1deg); - transform: translateX(-2px) rotate(-1deg); - } - - 90% { - -webkit-transform: translateX(1px) rotate(0); - transform: translateX(1px) rotate(0); - } - - 100% { - -webkit-transform: translateX(-1px) rotate(0); - transform: translateX(-1px) rotate(0); - } -} - -.hvr-icon-buzz-out { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; - padding-right: 2.2em; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; -} -.hvr-icon-buzz-out:before { - content: "\f023"; - position: absolute; - right: 1em; - padding: 0 1px; - font-family: FontAwesome; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.hvr-icon-buzz-out:hover:before, .hvr-icon-buzz-out:focus:before, .hvr-icon-buzz-out:active:before { - -webkit-animation-name: hvr-icon-buzz-out; - animation-name: hvr-icon-buzz-out; - -webkit-animation-duration: 0.75s; - animation-duration: 0.75s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -/* CURLS */ -/* Curl Top Left */ -.hvr-curl-top-left { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-curl-top-left:before { - pointer-events: none; - position: absolute; - content: ''; - height: 0; - width: 0; - top: 0; - left: 0; - background: white; - /* IE9 */ - background: linear-gradient(135deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%); - filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ffffff', endColorstr='#000000'); - /*For IE7-8-9*/ - z-index: 1000; - box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.4); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: width, height; - transition-property: width, height; -} -.hvr-curl-top-left:hover:before, .hvr-curl-top-left:focus:before, .hvr-curl-top-left:active:before { - width: 25px; - height: 25px; -} - -/* Curl Top Right */ -.hvr-curl-top-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-curl-top-right:before { - pointer-events: none; - position: absolute; - content: ''; - height: 0; - width: 0; - top: 0; - right: 0; - background: white; - /* IE9 */ - background: linear-gradient(225deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%); - box-shadow: -1px 1px 1px rgba(0, 0, 0, 0.4); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: width, height; - transition-property: width, height; -} -.hvr-curl-top-right:hover:before, .hvr-curl-top-right:focus:before, .hvr-curl-top-right:active:before { - width: 25px; - height: 25px; -} - -/* Curl Bottom Right */ -.hvr-curl-bottom-right { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-curl-bottom-right:before { - pointer-events: none; - position: absolute; - content: ''; - height: 0; - width: 0; - bottom: 0; - right: 0; - background: white; - /* IE9 */ - background: linear-gradient(315deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%); - box-shadow: -1px -1px 1px rgba(0, 0, 0, 0.4); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: width, height; - transition-property: width, height; -} -.hvr-curl-bottom-right:hover:before, .hvr-curl-bottom-right:focus:before, .hvr-curl-bottom-right:active:before { - width: 25px; - height: 25px; -} - -/* Curl Bottom Left */ -.hvr-curl-bottom-left { - display: inline-block; - vertical-align: middle; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: 0 0 1px rgba(0, 0, 0, 0); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -moz-osx-font-smoothing: grayscale; - position: relative; -} -.hvr-curl-bottom-left:before { - pointer-events: none; - position: absolute; - content: ''; - height: 0; - width: 0; - bottom: 0; - left: 0; - background: white; - /* IE9 */ - background: linear-gradient(45deg, white 45%, #aaaaaa 50%, #cccccc 56%, white 80%); - box-shadow: 1px -1px 1px rgba(0, 0, 0, 0.4); - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; - -webkit-transition-property: width, height; - transition-property: width, height; -} -.hvr-curl-bottom-left:hover:before, .hvr-curl-bottom-left:focus:before, .hvr-curl-bottom-left:active:before { - width: 25px; - height: 25px; -} diff --git a/dashboard/lib/animate.css/animate.css b/dashboard/lib/animate.css/animate.css deleted file mode 100644 index 635a02b5..00000000 --- a/dashboard/lib/animate.css/animate.css +++ /dev/null @@ -1,3272 +0,0 @@ -@charset "UTF-8"; - -/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2015 Daniel Eden -*/ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -.animated.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; -} - -.animated.bounceIn, -.animated.bounceOut { - -webkit-animation-duration: .75s; - animation-duration: .75s; -} - -.animated.flipOutX, -.animated.flipOutY { - -webkit-animation-duration: .75s; - animation-duration: .75s; -} - -@-webkit-keyframes bounce { - 0%, 20%, 53%, 80%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - -webkit-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - } - - 40%, 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0,-4px,0); - transform: translate3d(0,-4px,0); - } -} - -@keyframes bounce { - 0%, 20%, 53%, 80%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - -webkit-transform: translate3d(0,0,0); - transform: translate3d(0,0,0); - } - - 40%, 43% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - -webkit-transform: translate3d(0, -30px, 0); - transform: translate3d(0, -30px, 0); - } - - 70% { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); - -webkit-transform: translate3d(0, -15px, 0); - transform: translate3d(0, -15px, 0); - } - - 90% { - -webkit-transform: translate3d(0,-4px,0); - transform: translate3d(0,-4px,0); - } -} - -.bounce { - -webkit-animation-name: bounce; - animation-name: bounce; - -webkit-transform-origin: center bottom; - transform-origin: center bottom; -} - -@-webkit-keyframes flash { - 0%, 50%, 100% { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -@keyframes flash { - 0%, 50%, 100% { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -.flash { - -webkit-animation-name: flash; - animation-name: flash; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes pulse { - 0% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - 100% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes pulse { - 0% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 50% { - -webkit-transform: scale3d(1.05, 1.05, 1.05); - transform: scale3d(1.05, 1.05, 1.05); - } - - 100% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.pulse { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -@-webkit-keyframes rubberBand { - 0% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(.95, 1.05, 1); - transform: scale3d(.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, .95, 1); - transform: scale3d(1.05, .95, 1); - } - - 100% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes rubberBand { - 0% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 30% { - -webkit-transform: scale3d(1.25, 0.75, 1); - transform: scale3d(1.25, 0.75, 1); - } - - 40% { - -webkit-transform: scale3d(0.75, 1.25, 1); - transform: scale3d(0.75, 1.25, 1); - } - - 50% { - -webkit-transform: scale3d(1.15, 0.85, 1); - transform: scale3d(1.15, 0.85, 1); - } - - 65% { - -webkit-transform: scale3d(.95, 1.05, 1); - transform: scale3d(.95, 1.05, 1); - } - - 75% { - -webkit-transform: scale3d(1.05, .95, 1); - transform: scale3d(1.05, .95, 1); - } - - 100% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.rubberBand { - -webkit-animation-name: rubberBand; - animation-name: rubberBand; -} - -@-webkit-keyframes shake { - 0%, 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -@keyframes shake { - 0%, 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - 100% { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -@keyframes swing { - 20% { - -webkit-transform: rotate3d(0, 0, 1, 15deg); - transform: rotate3d(0, 0, 1, 15deg); - } - - 40% { - -webkit-transform: rotate3d(0, 0, 1, -10deg); - transform: rotate3d(0, 0, 1, -10deg); - } - - 60% { - -webkit-transform: rotate3d(0, 0, 1, 5deg); - transform: rotate3d(0, 0, 1, 5deg); - } - - 80% { - -webkit-transform: rotate3d(0, 0, 1, -5deg); - transform: rotate3d(0, 0, 1, -5deg); - } - - 100% { - -webkit-transform: rotate3d(0, 0, 1, 0deg); - transform: rotate3d(0, 0, 1, 0deg); - } -} - -.swing { - -webkit-transform-origin: top center; - transform-origin: top center; - -webkit-animation-name: swing; - animation-name: swing; -} - -@-webkit-keyframes tada { - 0% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, 20% { - -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - 100% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes tada { - 0% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } - - 10%, 20% { - -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); - transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); - } - - 100% { - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.tada { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes wobble { - 0% { - -webkit-transform: none; - transform: none; - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - 100% { - -webkit-transform: none; - transform: none; - } -} - -@keyframes wobble { - 0% { - -webkit-transform: none; - transform: none; - } - - 15% { - -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); - } - - 30% { - -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); - } - - 45% { - -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); - } - - 60% { - -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); - } - - 75% { - -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); - } - - 100% { - -webkit-transform: none; - transform: none; - } -} - -.wobble { - -webkit-animation-name: wobble; - animation-name: wobble; -} - -@-webkit-keyframes jello { - 11.1% { - -webkit-transform: none; - transform: none - } - - 22.2% { - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg) - } - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg) - } - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg) - } - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg) - } - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg) - } - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg) - } - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg) - } - 100% { - -webkit-transform: none; - transform: none - } -} - -@keyframes jello { - 11.1% { - -webkit-transform: none; - transform: none - } - - 22.2% { - - -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); - transform: skewX(-12.5deg) skewY(-12.5deg) - } - 33.3% { - -webkit-transform: skewX(6.25deg) skewY(6.25deg); - transform: skewX(6.25deg) skewY(6.25deg) - } - 44.4% { - -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); - transform: skewX(-3.125deg) skewY(-3.125deg) - } - 55.5% { - -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); - transform: skewX(1.5625deg) skewY(1.5625deg) - } - 66.6% { - -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); - transform: skewX(-0.78125deg) skewY(-0.78125deg) - } - 77.7% { - -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); - transform: skewX(0.390625deg) skewY(0.390625deg) - } - 88.8% { - -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); - transform: skewX(-0.1953125deg) skewY(-0.1953125deg) - } - 100% { - -webkit-transform: none; - transform: none - } -} - - - -.jello{ - -webkit-animation-name:jello; - animation-name:jello; - -webkit-transform-origin: center; - - transform-origin: center -} - -@-webkit-keyframes bounceIn { - 0%, 20%, 40%, 60%, 80%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(.97, .97, .97); - transform: scale3d(.97, .97, .97); - } - - 100% { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -@keyframes bounceIn { - 0%, 20%, 40%, 60%, 80%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 20% { - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 40% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(1.03, 1.03, 1.03); - transform: scale3d(1.03, 1.03, 1.03); - } - - 80% { - -webkit-transform: scale3d(.97, .97, .97); - transform: scale3d(.97, .97, .97); - } - - 100% { - opacity: 1; - -webkit-transform: scale3d(1, 1, 1); - transform: scale3d(1, 1, 1); - } -} - -.bounceIn { - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - 0%, 60%, 75%, 90%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - 100% { - -webkit-transform: none; - transform: none; - } -} - -@keyframes bounceInDown { - 0%, 60%, 75%, 90%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -3000px, 0); - transform: translate3d(0, -3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, 25px, 0); - transform: translate3d(0, 25px, 0); - } - - 75% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, 5px, 0); - transform: translate3d(0, 5px, 0); - } - - 100% { - -webkit-transform: none; - transform: none; - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -@-webkit-keyframes bounceInLeft { - 0%, 60%, 75%, 90%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - 100% { - -webkit-transform: none; - transform: none; - } -} - -@keyframes bounceInLeft { - 0%, 60%, 75%, 90%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(-3000px, 0, 0); - transform: translate3d(-3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(25px, 0, 0); - transform: translate3d(25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(-10px, 0, 0); - transform: translate3d(-10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(5px, 0, 0); - transform: translate3d(5px, 0, 0); - } - - 100% { - -webkit-transform: none; - transform: none; - } -} - -.bounceInLeft { - -webkit-animation-name: bounceInLeft; - animation-name: bounceInLeft; -} - -@-webkit-keyframes bounceInRight { - 0%, 60%, 75%, 90%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - 100% { - -webkit-transform: none; - transform: none; - } -} - -@keyframes bounceInRight { - 0%, 60%, 75%, 90%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(3000px, 0, 0); - transform: translate3d(3000px, 0, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(-25px, 0, 0); - transform: translate3d(-25px, 0, 0); - } - - 75% { - -webkit-transform: translate3d(10px, 0, 0); - transform: translate3d(10px, 0, 0); - } - - 90% { - -webkit-transform: translate3d(-5px, 0, 0); - transform: translate3d(-5px, 0, 0); - } - - 100% { - -webkit-transform: none; - transform: none; - } -} - -.bounceInRight { - -webkit-animation-name: bounceInRight; - animation-name: bounceInRight; -} - -@-webkit-keyframes bounceInUp { - 0%, 60%, 75%, 90%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes bounceInUp { - 0%, 60%, 75%, 90%, 100% { - -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); - } - - 0% { - opacity: 0; - -webkit-transform: translate3d(0, 3000px, 0); - transform: translate3d(0, 3000px, 0); - } - - 60% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 75% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 90% { - -webkit-transform: translate3d(0, -5px, 0); - transform: translate3d(0, -5px, 0); - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.bounceInUp { - -webkit-animation-name: bounceInUp; - animation-name: bounceInUp; -} - -@-webkit-keyframes bounceOut { - 20% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9); - } - - 50%, 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 100% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } -} - -@keyframes bounceOut { - 20% { - -webkit-transform: scale3d(.9, .9, .9); - transform: scale3d(.9, .9, .9); - } - - 50%, 55% { - opacity: 1; - -webkit-transform: scale3d(1.1, 1.1, 1.1); - transform: scale3d(1.1, 1.1, 1.1); - } - - 100% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } -} - -.bounceOut { - -webkit-animation-name: bounceOut; - animation-name: bounceOut; -} - -@-webkit-keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes bounceOutDown { - 20% { - -webkit-transform: translate3d(0, 10px, 0); - transform: translate3d(0, 10px, 0); - } - - 40%, 45% { - opacity: 1; - -webkit-transform: translate3d(0, -20px, 0); - transform: translate3d(0, -20px, 0); - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.bounceOutDown { - -webkit-animation-name: bounceOutDown; - animation-name: bounceOutDown; -} - -@-webkit-keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes bounceOutLeft { - 20% { - opacity: 1; - -webkit-transform: translate3d(20px, 0, 0); - transform: translate3d(20px, 0, 0); - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.bounceOutLeft { - -webkit-animation-name: bounceOutLeft; - animation-name: bounceOutLeft; -} - -@-webkit-keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes bounceOutRight { - 20% { - opacity: 1; - -webkit-transform: translate3d(-20px, 0, 0); - transform: translate3d(-20px, 0, 0); - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.bounceOutRight { - -webkit-animation-name: bounceOutRight; - animation-name: bounceOutRight; -} - -@-webkit-keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes bounceOutUp { - 20% { - -webkit-transform: translate3d(0, -10px, 0); - transform: translate3d(0, -10px, 0); - } - - 40%, 45% { - opacity: 1; - -webkit-transform: translate3d(0, 20px, 0); - transform: translate3d(0, 20px, 0); - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.bounceOutUp { - -webkit-animation-name: bounceOutUp; - animation-name: bounceOutUp; -} - -@-webkit-keyframes fadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@keyframes fadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInDownBig { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -@-webkit-keyframes fadeInLeft { - 0% { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInLeft { - 0% { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInLeft { - -webkit-animation-name: fadeInLeft; - animation-name: fadeInLeft; -} - -@-webkit-keyframes fadeInLeftBig { - 0% { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInLeftBig { - 0% { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInLeftBig { - -webkit-animation-name: fadeInLeftBig; - animation-name: fadeInLeftBig; -} - -@-webkit-keyframes fadeInRight { - 0% { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInRight { - 0% { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInRight { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; -} - -@-webkit-keyframes fadeInRightBig { - 0% { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInRightBig { - 0% { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInRightBig { - -webkit-animation-name: fadeInRightBig; - animation-name: fadeInRightBig; -} - -@-webkit-keyframes fadeInUp { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInUp { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp; -} - -@-webkit-keyframes fadeInUpBig { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInUpBig { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.fadeInUpBig { - -webkit-animation-name: fadeInUpBig; - animation-name: fadeInUpBig; -} - -@-webkit-keyframes fadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} - -@keyframes fadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes fadeOutDown { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutDownBig { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -@keyframes fadeOutDownBig { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, 2000px, 0); - transform: translate3d(0, 2000px, 0); - } -} - -.fadeOutDownBig { - -webkit-animation-name: fadeOutDownBig; - animation-name: fadeOutDownBig; -} - -@-webkit-keyframes fadeOutLeft { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes fadeOutLeft { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.fadeOutLeft { - -webkit-animation-name: fadeOutLeft; - animation-name: fadeOutLeft; -} - -@-webkit-keyframes fadeOutLeftBig { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -@keyframes fadeOutLeftBig { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(-2000px, 0, 0); - transform: translate3d(-2000px, 0, 0); - } -} - -.fadeOutLeftBig { - -webkit-animation-name: fadeOutLeftBig; - animation-name: fadeOutLeftBig; -} - -@-webkit-keyframes fadeOutRight { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes fadeOutRight { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.fadeOutRight { - -webkit-animation-name: fadeOutRight; - animation-name: fadeOutRight; -} - -@-webkit-keyframes fadeOutRightBig { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -@keyframes fadeOutRightBig { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(2000px, 0, 0); - transform: translate3d(2000px, 0, 0); - } -} - -.fadeOutRightBig { - -webkit-animation-name: fadeOutRightBig; - animation-name: fadeOutRightBig; -} - -@-webkit-keyframes fadeOutUp { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes fadeOutUp { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -@-webkit-keyframes fadeOutUpBig { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -@keyframes fadeOutUpBig { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(0, -2000px, 0); - transform: translate3d(0, -2000px, 0); - } -} - -.fadeOutUpBig { - -webkit-animation-name: fadeOutUpBig; - animation-name: fadeOutUpBig; -} - -@-webkit-keyframes flip { - 0% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(.95, .95, .95); - transform: perspective(400px) scale3d(.95, .95, .95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 100% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -@keyframes flip { - 0% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - transform: perspective(400px) rotate3d(0, 1, 0, -360deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) scale3d(.95, .95, .95); - transform: perspective(400px) scale3d(.95, .95, .95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 100% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -.animated.flip { - -webkit-backface-visibility: visible; - backface-visibility: visible; - -webkit-animation-name: flip; - animation-name: flip; -} - -@-webkit-keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - 100% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - transform: perspective(400px) rotate3d(1, 0, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - transform: perspective(400px) rotate3d(1, 0, 0, -5deg); - } - - 100% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInX { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInX; - animation-name: flipInX; -} - -@-webkit-keyframes flipInY { - 0% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - 100% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -@keyframes flipInY { - 0% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - transform: perspective(400px) rotate3d(0, 1, 0, -20deg); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 60% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - transform: perspective(400px) rotate3d(0, 1, 0, 10deg); - opacity: 1; - } - - 80% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - transform: perspective(400px) rotate3d(0, 1, 0, -5deg); - } - - 100% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } -} - -.flipInY { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInY; - animation-name: flipInY; -} - -@-webkit-keyframes flipOutX { - 0% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutX { - 0% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - transform: perspective(400px) rotate3d(1, 0, 0, -20deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - transform: perspective(400px) rotate3d(1, 0, 0, 90deg); - opacity: 0; - } -} - -.flipOutX { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; -} - -@-webkit-keyframes flipOutY { - 0% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -@keyframes flipOutY { - 0% { - -webkit-transform: perspective(400px); - transform: perspective(400px); - } - - 30% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - transform: perspective(400px) rotate3d(0, 1, 0, -15deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - transform: perspective(400px) rotate3d(0, 1, 0, 90deg); - opacity: 0; - } -} - -.flipOutY { - -webkit-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipOutY; - animation-name: flipOutY; -} - -@-webkit-keyframes lightSpeedIn { - 0% { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - 100% { - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes lightSpeedIn { - 0% { - -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); - transform: translate3d(100%, 0, 0) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: skewX(20deg); - transform: skewX(20deg); - opacity: 1; - } - - 80% { - -webkit-transform: skewX(-5deg); - transform: skewX(-5deg); - opacity: 1; - } - - 100% { - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.lightSpeedIn { - -webkit-animation-name: lightSpeedIn; - animation-name: lightSpeedIn; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -@-webkit-keyframes lightSpeedOut { - 0% { - opacity: 1; - } - - 100% { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -@keyframes lightSpeedOut { - 0% { - opacity: 1; - } - - 100% { - -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); - transform: translate3d(100%, 0, 0) skewX(30deg); - opacity: 0; - } -} - -.lightSpeedOut { - -webkit-animation-name: lightSpeedOut; - animation-name: lightSpeedOut; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} - -@-webkit-keyframes rotateIn { - 0% { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateIn { - 0% { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, -200deg); - transform: rotate3d(0, 0, 1, -200deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateIn { - -webkit-animation-name: rotateIn; - animation-name: rotateIn; -} - -@-webkit-keyframes rotateInDownLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateInDownLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateInDownLeft { - -webkit-animation-name: rotateInDownLeft; - animation-name: rotateInDownLeft; -} - -@-webkit-keyframes rotateInDownRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateInDownRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateInDownRight { - -webkit-animation-name: rotateInDownRight; - animation-name: rotateInDownRight; -} - -@-webkit-keyframes rotateInUpLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateInUpLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateInUpLeft { - -webkit-animation-name: rotateInUpLeft; - animation-name: rotateInUpLeft; -} - -@-webkit-keyframes rotateInUpRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -@keyframes rotateInUpRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -90deg); - transform: rotate3d(0, 0, 1, -90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: none; - transform: none; - opacity: 1; - } -} - -.rotateInUpRight { - -webkit-animation-name: rotateInUpRight; - animation-name: rotateInUpRight; -} - -@-webkit-keyframes rotateOut { - 0% { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - 100% { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -@keyframes rotateOut { - 0% { - -webkit-transform-origin: center; - transform-origin: center; - opacity: 1; - } - - 100% { - -webkit-transform-origin: center; - transform-origin: center; - -webkit-transform: rotate3d(0, 0, 1, 200deg); - transform: rotate3d(0, 0, 1, 200deg); - opacity: 0; - } -} - -.rotateOut { - -webkit-animation-name: rotateOut; - animation-name: rotateOut; -} - -@-webkit-keyframes rotateOutDownLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, 45deg); - transform: rotate3d(0, 0, 1, 45deg); - opacity: 0; - } -} - -.rotateOutDownLeft { - -webkit-animation-name: rotateOutDownLeft; - animation-name: rotateOutDownLeft; -} - -@-webkit-keyframes rotateOutDownRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutDownRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutDownRight { - -webkit-animation-name: rotateOutDownRight; - animation-name: rotateOutDownRight; -} - -@-webkit-keyframes rotateOutUpLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -@keyframes rotateOutUpLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate3d(0, 0, 1, -45deg); - transform: rotate3d(0, 0, 1, -45deg); - opacity: 0; - } -} - -.rotateOutUpLeft { - -webkit-animation-name: rotateOutUpLeft; - animation-name: rotateOutUpLeft; -} - -@-webkit-keyframes rotateOutUpRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate3d(0, 0, 1, 90deg); - transform: rotate3d(0, 0, 1, 90deg); - opacity: 0; - } -} - -.rotateOutUpRight { - -webkit-animation-name: rotateOutUpRight; - animation-name: rotateOutUpRight; -} - -@-webkit-keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - 100% { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -@keyframes hinge { - 0% { - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, 60% { - -webkit-transform: rotate3d(0, 0, 1, 80deg); - transform: rotate3d(0, 0, 1, 80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40%, 80% { - -webkit-transform: rotate3d(0, 0, 1, 60deg); - transform: rotate3d(0, 0, 1, 60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - 100% { - -webkit-transform: translate3d(0, 700px, 0); - transform: translate3d(0, 700px, 0); - opacity: 0; - } -} - -.hinge { - -webkit-animation-name: hinge; - animation-name: hinge; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollIn { - 0% { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes rollIn { - 0% { - opacity: 0; - -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); - } - - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -.rollIn { - -webkit-animation-name: rollIn; - animation-name: rollIn; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -@keyframes rollOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); - } -} - -.rollOut { - -webkit-animation-name: rollOut; - animation-name: rollOut; -} - -@-webkit-keyframes zoomIn { - 0% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 50% { - opacity: 1; - } -} - -@keyframes zoomIn { - 0% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 50% { - opacity: 1; - } -} - -.zoomIn { - -webkit-animation-name: zoomIn; - animation-name: zoomIn; -} - -@-webkit-keyframes zoomInDown { - 0% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomInDown { - 0% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomInDown { - -webkit-animation-name: zoomInDown; - animation-name: zoomInDown; -} - -@-webkit-keyframes zoomInLeft { - 0% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); - transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomInLeft { - 0% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); - transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomInLeft { - -webkit-animation-name: zoomInLeft; - animation-name: zoomInLeft; -} - -@-webkit-keyframes zoomInRight { - 0% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); - transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomInRight { - 0% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); - transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomInRight { - -webkit-animation-name: zoomInRight; - animation-name: zoomInRight; -} - -@-webkit-keyframes zoomInUp { - 0% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomInUp { - 0% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 60% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomInUp { - -webkit-animation-name: zoomInUp; - animation-name: zoomInUp; -} - -@-webkit-keyframes zoomOut { - 0% { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 100% { - opacity: 0; - } -} - -@keyframes zoomOut { - 0% { - opacity: 1; - } - - 50% { - opacity: 0; - -webkit-transform: scale3d(.3, .3, .3); - transform: scale3d(.3, .3, .3); - } - - 100% { - opacity: 0; - } -} - -.zoomOut { - -webkit-animation-name: zoomOut; - animation-name: zoomOut; -} - -@-webkit-keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 100% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomOutDown { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 100% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomOutDown { - -webkit-animation-name: zoomOutDown; - animation-name: zoomOutDown; -} - -@-webkit-keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); - } - - 100% { - opacity: 0; - -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); - transform: scale(.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -@keyframes zoomOutLeft { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); - } - - 100% { - opacity: 0; - -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); - transform: scale(.1) translate3d(-2000px, 0, 0); - -webkit-transform-origin: left center; - transform-origin: left center; - } -} - -.zoomOutLeft { - -webkit-animation-name: zoomOutLeft; - animation-name: zoomOutLeft; -} - -@-webkit-keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); - } - - 100% { - opacity: 0; - -webkit-transform: scale(.1) translate3d(2000px, 0, 0); - transform: scale(.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -@keyframes zoomOutRight { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); - transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); - } - - 100% { - opacity: 0; - -webkit-transform: scale(.1) translate3d(2000px, 0, 0); - transform: scale(.1) translate3d(2000px, 0, 0); - -webkit-transform-origin: right center; - transform-origin: right center; - } -} - -.zoomOutRight { - -webkit-animation-name: zoomOutRight; - animation-name: zoomOutRight; -} - -@-webkit-keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 100% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -@keyframes zoomOutUp { - 40% { - opacity: 1; - -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); - -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); - } - - 100% { - opacity: 0; - -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); - transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); - -webkit-transform-origin: center bottom; - transform-origin: center bottom; - -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); - } -} - -.zoomOutUp { - -webkit-animation-name: zoomOutUp; - animation-name: zoomOutUp; -} - -@-webkit-keyframes slideInDown { - 0% { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInDown { - 0% { - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - visibility: visible; - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInDown { - -webkit-animation-name: slideInDown; - animation-name: slideInDown; -} - -@-webkit-keyframes slideInLeft { - 0% { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInLeft { - 0% { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - visibility: visible; - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInLeft { - -webkit-animation-name: slideInLeft; - animation-name: slideInLeft; -} - -@-webkit-keyframes slideInRight { - 0% { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInRight { - 0% { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - visibility: visible; - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInRight { - -webkit-animation-name: slideInRight; - animation-name: slideInRight; -} - -@-webkit-keyframes slideInUp { - 0% { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -@keyframes slideInUp { - 0% { - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - visibility: visible; - } - - 100% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } -} - -.slideInUp { - -webkit-animation-name: slideInUp; - animation-name: slideInUp; -} - -@-webkit-keyframes slideOutDown { - 0% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 100% { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -@keyframes slideOutDown { - 0% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 100% { - visibility: hidden; - -webkit-transform: translate3d(0, 100%, 0); - transform: translate3d(0, 100%, 0); - } -} - -.slideOutDown { - -webkit-animation-name: slideOutDown; - animation-name: slideOutDown; -} - -@-webkit-keyframes slideOutLeft { - 0% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 100% { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -@keyframes slideOutLeft { - 0% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 100% { - visibility: hidden; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } -} - -.slideOutLeft { - -webkit-animation-name: slideOutLeft; - animation-name: slideOutLeft; -} - -@-webkit-keyframes slideOutRight { - 0% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 100% { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -@keyframes slideOutRight { - 0% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 100% { - visibility: hidden; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } -} - -.slideOutRight { - -webkit-animation-name: slideOutRight; - animation-name: slideOutRight; -} - -@-webkit-keyframes slideOutUp { - 0% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 100% { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -@keyframes slideOutUp { - 0% { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - - 100% { - visibility: hidden; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } -} - -.slideOutUp { - -webkit-animation-name: slideOutUp; - animation-name: slideOutUp; -} diff --git a/dashboard/lib/bootstrap/js/bootstrap.js b/dashboard/lib/bootstrap/js/bootstrap.js deleted file mode 100644 index 5debfd7d..00000000 --- a/dashboard/lib/bootstrap/js/bootstrap.js +++ /dev/null @@ -1,2363 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under the MIT license - */ - -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} - -+function ($) { - 'use strict'; - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') - } -}(jQuery); - -/* ======================================================================== - * Bootstrap: transition.js v3.3.5 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.5 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.5' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.5 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.5' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state += 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked')) changed = false - $parent.find('.active').removeClass('active') - this.$element.addClass('active') - } else if ($input.prop('type') == 'checkbox') { - if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false - this.$element.toggleClass('active') - } - $input.prop('checked', this.$element.hasClass('active')) - if (changed) $input.trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - this.$element.toggleClass('active') - } - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - Plugin.call($btn, 'toggle') - if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.5 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = null - this.sliding = null - this.interval = null - this.$active = null - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.5' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var activeIndex = this.getItemIndex(active) - var willWrap = (direction == 'prev' && activeIndex === 0) - || (direction == 'next' && activeIndex == (this.$items.length - 1)) - if (willWrap && !this.options.wrap) return active - var delta = direction == 'prev' ? -1 : 1 - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var that = this - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.5 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + - '[data-toggle="collapse"][data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.5' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.5 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.5' - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) - }) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $(document.createElement('div')) - .addClass('dropdown-backdrop') - .insertAfter($(this)) - .on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger('shown.bs.dropdown', relatedTarget) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if (!isActive && e.which != 27 || isActive && e.which == 27) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.disabled):visible a' - var $items = $parent.find('.dropdown-menu' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: modal.js v3.3.5 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$dialog = this.$element.find('.modal-dialog') - this.$backdrop = null - this.isShown = null - this.originalBodyPad = null - this.scrollbarWidth = 0 - this.ignoreBackdropClick = false - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.5' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.setScrollbar() - this.$body.addClass('modal-open') - - this.escape() - this.resize() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.$dialog.on('mousedown.dismiss.bs.modal', function () { - that.$element.one('mouseup.dismiss.bs.modal', function (e) { - if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true - }) - }) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - that.adjustDialog() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element.addClass('in') - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$dialog // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - this.resize() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .off('click.dismiss.bs.modal') - .off('mouseup.dismiss.bs.modal') - - this.$dialog.off('mousedown.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.resize = function () { - if (this.isShown) { - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) - } else { - $(window).off('resize.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetAdjustments() - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $(document.createElement('div')) - .addClass('modal-backdrop ' + animate) - .appendTo(this.$body) - - this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { - if (this.ignoreBackdropClick) { - this.ignoreBackdropClick = false - return - } - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus() - : this.hide() - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - // these following methods are used to handle overflowing modals - - Modal.prototype.handleUpdate = function () { - this.adjustDialog() - } - - Modal.prototype.adjustDialog = function () { - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight - - this.$element.css({ - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' - }) - } - - Modal.prototype.resetAdjustments = function () { - this.$element.css({ - paddingLeft: '', - paddingRight: '' - }) - } - - Modal.prototype.checkScrollbar = function () { - var fullWindowWidth = window.innerWidth - if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 - var documentElementRect = document.documentElement.getBoundingClientRect() - fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) - } - this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - this.originalBodyPad = document.body.style.paddingRight || '' - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', this.originalBodyPad) - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.5 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = null - this.options = null - this.enabled = null - this.timeout = null - this.hoverState = null - this.$element = null - this.inState = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.5' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) - this.inState = { click: false, hover: false, focus: false } - - if (this.$element[0] instanceof document.constructor && !this.options.selector) { - throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') - } - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true - } - - if (self.tip().hasClass('in') || self.hoverState == 'in') { - self.hoverState = 'in' - return - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.isInStateTrue = function () { - for (var key in this.inState) { - if (this.inState[key]) return true - } - - return false - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - if (obj instanceof $.Event) { - self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false - } - - if (self.isInStateTrue()) return - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - this.$element.trigger('inserted.bs.' + this.type) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var viewportDim = this.getPosition(this.$viewport) - - placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top += marginTop - offset.left += marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { - this.arrow() - .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isVertical ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = $(this.$tip) - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && $tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - if (!this.$tip) { - this.$tip = $(this.options.template) - if (this.$tip.length != 1) { - throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') - } - } - return this.$tip - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - if (e) { - self.inState.click = !self.inState.click - if (self.isInStateTrue()) self.enter(self) - else self.leave(self) - } else { - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - if (that.$tip) { - that.$tip.detach() - } - that.$tip = null - that.$arrow = null - that.$viewport = null - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: popover.js v3.3.5 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.5' - - Popover.DEFAULTS = $.extend({}, $.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>' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - - if (!data && /destroy|hide/.test(option)) return - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.5 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - this.$body = $(document.body) - this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.5' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var that = this - var offsetMethod = 'offset' - var offsetBase = 0 - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - that.offsets.push(this[0]) - that.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tab.js v3.3.5 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - // jscs:disable requireDollarBeforejQueryAssignment - this.element = $(element) - // jscs:enable requireDollarBeforejQueryAssignment - } - - Tab.VERSION = '3.3.5' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu').length) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: affix.js v3.3.5 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = null - this.unpin = null - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.5' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && scrollTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = Math.max($(document).height(), $(document.body).height()) - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); diff --git a/dashboard/lib/datatables-plugins/.bower.json b/dashboard/lib/datatables-plugins/.bower.json deleted file mode 100644 index 46150051..00000000 --- a/dashboard/lib/datatables-plugins/.bower.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "datatables-plugins", - "homepage": "https://github.com/DataTables/Plugins", - "version": "1.10.7", - "_release": "1.10.7", - "_resolution": { - "type": "version", - "tag": "1.10.7", - "commit": "87a79eac98568f755adb5184a944c995eb1cb6f5" - }, - "_source": "git://github.com/DataTables/Plugins.git", - "_target": "~1.10.7", - "_originalSource": "datatables-plugins", - "_direct": true -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/License.txt b/dashboard/lib/datatables-plugins/License.txt deleted file mode 100644 index 9ade2f1b..00000000 --- a/dashboard/lib/datatables-plugins/License.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2010-2015 SpryMedia Limited -http://datatables.net - -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/dashboard/lib/datatables-plugins/Readme.md b/dashboard/lib/datatables-plugins/Readme.md deleted file mode 100644 index cdf37551..00000000 --- a/dashboard/lib/datatables-plugins/Readme.md +++ /dev/null @@ -1,21 +0,0 @@ -DataTables Plugins -================== - -This repository contains a collection of plug-ins for the jQuery [DataTables](http://datatables.net) table enhancer. These plug-ins are feature enhancing for the DataTables library, adding extra options to core functionality such as additional sort algorithms, API methods and pagination controls. The plug-ins should not be confused with DataTables "extensions" which are more significant software libraries which add additional features to DataTables. - -This repository holds the following plug-in types for DataTables (among others): - -* Sorting - * Type based - * Custom data source based -* API -* Filtering - * Type based - * Row based -* Internationalisation translations -* Type detection -* Pagination -* Integration scripts - * Twitter Bootstrap - -Please refer to the DataTables [plug-in documentation](http://datatables.net/plug-ins) for details on how to use these plug-ins. diff --git a/dashboard/lib/datatables-plugins/api/average().js b/dashboard/lib/datatables-plugins/api/average().js deleted file mode 100644 index 41e095b2..00000000 --- a/dashboard/lib/datatables-plugins/api/average().js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * It can sometimes be useful to get the average of data in an API result set, - * be it from a column, or a collection of cells. This method provides exactly - * that ability. - * - * @name average() - * @summary Average the values in a data set. - * @author [Allan Jardine](http://sprymedia.co.uk) - * @requires DataTables 1.10+ - * - * @returns {Number} Calculated average - * - * @example - * // Average a column - * var table = $('#example').DataTable(); - * table.column( 3 ).data().average(); - * - * @example - * // Average two cells - * var table = $('#example').DataTable(); - * table.cells( 0, [3,4] ).data().average(); - */ - -jQuery.fn.dataTable.Api.register( 'average()', function () { - var data = this.flatten(); - var sum = data.reduce( function ( a, b ) { - return (a*1) + (b*1); // cast values in-case they are strings - } ); - - return sum / data.length; -} ); - diff --git a/dashboard/lib/datatables-plugins/api/column().title().js b/dashboard/lib/datatables-plugins/api/column().title().js deleted file mode 100644 index 56394eac..00000000 --- a/dashboard/lib/datatables-plugins/api/column().title().js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * This plug-in will read the text from the header cell of a column, returning - * that value. - * - * @name column().title() - * @summary Get the title of a column - * @author Alejandro Navarro - * @requires DataTables 1.10+ - * - * @returns {String} Column title - * - * @example - * // Read the title text of column index 3 - * var table = $('#example').DataTable(); - * table.column( 3 ).title(); - */ - -$.fn.dataTable.Api.register( 'column().title()', function () { - var colheader = this.header(); - return $(colheader).text().trim(); -} ); \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/api/columns().order().js b/dashboard/lib/datatables-plugins/api/columns().order().js deleted file mode 100644 index 46b64883..00000000 --- a/dashboard/lib/datatables-plugins/api/columns().order().js +++ /dev/null @@ -1,46 +0,0 @@ -/** - * The DataTables core library provides the ability to set the ordering via the - * `dt-api column().order()` method, but there is no plural equivalent. While - * multi-column ordering can be set using `dt-api order()` that method requires - * that column indexes be used. - * - * This plug-in provides the plural `columns().order()` method so you can set - * multi-column ordering, while retaining the benefits of the `dt-api columns()` - * selector options. - * - * @name columns().order() - * @summary Apply multi-column ordering through the columns() API method. - * @author [Allan Jardine](http://sprymedia.co.uk) - * @requires DataTables 1.10+ - * @param {string|array} dir The order to apply to the columns selected. This - * can be a string (`asc` or `desc`) which will be applied to all columns, - * or an array (again `asc` or `desc` as the elements in the array) which is - * the same length as the number of columns selected, and will be applied to - * the columns in sequence. - * - * @returns {DataTables.Api} DataTables API instance - * - * @example - * // Apply multi-column sorting with a common direction - * table.columns( [ 1, 2 ] ).order( 'desc' ).draw(); - * - * @example - * // Multi-column sorting with individual direction for the columns - * table.columns( [ 1, 2 ] ).order( [ 'desc', 'asc' ] ).draw(); - * - * @example - * // Multi-column sorting based on a name selector - * table.columns( [ 'sign_up_date:name', 'user_name:name' ] ).order( 'desc' ).draw(); - */ - -$.fn.dataTable.Api.register( 'columns().order()', function ( dir ) { - return this.iterator( 'columns', function ( settings, columns ) { - var a = []; - - for ( var i=0, ien=columns.length ; i<ien ; i++ ) { - a.push( [ columns[i], $.isArray(dir) ? dir[i] : dir ] ); - } - - new $.fn.dataTable.Api( settings ).order( a ); - } ); -} ); diff --git a/dashboard/lib/datatables-plugins/api/fnAddDataAndDisplay.js b/dashboard/lib/datatables-plugins/api/fnAddDataAndDisplay.js deleted file mode 100644 index 44416586..00000000 --- a/dashboard/lib/datatables-plugins/api/fnAddDataAndDisplay.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Add a new row to the table and display it on the screen by jumping the - * pagination to the required location. This function also returns an object - * with the added `dt-tag TR` element and it's index in `aoData` such that you - * could provide an effect (fade for example) to show which row has been added. - * - * This function is a drop in replacement for `fnAddData` with one important - * exception, it will only take a 1D array or an object, and not a 2D array - * (i.e. it will not add multiple rows like `fnAddData`). - * - * @name fnAddDataAndDisplay - * @summary Add data and shift the paging to display it immediately - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @param {data} aData Data to add to the table - * @returns {object} Object with `nTr` and `iPos` parameters, where the former - * is the added `dt-tag tr` element and the latter is the row's index. - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * table.fnAddDataAndDisplay( [ 1, 2, 3, 4, 5, ... ] ); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnAddDataAndDisplay = function ( oSettings, aData ) -{ - /* Add the data */ - var iAdded = this.oApi._fnAddData( oSettings, aData ); - var nAdded = oSettings.aoData[ iAdded ].nTr; - - /* Need to re-filter and re-sort the table to get positioning correct, not perfect - * as this will actually redraw the table on screen, but the update should be so fast (and - * possibly not alter what is already on display) that the user will not notice - */ - this.oApi._fnReDraw( oSettings ); - - /* Find it's position in the table */ - var iPos = -1; - for( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ) - { - if( oSettings.aoData[ oSettings.aiDisplay[i] ].nTr == nAdded ) - { - iPos = i; - break; - } - } - - /* Get starting point, taking account of paging */ - if( iPos >= 0 ) - { - oSettings._iDisplayStart = ( Math.floor(i / oSettings._iDisplayLength) ) * oSettings._iDisplayLength; - if ( this.oApi._fnCalculateEnd ) { - this.oApi._fnCalculateEnd( oSettings ); - } - } - - this.oApi._fnDraw( oSettings ); - return { - "nTr": nAdded, - "iPos": iAdded - }; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnAddTr.js b/dashboard/lib/datatables-plugins/api/fnAddTr.js deleted file mode 100644 index 594d8e40..00000000 --- a/dashboard/lib/datatables-plugins/api/fnAddTr.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * This method will add an existing `dt-tag tr` element to a DataTable. This can - * be useful for maintaining custom classes and other attributes which have - * been explicitly assigned to the row. - * - * DataTables 1.10+ has `dt-api row.add()` and `dt-api rows.add()` which have - * this ability built in, and extend it to be able to use jQuery objects as well - * as plain `dt-tag tr` elements. As such this method is marked deprecated, but - * is available for use with legacy version of DataTables. Please use the - * new API if you are used DataTables 1.10 or newer. - * - * @name fnAddTr - * @summary Add a `dt-tag tr` element to the table - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @param {node} nTr `dt-tag tr` element to add to the table - * @param {boolean} [bRedraw=false] Indicate if the table should do a redraw or not. - * - * @example - * var table = $('#example').dataTable(); - * table.fnAddTr( $('<tr>'+ - * '<td>1</td>'+ - * '<td>2</td>'+ - * '<td>3</td>'+ - * '</tr>')[0] - * ); - */ - -jQuery.fn.dataTableExt.oApi.fnAddTr = function ( oSettings, nTr, bRedraw ) { - if ( typeof bRedraw == 'undefined' ) - { - bRedraw = true; - } - - var nTds = nTr.getElementsByTagName('td'); - if ( nTds.length != oSettings.aoColumns.length ) - { - alert( 'Warning: not adding new TR - columns and TD elements must match' ); - return; - } - - var aData = []; - var aInvisible = []; - var i; - for ( i=0 ; i<nTds.length ; i++ ) - { - aData.push( nTds[i].innerHTML ); - if (!oSettings.aoColumns[i].bVisible) - { - aInvisible.push( i ); - } - } - - /* Add the data and then replace DataTable's generated TR with ours */ - var iIndex = this.oApi._fnAddData( oSettings, aData ); - nTr._DT_RowIndex = iIndex; - oSettings.aoData[ iIndex ].nTr = nTr; - - oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - - // Hidding invisible columns - for ( i = (aInvisible.length - 1) ; i >= 0 ; i-- ) - { - oSettings.aoData[iIndex]._anHidden[ i ] = nTds[aInvisible[i]]; - nTr.removeChild( nTds[aInvisible[i]] ); - } - - // Redraw - if ( bRedraw ) - { - this.oApi._fnReDraw( oSettings ); - } -}; diff --git a/dashboard/lib/datatables-plugins/api/fnColumnIndexToVisible.js b/dashboard/lib/datatables-plugins/api/fnColumnIndexToVisible.js deleted file mode 100644 index 2e106ec1..00000000 --- a/dashboard/lib/datatables-plugins/api/fnColumnIndexToVisible.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * When DataTables removes columns from the display (`bVisible` or - * `fnSetColumnVis`) it removes these elements from the DOM, effecting the index - * value for the column positions. This function converts the data column index - * (i.e. all columns regardless of visibility) into a visible column index. - * - * DataTables 1.10+ has this ability built-in through the - * `dt-api column.index()` method. As such this method is marked deprecated, but - * is available for use with legacy version of DataTables. - * - * @name fnColumnIndexToVisible - * @summary Convert a column data index to a visible index. - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @param {integer} iMatch Column data index to convert to visible index - * @returns {integer} Visible column index - * - * @example - * var table = $('#example').dataTable( { - * aoColumnDefs: [ - * { bVisible: false, aTargets: [1] } - * ] - * } ); - * - * // This will show 1 - * alert( 'Column 2 visible index: '+table.fnColumnIndexToVisible(2) ); - */ - -jQuery.fn.dataTableExt.oApi.fnColumnIndexToVisible = function ( oSettings, iMatch ) -{ - return oSettings.oApi._fnColumnIndexToVisible( oSettings, iMatch ); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnDataUpdate.js b/dashboard/lib/datatables-plugins/api/fnDataUpdate.js deleted file mode 100644 index 371e3668..00000000 --- a/dashboard/lib/datatables-plugins/api/fnDataUpdate.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Update the internal data for a `dt-tag tr` element based on what is used in the - * DOM. You will likely want to call fnDraw() after this function. - * - * DataTables 1.10+ has this ability built-in through the - * `dt-api row().invalidate()` method. As such this method is marked deprecated, - * but is available for use with legacy version of DataTables. Please use the - * new API if you are used DataTables 1.10 or newer. - * - * @name fnDataUpdate - * @summary Update DataTables cached data from the DOM - * @author Lior Gerson - * @deprecated - * - * @param {node} nTr `dt-tag tr` element to get the data from - * @param {integer} iRowIndex Row's position in the table (`fnGetPosition`). - */ - -jQuery.fn.dataTableExt.oApi.fnDataUpdate = function ( oSettings, nRowObject, iRowIndex ) -{ - jQuery(nRowObject).find("TD").each( function(i) { - var iColIndex = oSettings.oApi._fnVisibleToColumnIndex( oSettings, i ); - oSettings.oApi._fnSetCellData( oSettings, iRowIndex, iColIndex, jQuery(this).html() ); - } ); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnDisplayRow.js b/dashboard/lib/datatables-plugins/api/fnDisplayRow.js deleted file mode 100644 index ce478344..00000000 --- a/dashboard/lib/datatables-plugins/api/fnDisplayRow.js +++ /dev/null @@ -1,46 +0,0 @@ -/** - * This plug-in will take a `dt-tag tr` element and alter the table's paging - * to make that `dt-tag tr` element (i.e. that row) visible. - * - * @name fnDisplayRow - * @summary Shift the table's paging to display a given `dt-tag tr` element - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @param {node} nRow Row to display - * - * @example - * // Display the 21st row in the table - * var table = $('#example').dataTable(); - * table.fnDisplayRow( table.fnGetNodes()[20] ); - */ - -jQuery.fn.dataTableExt.oApi.fnDisplayRow = function ( oSettings, nRow ) -{ - // Account for the "display" all case - row is already displayed - if ( oSettings._iDisplayLength == -1 ) - { - return; - } - - // Find the node in the table - var iPos = -1; - for( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ) - { - if( oSettings.aoData[ oSettings.aiDisplay[i] ].nTr == nRow ) - { - iPos = i; - break; - } - } - - // Alter the start point of the paging display - if( iPos >= 0 ) - { - oSettings._iDisplayStart = ( Math.floor(i / oSettings._iDisplayLength) ) * oSettings._iDisplayLength; - if ( this.oApi._fnCalculateEnd ) { - this.oApi._fnCalculateEnd( oSettings ); - } - } - - this.oApi._fnDraw( oSettings ); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnDisplayStart.js b/dashboard/lib/datatables-plugins/api/fnDisplayStart.js deleted file mode 100644 index 4bb273bf..00000000 --- a/dashboard/lib/datatables-plugins/api/fnDisplayStart.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Set the point at which DataTables will start it's display of data in the - * table. - * - * @name fnDisplayStart - * @summary Change the table's paging display start. - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @param {integer} iStart Display start index. - * @param {boolean} [bRedraw=false] Indicate if the table should do a redraw or not. - * - * @example - * var table = $('#example').dataTable(); - * table.fnDisplayStart( 21 ); - */ - -jQuery.fn.dataTableExt.oApi.fnDisplayStart = function ( oSettings, iStart, bRedraw ) -{ - if ( typeof bRedraw == 'undefined' ) { - bRedraw = true; - } - - oSettings._iDisplayStart = iStart; - if ( oSettings.oApi._fnCalculateEnd ) { - oSettings.oApi._fnCalculateEnd( oSettings ); - } - - if ( bRedraw ) { - oSettings.oApi._fnDraw( oSettings ); - } -}; diff --git a/dashboard/lib/datatables-plugins/api/fnFakeRowspan.js b/dashboard/lib/datatables-plugins/api/fnFakeRowspan.js deleted file mode 100644 index e3d9f48b..00000000 --- a/dashboard/lib/datatables-plugins/api/fnFakeRowspan.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Creates `rowspan` cells in a column when there are two or more cells in a - * row with the same content, effectively grouping them together visually. - * - * **Note** - this plug-in currently only operates correctly with - * **server-side processing**. - * - * @name fnFakeRowspan - * @summary Create a rowspan for cells which share data - * @author Fredrik Wendel - * - * @param {interger} iColumn Column index to have row span - * @param {boolean} [bCaseSensitive=true] If the data check should be case - * sensitive or not. - * @returns {jQuery} jQuery instance - * - * @example - * $('#example').dataTable().fnFakeRowspan(3); - */ - -jQuery.fn.dataTableExt.oApi.fnFakeRowspan = function ( oSettings, iColumn, bCaseSensitive ) { - /* Fail silently on missing/errorenous parameter data. */ - if (isNaN(iColumn)) { - return false; - } - - if (iColumn < 0 || iColumn > oSettings.aoColumns.length-1) { - alert ('Invalid column number choosen, must be between 0 and ' + (oSettings.aoColumns.length-1)); - return false; - } - - bCaseSensitive = (typeof(bCaseSensitive) != 'boolean' ? true : bCaseSensitive); - - function fakeRowspan () { - var firstOccurance = null, - value = null, - rowspan = 0; - jQuery.each(oSettings.aoData, function (i, oData) { - var val = oData._aData[iColumn], - cell = oData.nTr.childNodes[iColumn]; - /* Use lowercase comparison if not case-sensitive. */ - if (!bCaseSensitive) { - val = val.toLowerCase(); - } - /* Reset values on new cell data. */ - if (val != value) { - value = val; - firstOccurance = cell; - rowspan = 0; - } - - if (val == value) { - rowspan++; - } - - if (firstOccurance !== null && val == value && rowspan > 1) { - oData.nTr.removeChild(cell); - firstOccurance.rowSpan = rowspan; - } - }); - } - - oSettings.aoDrawCallback.push({ "fn": fakeRowspan, "sName": "fnFakeRowspan" }); - - return this; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnFilterAll.js b/dashboard/lib/datatables-plugins/api/fnFilterAll.js deleted file mode 100644 index 6a4cf92c..00000000 --- a/dashboard/lib/datatables-plugins/api/fnFilterAll.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Apply the same filter to all DataTable instances on a particular page. The - * function call exactly matches that used by `fnFilter()` so regular expression - * and individual column sorting can be used. - * - * DataTables 1.10+ provides this ability through its new API, which is able to - * to control multiple tables at a time. - * `$('.dataTable').DataTable().search( ... )` for example will apply the same - * filter to all tables on the page. The new API should be used in preference - * to this older method if at all possible. - * - * @name fnFilterAll - * @summary Apply a common filter to all DataTables on a page - * @author [Kristoffer Karlström](http://www.kmmtiming.se/) - * @deprecated - * - * @param {string} sInput Filtering input - * @param {integer} [iColumn=null] Column to apply the filter to - * @param {boolean} [bRegex] Regular expression flag - * @param {boolean} [bSmart] Smart filtering flag - * - * @example - * $(document).ready(function() { - * var table = $(".dataTable").dataTable(); - * - * $("#search").keyup( function () { - * // Filter on the column (the index) of this element - * table.fnFilterAll(this.value); - * } ); - * }); - */ - -jQuery.fn.dataTableExt.oApi.fnFilterAll = function(oSettings, sInput, iColumn, bRegex, bSmart) { - var settings = $.fn.dataTableSettings; - - for ( var i=0 ; i<settings.length ; i++ ) { - settings[i].oInstance.fnFilter( sInput, iColumn, bRegex, bSmart); - } -}; diff --git a/dashboard/lib/datatables-plugins/api/fnFilterClear.js b/dashboard/lib/datatables-plugins/api/fnFilterClear.js deleted file mode 100644 index 763e2e41..00000000 --- a/dashboard/lib/datatables-plugins/api/fnFilterClear.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Remove all filtering that has been applied to a DataTable, be it column - * based filtering or global filtering. - * - * DataTables 1.10+ new API can achieve the same effect as this plug-in, without - * the requirement for plug-ins using the following chaining: - * - * ```js - * var table = $('#example').DataTable(); - * table - * .search( '' ) - * .columns().search( '' ) - * .draw(); - * ``` - * - * Please use the new API in DataTables 1.10+ is you are able to do so. - * - * @name fnFilterClear - * @summary Remove all column and global filters applied to a table - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * - * // Perform a filter - * table.fnFilter('Win'); - * table.fnFilter('Trident', 0); - * - * // Remove all filtering - * table.fnFilterClear(); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnFilterClear = function ( oSettings ) -{ - var i, iLen; - - /* Remove global filter */ - oSettings.oPreviousSearch.sSearch = ""; - - /* Remove the text of the global filter in the input boxes */ - if ( typeof oSettings.aanFeatures.f != 'undefined' ) - { - var n = oSettings.aanFeatures.f; - for ( i=0, iLen=n.length ; i<iLen ; i++ ) - { - $('input', n[i]).val( '' ); - } - } - - /* Remove the search text for the column filters - NOTE - if you have input boxes for these - * filters, these will need to be reset - */ - for ( i=0, iLen=oSettings.aoPreSearchCols.length ; i<iLen ; i++ ) - { - oSettings.aoPreSearchCols[i].sSearch = ""; - } - - /* Redraw */ - oSettings.oApi._fnReDraw( oSettings ); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnFilterOnReturn.js b/dashboard/lib/datatables-plugins/api/fnFilterOnReturn.js deleted file mode 100644 index 8737bc49..00000000 --- a/dashboard/lib/datatables-plugins/api/fnFilterOnReturn.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * This plug-in removes the default behaviour of DataTables to filter on each - * keypress, and replaces with it the requirement to press the enter key to - * perform the filter. - * - * @name fnFilterOnReturn - * @summary Require the return key to be pressed to filter a table - * @author [Jon Ranes](http://www.mvccms.com/) - * - * @returns {jQuery} jQuery instance - * - * @example - * $(document).ready(function() { - * $('.dataTable').dataTable().fnFilterOnReturn(); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnFilterOnReturn = function (oSettings) { - var _that = this; - - this.each(function (i) { - $.fn.dataTableExt.iApiIndex = i; - var $this = this; - var anControl = $('input', _that.fnSettings().aanFeatures.f); - anControl - .unbind('keyup search input') - .bind('keypress', function (e) { - if (e.which == 13) { - $.fn.dataTableExt.iApiIndex = i; - _that.fnFilter(anControl.val()); - } - }); - return this; - }); - return this; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnFindCellRowIndexes.js b/dashboard/lib/datatables-plugins/api/fnFindCellRowIndexes.js deleted file mode 100644 index 6ce31613..00000000 --- a/dashboard/lib/datatables-plugins/api/fnFindCellRowIndexes.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Search through a table looking for a given string (optionally the search - * can be restricted to a single column). The return value is an array with - * the data indexes (from DataTables' internal data store) for any rows which - * match. - * - * @name fnFindCellRowIndexes - * @summary Search for data, returning row indexes - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @param {string} sSearch Data to search for - * @param {integer} [iColumn=null] Limit search to this column - * @returns {array} Array of row indexes with this data - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * - * var a = table.fnFindCellRowIndexes( '1.7' ); // Search all columns - * - * var b = table.fnFindCellRowIndexes( '1.7', 3 ); // Search only column 3 - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnFindCellRowIndexes = function ( oSettings, sSearch, iColumn ) -{ - var - i,iLen, j, jLen, val, - aOut = [], aData, - columns = oSettings.aoColumns; - - for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ ) - { - aData = oSettings.aoData[i]._aData; - - if ( iColumn === undefined ) - { - for ( j=0, jLen=columns.length ; j<jLen ; j++ ) - { - val = this.fnGetData(i, j); - - if ( val == sSearch ) - { - aOut.push( i ); - } - } - } - else if (this.fnGetData(i, iColumn) == sSearch ) - { - aOut.push( i ); - } - } - - return aOut; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnFindCellRowNodes.js b/dashboard/lib/datatables-plugins/api/fnFindCellRowNodes.js deleted file mode 100644 index b15c466a..00000000 --- a/dashboard/lib/datatables-plugins/api/fnFindCellRowNodes.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Much like `fnFindCellRowIndexes` this plug-in will search a table for - * matching data (optionally the search can be restricted to a single column), - * but in this case the returned array contains `dt-tag tr` nodes of the - * matching rows, rather than data indexes. - * - * @name fnFindCellRowNodes - * @summary Search for data, returning row nodes - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @param {string} sSearch Data to search for - * @param {integer} [iColumn=null] Limit search to this column - * @returns {array} Array of `dt-tag tr` element with this data - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * - * var a = table.fnFindCellRowNodes( '1.7' ); // Search all columns - * - * var b = table.fnFindCellRowNodes( '1.7', 3 ); // Search only column 3 - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnFindCellRowNodes = function ( oSettings, sSearch, iColumn ) -{ - var - i,iLen, j, jLen, val, - aOut = [], aData, - columns = oSettings.aoColumns; - - for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ ) - { - aData = oSettings.aoData[i]._aData; - - if ( iColumn === undefined ) - { - for ( j=0, jLen=columns.length ; j<jLen ; j++ ) - { - val = this.fnGetData(i, j); - - if ( val == sSearch ) - { - aOut.push( oSettings.aoData[i].nTr ); - } - } - } - else if (this.fnGetData(i, iColumn) == sSearch ) - { - aOut.push( oSettings.aoData[i].nTr ); - } - } - - return aOut; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnGetAdjacentTr.js b/dashboard/lib/datatables-plugins/api/fnGetAdjacentTr.js deleted file mode 100644 index b338f6a4..00000000 --- a/dashboard/lib/datatables-plugins/api/fnGetAdjacentTr.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Due to the fact that DataTables moves DOM elements around (mainly `dt-tag tr` - * elements for sorting and filtering) it can at times be a little tricky to get - * the next row based on another, while taking into account pagination, - * filtering, sorting etc. - * - * This function is designed to address exactly this situation. It takes two - * parameters, the target node, and a boolean indicating if the adjacent row - * retrieved should be the next (`true`, or no value) or the previous (`false`). - * - * @name fnGetAdjacentTr - * @summary Get the adjacent `dt-tag tr` element for a row. - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @param {node} nTr `dt-tag tr` element to get the adjacent element of - * @param {boolean} [bNext=true] Get the next (`true`), or previous (`false`) - * `dt-tag tr` element. - * @returns {node} `dt-tag tr` element or null if not found. - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * - * var n1 = $('#example tbody tr').eq(2)[0]; - * var next = table.fnGetAdjacentTr( n1 ); - * var prev = table.fnGetAdjacentTr( n1, false ); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnGetAdjacentTr = function ( oSettings, nTr, bNext ) -{ - /* Find the node's position in the aoData store */ - var iCurrent = oSettings.oApi._fnNodeToDataIndex( oSettings, nTr ); - - /* Convert that to a position in the display array */ - var iDisplayIndex = $.inArray( iCurrent, oSettings.aiDisplay ); - if ( iDisplayIndex == -1 ) - { - /* Not in the current display */ - return null; - } - - /* Move along the display array as needed */ - iDisplayIndex += (typeof bNext=='undefined' || bNext) ? 1 : -1; - - /* Check that it within bounds */ - if ( iDisplayIndex < 0 || iDisplayIndex >= oSettings.aiDisplay.length ) - { - /* There is no next/previous element */ - return null; - } - - /* Return the target node from the aoData store */ - return oSettings.aoData[ oSettings.aiDisplay[ iDisplayIndex ] ].nTr; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnGetColumnData.js b/dashboard/lib/datatables-plugins/api/fnGetColumnData.js deleted file mode 100644 index 5d62cdf6..00000000 --- a/dashboard/lib/datatables-plugins/api/fnGetColumnData.js +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Return an array of table values from a particular column, with various - * filtering options. - * - * DataTables 1.10+ provides the `dt-api column().data()` method, built-in to - * the core, to provide this ability. As such, this method is marked deprecated, - * but is available for use with legacy version of DataTables. Please use the - * new API if you are used DataTables 1.10 or newer. - * - * @name fnGetColumnData - * @summary Get the data from a column - * @author [Benedikt Forchhammer](http://mind2.de) - * @deprecated - * - * @param {integer} iColumn Column to get data from - * @param {boolean} [bFiltered=true] Reduce the data set to only unique values - * @param {boolean} [bUnique=true] Get data from filter results only - * @param {boolean} [bIgnoreEmpty=true] Remove data elements which are empty - * @returns {array} Array of data from the column - * - * @example - * var table = $('#example').dataTable(); - * table.fnGetColumnData( 3 ); - */ - -jQuery.fn.dataTableExt.oApi.fnGetColumnData = function ( oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty ) { - // check that we have a column id - if ( typeof iColumn == "undefined" ) { - return []; - } - - // by default we only wany unique data - if ( typeof bUnique == "undefined" ) { - bUnique = true; - } - - // by default we do want to only look at filtered data - if ( typeof bFiltered == "undefined" ) { - bFiltered = true; - } - - // by default we do not wany to include empty values - if ( typeof bIgnoreEmpty == "undefined" ) { - bIgnoreEmpty = true; - } - - // list of rows which we're going to loop through - var aiRows; - - // use only filtered rows - if (bFiltered === true) { - aiRows = oSettings.aiDisplay; - } - // use all rows - else { - aiRows = oSettings.aiDisplayMaster; // all row numbers - } - - // set up data array - var asResultData = []; - - for (var i=0,c=aiRows.length; i<c; i++) { - var iRow = aiRows[i]; - var sValue = this.fnGetData(iRow, iColumn); - - // ignore empty values? - if (bIgnoreEmpty === true && sValue.length === 0) { - continue; - } - - // ignore unique values? - else if (bUnique === true && jQuery.inArray(sValue, asResultData) > -1) { - continue; - } - - // else push the value onto the result data array - else { - asResultData.push(sValue); - } - } - - return asResultData; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnGetColumnIndex.js b/dashboard/lib/datatables-plugins/api/fnGetColumnIndex.js deleted file mode 100644 index d48c29aa..00000000 --- a/dashboard/lib/datatables-plugins/api/fnGetColumnIndex.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Maintenance of web-sites can often cause unexpected headaches, particularly - * if the hardcoded index of an array (the columns in a DataTables instance) - * needs to change due to an added or removed column. This plug-in function - * will match a given string to the title of a column in the table and return - * the column index, helping to overcome this problem. - * - * @name fnGetColumnIndex - * @summary Get the column index by searching the column titles - * @author [Michael Ross](http://www.rosstechassociates.com/) - * - * @param {string} sCol Column title to search for - * @returns {integer} Column index, or -1 if not found - * - * @example - * var table = $('#example').dataTable(); - * table.fnGetColumnIndex( 'Browser' ); - */ - -jQuery.fn.dataTableExt.oApi.fnGetColumnIndex = function ( oSettings, sCol ) -{ - var cols = oSettings.aoColumns; - for ( var x=0, xLen=cols.length ; x<xLen ; x++ ) - { - if ( cols[x].sTitle.toLowerCase() == sCol.toLowerCase() ) - { - return x; - } - } - return -1; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnGetHiddenNodes.js b/dashboard/lib/datatables-plugins/api/fnGetHiddenNodes.js deleted file mode 100644 index a83e2e72..00000000 --- a/dashboard/lib/datatables-plugins/api/fnGetHiddenNodes.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Get a list of all `dt-tag tr` nodes in the table which are not currently - * visible (useful for building forms). - * - * This function is marked as deprecated as using the `dt-api rows()` method in - * DataTables 1.10+ is preferred to this approach. - * - * @name fnGetHiddenNodes - * @summary Get the `dt-tag tr` elements which are not in the DOM - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @example - * var table = $('#example').dataTable(); - * var nodes = table.fnGetHiddenNodes(); - */ - -jQuery.fn.dataTableExt.oApi.fnGetHiddenNodes = function ( settings ) -{ - var nodes; - var display = jQuery('tbody tr', settings.nTable); - - if ( jQuery.fn.dataTable.versionCheck ) { - // DataTables 1.10 - var api = new jQuery.fn.dataTable.Api( settings ); - nodes = api.rows().nodes().toArray(); - } - else { - // 1.9- - nodes = this.oApi._fnGetTrNodes( settings ); - } - - /* Remove nodes which are being displayed */ - for ( var i=0 ; i<display.length ; i++ ) { - var iIndex = jQuery.inArray( display[i], nodes ); - - if ( iIndex != -1 ) { - nodes.splice( iIndex, 1 ); - } - } - - return nodes; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnGetTd.js b/dashboard/lib/datatables-plugins/api/fnGetTd.js deleted file mode 100644 index 2f92cd94..00000000 --- a/dashboard/lib/datatables-plugins/api/fnGetTd.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Get a `dt-tag td` node from a row, taking into account column visibility. - * While getting a `dt-tag td` node is easy when it is visible on the page by - * using normal DOM methods, jQuery or whatever, it becomes a lot more - * complicated when taking into account hidden rows and columns. This function - * can be used to overcome these difficulties. - * - * DataTables 1.10+'s new API provides the `dt-api cell()` and `dt-api cells()` - * methods which are preferable for use over this method. As such this method is - * marked deprecated, but is available for use with legacy version of - * DataTables. Please use the new API if you are used DataTables 1.10 or newer. - * - * @name fnGetTd - * @summary Get the `dt-tag td` element for a cell. - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @param {node} mTr `dt-tag tr` element to get the `dt-tag td` of - * @param {integer} iTd Column index to get the node of - * @param {boolean} bVisOnly Consider visible columns only - * @returns {node} `dt-tag td` element in question - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * - * // Sort in the order that was origially in the HTML - * var nTd = table.fnGetTd( $('#example tbody tr:eq(1)')[0], 1 ); - * console.log( nTd ); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnGetTd = function ( oSettings, mTr, iTd, bVisOnly ) -{ - /* Take either a TR node or aoData index as the mTr property */ - var iRow = (typeof mTr == 'object') ? - oSettings.oApi._fnNodeToDataIndex(oSettings, mTr) : mTr; - - if ( typeof bVisOnly == 'undefined' && !bVisOnly ) - { - /* Looking at both visible and hidden TD elements - convert to visible index, if not present - * then it must be hidden. Return as appropriate - */ - var iCalcVis = oSettings.oApi._fnColumnIndexToVisible( oSettings, iTd ); - if ( iCalcVis !== null ) - { - return oSettings.aoData[ iRow ].nTr.getElementsByTagName('td')[ iCalcVis ]; - } - else - { - return oSettings.aoData[ iRow ]._anHidden[ iTd ]; - } - } - else - { - /* Only looking at visible TD elements, so just use getElements... */ - return oSettings.aoData[ iRow ].nTr.getElementsByTagName('td')[ iTd ]; - } -}; diff --git a/dashboard/lib/datatables-plugins/api/fnGetTds.js b/dashboard/lib/datatables-plugins/api/fnGetTds.js deleted file mode 100644 index 4d028cef..00000000 --- a/dashboard/lib/datatables-plugins/api/fnGetTds.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Get an array of `dt-tag td` nodes from DataTables for a given row, including - * any column elements which are hidden. - * - * DataTables 1.10 has the `dt-api cells().nodes()` method, built-in, to provide - * this functionality. As such this method is marked deprecated, but is - * available for use with legacy version of DataTables. Please use the new API - * if you are used DataTables 1.10 or newer. - * - * @name fnGetTds - * @summary Get the `dt-tag td` elements for a row - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @param {node} mTr `dt-tag tr` element to get the `dt-tag td` of - * @returns {array} Array of `dt-tag td` elements - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sort in the order that was origially in the HTML - * var anTds = oTable.fnGetTds( $('#example tbody tr:eq(1)')[0] ); - * console.log( anTds ); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnGetTds = function ( oSettings, mTr ) -{ - var anTds = []; - var anVisibleTds = []; - var iCorrector = 0; - var nTd, iColumn, iColumns; - - /* Take either a TR node or aoData index as the mTr property */ - var iRow = (typeof mTr == 'object') ? - oSettings.oApi._fnNodeToDataIndex(oSettings, mTr) : mTr; - var nTr = oSettings.aoData[iRow].nTr; - - /* Get an array of the visible TD elements */ - for ( iColumn=0, iColumns=nTr.childNodes.length ; iColumn<iColumns ; iColumn++ ) - { - nTd = nTr.childNodes[iColumn]; - if ( nTd.nodeName.toUpperCase() == "TD" ) - { - anVisibleTds.push( nTd ); - } - } - - /* Construct and array of the combined elements */ - for ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ ) - { - if ( oSettings.aoColumns[iColumn].bVisible ) - { - anTds.push( anVisibleTds[iColumn-iCorrector] ); - } - else - { - anTds.push( oSettings.aoData[iRow]._anHidden[iColumn] ); - iCorrector++; - } - } - - return anTds; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnLengthChange.js b/dashboard/lib/datatables-plugins/api/fnLengthChange.js deleted file mode 100644 index 10d02bf2..00000000 --- a/dashboard/lib/datatables-plugins/api/fnLengthChange.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Change the number of records that can be viewed on a single page in - * DataTables. - * - * DataTables 1.10 provides the `dt-api page.len()` method to get and set the - * page length using the built-in API. As such this method is marked deprecated, - * but is available for use with legacy version of DataTables. Please use the - * new API if you are used DataTables 1.10 or newer. - * - * @name fnLengthChange - * @summary Change the paging display length - * @author [Pedro Alves](http://www.webdetails.pt/) - * @deprecated - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * table.fnLengthChange( 100 ); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnLengthChange = function ( oSettings, iDisplay ) -{ - oSettings._iDisplayLength = iDisplay; - oSettings.oApi._fnCalculateEnd( oSettings ); - - /* If we have space to show extra rows (backing up from the end point - then do so */ - if ( oSettings._iDisplayEnd == oSettings.aiDisplay.length ) - { - oSettings._iDisplayStart = oSettings._iDisplayEnd - oSettings._iDisplayLength; - if ( oSettings._iDisplayStart < 0 ) - { - oSettings._iDisplayStart = 0; - } - } - - if ( oSettings._iDisplayLength == -1 ) - { - oSettings._iDisplayStart = 0; - } - - oSettings.oApi._fnDraw( oSettings ); - - if ( oSettings.aanFeatures.l ) - { - $('select', oSettings.aanFeatures.l).val( iDisplay ); - } -}; diff --git a/dashboard/lib/datatables-plugins/api/fnMultiFilter.js b/dashboard/lib/datatables-plugins/api/fnMultiFilter.js deleted file mode 100644 index 38c6e092..00000000 --- a/dashboard/lib/datatables-plugins/api/fnMultiFilter.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * This plug-in adds to DataTables the ability to set multiple column filtering - * terms in a single call (particularly useful if using server-side processing). - * Used in combination with the column sName parameter, simply pass in an object - * with the key/value pair being the column you wish to search on, and the value - * you wish to search for. - * - * DataTables 1.10's API provides a easy built-in way to apply multiple filters - * to the table without redrawing until required. For example, the example below - * with the DataTables 1.10 API could be written as: - * - * ```js - * var table = $('#example').DataTable(); - * table - * .column( 0 ).search( 'Gecko' ) - * .column( 1 ).search( 'Cam' ) - * .draw(); - * ``` - * - * As such this method is marked deprecated, but is available for use with - * legacy version of DataTables. Please use the new API if you are used - * DataTables 1.10 or newer. - * - * @name fnMultiFilter - * @summary Apply multiple column filters together - * @author _mrkevans_ - * @deprecated - * - * @param {object} oData Data to search for - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable( { - * "aoColumns": [ - * { "sName": "engine" }, - * { "sName": "browser" }, - * { "sName": "platform" }, - * { "sName": "version" }, - * { "sName": "grade" } - * ] - * } ); - * table.fnMultiFilter( { "engine": "Gecko", "browser": "Cam" } ); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnMultiFilter = function( oSettings, oData ) { - for ( var key in oData ) - { - if ( oData.hasOwnProperty(key) ) - { - for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ ) - { - if( oSettings.aoColumns[i].sName == key ) - { - /* Add single column filter */ - oSettings.aoPreSearchCols[ i ].sSearch = oData[key]; - break; - } - } - } - } - this.oApi._fnReDraw( oSettings ); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnPagingInfo.js b/dashboard/lib/datatables-plugins/api/fnPagingInfo.js deleted file mode 100644 index 0f629762..00000000 --- a/dashboard/lib/datatables-plugins/api/fnPagingInfo.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Get information about the paging settings that DataTables is currently - * using to display each page, including the number of records shown, start - * and end points in the data set etc. - * - * DataTables 1.10+ provides the `dt-api page.info()` method, built-in, provide - * the same information as this method. As such this method is marked - * deprecated, but is available for use with legacy version of DataTables. - * Please use the new API if you are used DataTables 1.10 or newer. - * - * @name fnPagingInfo - * @summary Get information about the paging state of the table - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "fnDrawCallback": function () { - * alert( 'Now on page'+ this.fnPagingInfo().iPage ); - * } - * } ); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings ) -{ - return { - "iStart": oSettings._iDisplayStart, - "iEnd": oSettings.fnDisplayEnd(), - "iLength": oSettings._iDisplayLength, - "iTotal": oSettings.fnRecordsTotal(), - "iFilteredTotal": oSettings.fnRecordsDisplay(), - "iPage": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ), - "iTotalPages": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength ) - }; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnProcessingIndicator.js b/dashboard/lib/datatables-plugins/api/fnProcessingIndicator.js deleted file mode 100644 index ae6c8732..00000000 --- a/dashboard/lib/datatables-plugins/api/fnProcessingIndicator.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * When doing some heavy processing of your own (for example using fnOpen with - * data loading from the server) it can be useful to make use of the - * 'processing' indicator built-into DataTables. This plug-in function exposes - * the internal DataTables function so it can be used for exactly this. - * - * @name fnProcessingIndicator - * @summary Show and hide the DataTables processing element through the API. - * @author Allan Chappell - * - * @param {boolean} [onoff=true] Show (`true`) or hide (`false`) the processing - * element. - * - * @example - * var table = $('#example').dataTable(); - * table.fnProcessingIndicator(); // On - * table.fnProcessingIndicator(false); // Off - */ - -jQuery.fn.dataTableExt.oApi.fnProcessingIndicator = function ( oSettings, onoff ) -{ - if ( onoff === undefined ) { - onoff = true; - } - this.oApi._fnProcessingDisplay( oSettings, onoff ); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnReloadAjax.js b/dashboard/lib/datatables-plugins/api/fnReloadAjax.js deleted file mode 100644 index 94d3ebe0..00000000 --- a/dashboard/lib/datatables-plugins/api/fnReloadAjax.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * By default DataTables only uses the sAjaxSource variable at initialisation - * time, however it can be useful to re-read an Ajax source and have the table - * update. Typically you would need to use the `fnClearTable()` and - * `fnAddData()` functions, however this wraps it all up in a single function - * call. - * - * DataTables 1.10 provides the `dt-api ajax.url()` and `dt-api ajax.reload()` - * methods, built-in, to give the same functionality as this plug-in. As such - * this method is marked deprecated, but is available for use with legacy - * version of DataTables. Please use the new API if you are used DataTables 1.10 - * or newer. - * - * @name fnReloadAjax - * @summary Reload the table's data from the Ajax source - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @param {string} [sNewSource] URL to get the data from. If not give, the - * previously used URL is used. - * @param {function} [fnCallback] Callback that is executed when the table has - * redrawn with the new data - * @param {boolean} [bStandingRedraw=false] Standing redraw (don't changing the - * paging) - * - * @example - * var table = $('#example').dataTable(); - * - * // Example call to load a new file - * table.fnReloadAjax( 'media/examples_support/json_source2.txt' ); - * - * // Example call to reload from original file - * table.fnReloadAjax(); - */ - -jQuery.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback, bStandingRedraw ) -{ - // DataTables 1.10 compatibility - if 1.10 then `versionCheck` exists. - // 1.10's API has ajax reloading built in, so we use those abilities - // directly. - if ( jQuery.fn.dataTable.versionCheck ) { - var api = new jQuery.fn.dataTable.Api( oSettings ); - - if ( sNewSource ) { - api.ajax.url( sNewSource ).load( fnCallback, !bStandingRedraw ); - } - else { - api.ajax.reload( fnCallback, !bStandingRedraw ); - } - return; - } - - if ( sNewSource !== undefined && sNewSource !== null ) { - oSettings.sAjaxSource = sNewSource; - } - - // Server-side processing should just call fnDraw - if ( oSettings.oFeatures.bServerSide ) { - this.fnDraw(); - return; - } - - this.oApi._fnProcessingDisplay( oSettings, true ); - var that = this; - var iStart = oSettings._iDisplayStart; - var aData = []; - - this.oApi._fnServerParams( oSettings, aData ); - - oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aData, function(json) { - /* Clear the old information from the table */ - that.oApi._fnClearTable( oSettings ); - - /* Got the data - add it to the table */ - var aData = (oSettings.sAjaxDataProp !== "") ? - that.oApi._fnGetObjectDataFn( oSettings.sAjaxDataProp )( json ) : json; - - for ( var i=0 ; i<aData.length ; i++ ) - { - that.oApi._fnAddData( oSettings, aData[i] ); - } - - oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - - that.fnDraw(); - - if ( bStandingRedraw === true ) - { - oSettings._iDisplayStart = iStart; - that.oApi._fnCalculateEnd( oSettings ); - that.fnDraw( false ); - } - - that.oApi._fnProcessingDisplay( oSettings, false ); - - /* Callback user function - for event handlers etc */ - if ( typeof fnCallback == 'function' && fnCallback !== null ) - { - fnCallback( oSettings ); - } - }, oSettings ); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnSetFilteringDelay.js b/dashboard/lib/datatables-plugins/api/fnSetFilteringDelay.js deleted file mode 100644 index 3aa767a3..00000000 --- a/dashboard/lib/datatables-plugins/api/fnSetFilteringDelay.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Enables filtration delay for keeping the browser more responsive while - * searching for a longer keyword. - * - * This can be particularly useful when working with server-side processing, - * where you wouldn't typically want an Ajax request to be made with every key - * press the user makes when searching the table. - * - * @name fnSetFilteringDelay - * @summary Add a key debouce delay to the global filtering input of a table - * @author [Zygimantas Berziunas](http://www.zygimantas.com/), - * [Allan Jardine](http://www.sprymedia.co.uk/) and _vex_ - * - * @example - * $(document).ready(function() { - * $('.dataTable').dataTable().fnSetFilteringDelay(); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnSetFilteringDelay = function ( oSettings, iDelay ) { - var _that = this; - - if ( iDelay === undefined ) { - iDelay = 250; - } - - this.each( function ( i ) { - $.fn.dataTableExt.iApiIndex = i; - var - $this = this, - oTimerId = null, - sPreviousSearch = null, - anControl = $( 'input', _that.fnSettings().aanFeatures.f ); - - anControl.unbind( 'keyup search input' ).bind( 'keyup search input', function() { - var $$this = $this; - - if (sPreviousSearch === null || sPreviousSearch != anControl.val()) { - window.clearTimeout(oTimerId); - sPreviousSearch = anControl.val(); - oTimerId = window.setTimeout(function() { - $.fn.dataTableExt.iApiIndex = i; - _that.fnFilter( anControl.val() ); - }, iDelay); - } - }); - - return this; - } ); - return this; -}; diff --git a/dashboard/lib/datatables-plugins/api/fnSortNeutral.js b/dashboard/lib/datatables-plugins/api/fnSortNeutral.js deleted file mode 100644 index 6b212242..00000000 --- a/dashboard/lib/datatables-plugins/api/fnSortNeutral.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * This function will restore the order in which data was read into a DataTable - * (for example from an HTML source). Although you can set aaSorting to be an - * empty array (`[ ]`) in order to prevent sorting during initialisation, it can - * sometimes be useful to restore the original order after sorting has already - * occurred - which is exactly what this function does. - * - * @name fnSortNeutral - * @summary Change ordering of the table to its data load order - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * - * // Sort in the order that was originally in the HTML - * table.fnSortNeutral(); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnSortNeutral = function ( oSettings ) -{ - /* Remove any current sorting */ - oSettings.aaSorting = []; - - /* Sort display arrays so we get them in numerical order */ - oSettings.aiDisplay.sort( function (x,y) { - return x-y; - } ); - oSettings.aiDisplayMaster.sort( function (x,y) { - return x-y; - } ); - - /* Redraw */ - oSettings.oApi._fnReDraw( oSettings ); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnStandingRedraw.js b/dashboard/lib/datatables-plugins/api/fnStandingRedraw.js deleted file mode 100644 index 28da12ef..00000000 --- a/dashboard/lib/datatables-plugins/api/fnStandingRedraw.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Redraw the table (i.e. `fnDraw`) to take account of sorting and filtering, - * but retain the current pagination settings. - * - * DataTables 1.10+ provide the `dt-api draw()` method which has this ability - * built-in (pass the first parameter to the function as `false`). As such this - * method is marked deprecated, but is available for use with legacy version of - * DataTables. Please use the new API if you are used DataTables 1.10 or newer. - * - * @name fnStandingRedraw - * @summary Redraw the table without altering the paging - * @author Jonathan Hoguet - * @deprecated - * - * @example - * $(document).ready(function() { - * var table = $('.dataTable').dataTable() - * table.fnStandingRedraw(); - * } ); - */ - -jQuery.fn.dataTableExt.oApi.fnStandingRedraw = function(oSettings) { - if(oSettings.oFeatures.bServerSide === false){ - var before = oSettings._iDisplayStart; - - oSettings.oApi._fnReDraw(oSettings); - - // iDisplayStart has been reset to zero - so lets change it back - oSettings._iDisplayStart = before; - oSettings.oApi._fnCalculateEnd(oSettings); - } - - // draw the 'current' page - oSettings.oApi._fnDraw(oSettings); -}; diff --git a/dashboard/lib/datatables-plugins/api/fnVisibleToColumnIndex.js b/dashboard/lib/datatables-plugins/api/fnVisibleToColumnIndex.js deleted file mode 100644 index 61c55f80..00000000 --- a/dashboard/lib/datatables-plugins/api/fnVisibleToColumnIndex.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * When DataTables removes columns from the display (bVisible or fnSetColumnVis) - * it removes these elements from the DOM, effecting the index value for the - * column positions. This function converts the visible column index into a data - * column index (i.e. all columns regardless of visibility). - * - * DataTables 1.10+ has this ability built-in through the - * `dt-api column.index()` method. As such this method is marked deprecated, but - * is available for use with legacy version of DataTables. - * - * @name fnVisibleToColumnIndex - * @summary Convert a column visible index to a data index. - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @param {integer} iMatch Column data index to convert to data index - * @returns {integer} Visible column index - * - * @example - * var table = $('#example').dataTable( { - * aoColumnDefs: [ - * { bVisible: false, aTargets: [1] } - * ] - * } ); - * - * // This will show 2 - * alert( 'Visible Column 1 data index: '+table.fnVisibleToColumnIndex(1) ); - */ - -jQuery.fn.dataTableExt.oApi.fnVisibleToColumnIndex = function ( oSettings, iMatch ) -{ - return oSettings.oApi._fnVisibleToColumnIndex( oSettings, iMatch ); -}; diff --git a/dashboard/lib/datatables-plugins/api/order.neutral().js b/dashboard/lib/datatables-plugins/api/order.neutral().js deleted file mode 100644 index 0d78eb30..00000000 --- a/dashboard/lib/datatables-plugins/api/order.neutral().js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * This function will restore the order in which data was read into a DataTable - * (for example from an HTML source). Although you can set `dt-api order()` to - * be an empty array (`[]`) in order to prevent sorting during initialisation, - * it can sometimes be useful to restore the original order after sorting has - * already occurred - which is exactly what this function does. - * - * @name order.neutral() - * @summary Change ordering of the table to its data load order - * @author [Allan Jardine](http://datatables.net) - * @requires DataTables 1.10+ - * - * @returns {DataTables.Api} DataTables API instance - * - * @example - * // Return table to the loaded data order - * table.order.neutral().draw(); - */ - -$.fn.dataTable.Api.register( 'order.neutral()', function () { - return this.iterator( 'table', function ( s ) { - s.aaSorting.length = 0; - s.aiDisplay.sort( function (a,b) { - return a-b; - } ); - s.aiDisplayMaster.sort( function (a,b) { - return a-b; - } ); - } ); -} ); diff --git a/dashboard/lib/datatables-plugins/api/page.jumpToData().js b/dashboard/lib/datatables-plugins/api/page.jumpToData().js deleted file mode 100644 index 8d29e7e1..00000000 --- a/dashboard/lib/datatables-plugins/api/page.jumpToData().js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * It can be quite useful to jump straight to a page which contains a certain - * piece of data (a user name for example). This plug-in provides exactly that - * ability, searching for a given data parameter from a given column and - * immediately shifting the paging of the table to jump to that point. - * - * If multiple data points match the requested data, the paging will be shifted - * to show the first instance. If there are no matches, the paging will not - * change. - * - * Note that unlike the core DataTables API methods, this plug-in will - * automatically call `dt-api draw()` to redraw the table with the current page - * shown. - * - * @name page.JumpToData() - * @summary Jump to a page by searching for data from a column - * @author [Allan Jardine](http://sprymedia.co.uk) - * @requires DataTables 1.10+ - * - * @param {*} data Data to search for - * @param {integer} column Column index - * @returns {Api} DataTables API instance - * - * @example - * var table = $('#example').DataTable(); - * table.page.jumpToData( "Allan Jardine", 0 ); - */ - -jQuery.fn.dataTable.Api.register( 'page.jumpToData()', function ( data, column ) { - var pos = this.column(column, {order:'current'}).data().indexOf( data ); - - if ( pos >= 0 ) { - var page = Math.floor( pos / this.page.info().length ); - this.page( page ).draw( false ); - } - - return this; -} ); \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/api/row().show().js b/dashboard/lib/datatables-plugins/api/row().show().js deleted file mode 100644 index 3af551e3..00000000 --- a/dashboard/lib/datatables-plugins/api/row().show().js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * This plugin permits to show the right page of DataTable to show the selected row - * - * @version 1.0 - * @name row().show() - * @summary See the row in datable by display the right pagination page - * @author [Edouard Labre](http://www.edouardlabre.com) - * - * @param {void} a row must be selected - * @returns {DataTables.Api.Rows} DataTables Rows API instance - * - * @example - * // Add an element to a huge table and go to the right pagination page - * var table = $('#example').DataTable(); - * var new_row = { - * DT_RowId: 'row_example', - * name: 'example', - * value: 'an example row' - * }; - * - * table.row.add( new_row ).draw().show().draw(false); - */ -$.fn.dataTable.Api.register('row().show()', function() { - var page_info = this.table().page.info(); - // Get row index - var new_row_index = this.index(); - // Row position - var row_position = this.table().rows()[0].indexOf( new_row_index ); - // Already on right page ? - if( row_position >= page_info.start && row_position < page_info.end ) { - // Return row object - return this; - } - // Find page number - var page_to_display = Math.floor( row_position / this.table().page.len() ); - // Go to that page - this.table().page( page_to_display ); - // Return row object - return this; -}); diff --git a/dashboard/lib/datatables-plugins/api/sum().js b/dashboard/lib/datatables-plugins/api/sum().js deleted file mode 100644 index 91b994c0..00000000 --- a/dashboard/lib/datatables-plugins/api/sum().js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Fairly simply, this plug-in will take the data from an API result set - * and sum it, returning the summed value. The data can come from any data - * source, including column data, cells or rows. - * - * Note that it will attempt to 'deformat' any string based data that is passed - * into it - i.e. it will strip any non-numeric characters in order to make a - * best effort attempt to sum all data types. This can be useful when working - * with formatting numbers such as currency. However the trade-off is that no - * error is thrown if non-numeric data is passed in. You should be aware of this - * in case unexpected values are returned - likely the input data is not what is - * expected. - * - * @name sum() - * @summary Sum the values in a data set. - * @author [Allan Jardine](http://sprymedia.co.uk) - * @requires DataTables 1.10+ - * - * @returns {Number} Summed value - * - * @example - * // Simply get the sum of a column - * var table = $('#example').DataTable(); - * table.column( 3 ).data().sum(); - * - * @example - * // Insert the sum of a column into the columns footer, for the visible - * // data on each draw - * $('#example').DataTable( { - * drawCallback: function () { - * var api = this.api(); - * api.table().footer().to$().html( - * api.column( 4, {page:'current'} ).data().sum() - * ); - * } - * } ); - */ - -jQuery.fn.dataTable.Api.register( 'sum()', function ( ) { - return this.flatten().reduce( function ( a, b ) { - if ( typeof a === 'string' ) { - a = a.replace(/[^\d.-]/g, '') * 1; - } - if ( typeof b === 'string' ) { - b = b.replace(/[^\d.-]/g, '') * 1; - } - - return a + b; - }, 0 ); -} ); - diff --git a/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.css b/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.css deleted file mode 100644 index 3258e1e5..00000000 --- a/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.css +++ /dev/null @@ -1,39 +0,0 @@ -div.alphabet { - position: relative; - display: table; - width: 100%; - margin-bottom: 1em; -} - -div.alphabet span { - display: table-cell; - color: #3174c7; - cursor: pointer; - text-align: center; - width: 3.5% -} - -div.alphabet span:hover { - text-decoration: underline; -} - -div.alphabet span.active { - color: black; -} - -div.alphabet span.empty { - color: red; -} - -div.alphabetInfo { - display: block; - position: absolute; - background-color: #111; - border-radius: 3px; - color: white; - top: 2em; - height: 1.8em; - padding-top: 0.4em; - text-align: center; - z-index: 1; -} diff --git a/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.js b/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.js deleted file mode 100644 index 4382f270..00000000 --- a/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.js +++ /dev/null @@ -1,162 +0,0 @@ -/*! AlphabetSearch for DataTables v1.0.0 - * 2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary AlphabetSearch - * @description Show an set of alphabet buttons alongside a table providing - * search input options - * @version 1.0.0 - * @file dataTables.alphabetSearch.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2014 SpryMedia Ltd. - * - * License MIT - http://datatables.net/license/mit - * - * For more detailed information please see: - * http://datatables.net/blog/2014-09-22 - */ -(function(){ - - -// Search function -$.fn.dataTable.Api.register( 'alphabetSearch()', function ( searchTerm ) { - this.iterator( 'table', function ( context ) { - context.alphabetSearch = searchTerm; - } ); - - return this; -} ); - -// Recalculate the alphabet display for updated data -$.fn.dataTable.Api.register( 'alphabetSearch.recalc()', function ( searchTerm ) { - this.iterator( 'table', function ( context ) { - draw( - new $.fn.dataTable.Api( context ), - $('div.alphabet', this.table().container()) - ); - } ); - - return this; -} ); - - -// Search plug-in -$.fn.dataTable.ext.search.push( function ( context, searchData ) { - // Ensure that there is a search applied to this table before running it - if ( ! context.alphabetSearch ) { - return true; - } - - if ( searchData[0].charAt(0) === context.alphabetSearch ) { - return true; - } - - return false; -} ); - - -// Private support methods -function bin ( data ) { - var letter, bins = {}; - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - letter = data[i].charAt(0).toUpperCase(); - - if ( bins[letter] ) { - bins[letter]++; - } - else { - bins[letter] = 1; - } - } - - return bins; -} - -function draw ( table, alphabet ) -{ - alphabet.empty(); - alphabet.append( 'Search: ' ); - - var columnData = table.column(0).data(); - var bins = bin( columnData ); - - $('<span class="clear active"/>') - .data( 'letter', '' ) - .data( 'match-count', columnData.length ) - .html( 'None' ) - .appendTo( alphabet ); - - for ( var i=0 ; i<26 ; i++ ) { - var letter = String.fromCharCode( 65 + i ); - - $('<span/>') - .data( 'letter', letter ) - .data( 'match-count', bins[letter] || 0 ) - .addClass( ! bins[letter] ? 'empty' : '' ) - .html( letter ) - .appendTo( alphabet ); - } - - $('<div class="alphabetInfo"></div>') - .appendTo( alphabet ); -} - - -$.fn.dataTable.AlphabetSearch = function ( context ) { - var table = new $.fn.dataTable.Api( context ); - var alphabet = $('<div class="alphabet"/>'); - - draw( table, alphabet ); - - // Trigger a search - alphabet.on( 'click', 'span', function () { - alphabet.find( '.active' ).removeClass( 'active' ); - $(this).addClass( 'active' ); - - table - .alphabetSearch( $(this).data('letter') ) - .draw(); - } ); - - // Mouse events to show helper information - alphabet - .on( 'mouseenter', 'span', function () { - alphabet - .find('div.alphabetInfo') - .css( { - opacity: 1, - left: $(this).position().left, - width: $(this).width() - } ) - .html( $(this).data('match-count') ); - } ) - .on( 'mouseleave', 'span', function () { - alphabet - .find('div.alphabetInfo') - .css('opacity', 0); - } ); - - // API method to get the alphabet container node - this.node = function () { - return alphabet; - }; -}; - -$.fn.DataTable.AlphabetSearch = $.fn.dataTable.AlphabetSearch; - - -// Register a search plug-in -$.fn.dataTable.ext.feature.push( { - fnInit: function ( settings ) { - var search = new $.fn.dataTable.AlphabetSearch( settings ); - return search.node(); - }, - cFeature: 'A' -} ); - - -}()); - diff --git a/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.min.js b/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.min.js deleted file mode 100644 index 72d7fb55..00000000 --- a/dashboard/lib/datatables-plugins/features/alphabetSearch/dataTables.alphabetSearch.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - AlphabetSearch for DataTables v1.0.0 - 2014 SpryMedia Ltd - datatables.net/license -*/ -(function(){function f(b,c){c.empty();c.append("Search: ");for(var a=b.column(0).data(),d,e={},g=0,f=a.length;g<f;g++)d=a[g].charAt(0).toUpperCase(),e[d]?e[d]++:e[d]=1;$('<span class="clear active"/>').data("letter","").data("match-count",a.length).html("None").appendTo(c);for(a=0;26>a;a++)d=String.fromCharCode(65+a),$("<span/>").data("letter",d).data("match-count",e[d]||0).addClass(!e[d]?"empty":"").html(d).appendTo(c);$('<div class="alphabetInfo"></div>').appendTo(c)}$.fn.dataTable.Api.register("alphabetSearch()", -function(b){this.iterator("table",function(c){c.alphabetSearch=b});return this});$.fn.dataTable.Api.register("alphabetSearch.recalc()",function(){this.iterator("table",function(b){f(new $.fn.dataTable.Api(b),$("div.alphabet",this.table().container()))});return this});$.fn.dataTable.ext.search.push(function(b,c){return!b.alphabetSearch||c[0].charAt(0)===b.alphabetSearch?!0:!1});$.fn.dataTable.AlphabetSearch=function(b){var c=new $.fn.dataTable.Api(b),a=$('<div class="alphabet"/>');f(c,a);a.on("click", -"span",function(){a.find(".active").removeClass("active");$(this).addClass("active");c.alphabetSearch($(this).data("letter")).draw()});a.on("mouseenter","span",function(){a.find("div.alphabetInfo").css({opacity:1,left:$(this).position().left,width:$(this).width()}).html($(this).data("match-count"))}).on("mouseleave","span",function(){a.find("div.alphabetInfo").css("opacity",0)});this.node=function(){return a}};$.fn.DataTable.AlphabetSearch=$.fn.dataTable.AlphabetSearch;$.fn.dataTable.ext.feature.push({fnInit:function(b){return(new $.fn.dataTable.AlphabetSearch(b)).node()}, -cFeature:"A"})})(); diff --git a/dashboard/lib/datatables-plugins/features/conditionalPaging/dataTables.conditionalPaging.js b/dashboard/lib/datatables-plugins/features/conditionalPaging/dataTables.conditionalPaging.js deleted file mode 100644 index ea8d2b8b..00000000 --- a/dashboard/lib/datatables-plugins/features/conditionalPaging/dataTables.conditionalPaging.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * @summary ConditionalPaging - * @description Hide paging controls when the amount of pages is <= 1 - * @version 1.0.0 - * @file dataTables.conditionalPaging.js - * @author Matthew Hasbach (https://github.com/mjhasbach) - * @contact hasbach.git@gmail.com - * @copyright Copyright 2015 Matthew Hasbach - * - * License MIT - http://datatables.net/license/mit - * - * This feature plugin for DataTables hides paging controls when the amount - * of pages is <= 1. The controls can either appear / disappear or fade in / out - * - * @example - * $('#myTable').DataTable({ - * conditionalPaging: true - * }); - * - * @example - * $('#myTable').DataTable({ - * conditionalPaging: { - * style: 'fade', - * speed: 500 // optional - * } - * }); - */ - -(function(window, document, $) { - $(document).on('init.dt', function(e, dtSettings) { - if ( e.namespace !== 'dt' ) { - return; - } - - var options = dtSettings.oInit.conditionalPaging; - - if ($.isPlainObject(options) || options === true) { - var config = $.isPlainObject(options) ? options : {}, - api = new $.fn.dataTable.Api(dtSettings), - speed = 'slow', - conditionalPaging = function(e) { - var $paging = $(api.table().container()).find('div.dataTables_paginate'), - pages = api.page.info().pages; - - if ($.isPlainObject(e)) { - if (pages <= 1) { - if (config.style === 'fade') { - $paging.stop().fadeTo(speed, 0); - } - else { - $paging.css('visibility', 'hidden'); - } - } - else { - if (config.style === 'fade') { - $paging.stop().fadeTo(speed, 1); - } - else { - $paging.css('visibility', ''); - } - } - } - else if (pages <= 1) { - if (config.style === 'fade') { - $paging.css('opacity', 0); - } - else { - $paging.css('visibility', 'hidden'); - } - } - }; - - if ($.isNumeric(config.speed) || $.type(config.speed) === 'string') { - speed = config.speed; - } - - conditionalPaging(); - - api.on('draw.dt', conditionalPaging); - } - }); -})(window, document, jQuery); \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.css b/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.css deleted file mode 100644 index c78d21d4..00000000 --- a/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.css +++ /dev/null @@ -1,4 +0,0 @@ - -div.dataTables_length a.active { - color: black; -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.js b/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.js deleted file mode 100644 index b7abc5e8..00000000 --- a/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.js +++ /dev/null @@ -1,90 +0,0 @@ -/*! Page length control via links for DataTables - * 2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary LengthLinks - * @description Page length control via links for DataTables - * @version 1.1.0 - * @file dataTables.searchHighlight.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2014 SpryMedia Ltd. - * - * License MIT - http://datatables.net/license/mit - * - * This feature plug-in for DataTables adds page length control links to the - * DataTable. The `dom` option can be used to insert the control using the `L` - * character option and it uses the `lengthMenu` options of DataTables to - * determine what to display. - * - * @example - * $('#myTable').DataTable( { - * dom: 'Lfrtip' - * } ); - * - * @example - * $('#myTable').DataTable( { - * lengthMenu: [ [10, 25, 50, -1], [10, 25, 50, "All"] ] - * dom: 'Lfrtip' - * } ); - */ - -(function(window, document, $, undefined) { - - -$.fn.dataTable.LengthLinks = function ( inst ) { - var api = new $.fn.dataTable.Api( inst ); - var settings = api.settings()[0]; - var container = $('<div></div>').addClass( settings.oClasses.sLength ); - var lastLength = -1; - - // API so the feature wrapper can return the node to insert - this.container = function () { - return container[0]; - }; - - // Listen for events to change the page length - container.on( 'click.dtll', 'a', function (e) { - e.preventDefault(); - api.page.len( $(this).data('length')*1 ).draw( false ); - } ); - - // Update on each draw - api.on( 'draw', function () { - // No point in updating - nothing has changed - if ( api.page.len() === lastLength ) { - return; - } - - var menu = settings.aLengthMenu; - var lang = menu.length===2 && $.isArray(menu[0]) ? menu[1] : menu; - var lens = menu.length===2 && $.isArray(menu[0]) ? menu[0] : menu; - - var out = $.map( lens, function (el, i) { - return el == api.page.len() ? - '<a class="active" data-length="'+lens[i]+'">'+lang[i]+'</a>' : - '<a data-length="'+lens[i]+'">'+lang[i]+'</a>'; - } ); - - container.html( settings.oLanguage.sLengthMenu.replace( '_MENU_', out.join(' | ') ) ); - lastLength = api.page.len(); - } ); - - api.on( 'destroy', function () { - container.off( 'click.dtll', 'a' ); - } ); -}; - -// Subscribe the feature plug-in to DataTables, ready for use -$.fn.dataTable.ext.feature.push( { - "fnInit": function( settings ) { - var l = new $.fn.dataTable.LengthLinks( settings ); - return l.container(); - }, - "cFeature": "L", - "sFeature": "LengthLinks" -} ); - - -})(window, document, jQuery); diff --git a/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.min.js b/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.min.js deleted file mode 100644 index ff8001a6..00000000 --- a/dashboard/lib/datatables-plugins/features/lengthLinks/dataTables.lengthLinks.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - Page length control via links for DataTables - 2014 SpryMedia Ltd - datatables.net/license -*/ -(function(i,j,a){a.fn.dataTable.LengthLinks=function(d){var c=new a.fn.dataTable.Api(d),f=c.settings()[0],e=a("<div></div>").addClass(f.oClasses.sLength),h=-1;this.container=function(){return e[0]};e.on("click.dtll","a",function(b){b.preventDefault();c.page.len(1*a(this).data("length")).draw(!1)});c.on("draw",function(){if(c.page.len()!==h){var b=f.aLengthMenu,d=2===b.length&&a.isArray(b[0])?b[1]:b,g=2===b.length&&a.isArray(b[0])?b[0]:b,b=a.map(g,function(b,a){return b==c.page.len()?'<a class="active" data-length="'+ -g[a]+'">'+d[a]+"</a>":'<a data-length="'+g[a]+'">'+d[a]+"</a>"});e.html(f.oLanguage.sLengthMenu.replace("_MENU_",b.join(" | ")));h=c.page.len()}});c.on("destroy",function(){e.off("click.dtll","a")})};a.fn.dataTable.ext.feature.push({fnInit:function(d){return(new a.fn.dataTable.LengthLinks(d)).container()},cFeature:"L",sFeature:"LengthLinks"})})(window,document,jQuery); diff --git a/dashboard/lib/datatables-plugins/features/pageResize/dataTables.pageResize.js b/dashboard/lib/datatables-plugins/features/pageResize/dataTables.pageResize.js deleted file mode 100644 index 7769d67b..00000000 --- a/dashboard/lib/datatables-plugins/features/pageResize/dataTables.pageResize.js +++ /dev/null @@ -1,147 +0,0 @@ -/*! PageResize for DataTables v1.0.0 - * 2015 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary PageResize - * @description Automatically alter the DataTables page length to fit the table - into a container - * @version 1.0.0 - * @file dataTables.pageResize.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2015 SpryMedia Ltd. - * - * License MIT - http://datatables.net/license/mit - * - * This feature plug-in for DataTables will automatically change the DataTables - * page length in order to fit inside its container. This can be particularly - * useful for control panels and other interfaces which resize dynamically with - * the user's browser window instead of scrolling. - * - * Page resizing in DataTables can be enabled by using any one of the following - * options: - * - * * Adding the class `pageResize` to the HTML table - * * Setting the `pageResize` parameter in the DataTables initialisation to - * be true - i.e. `pageResize: true` - * * Setting the `pageResize` parameter to be true in the DataTables - * defaults (thus causing all tables to have this feature) - i.e. - * `$.fn.dataTable.defaults.pageResize = true`. - * * Creating a new instance: `new $.fn.dataTable.PageResize( table );` where - * `table` is a DataTable's API instance. - * - * For more detailed information please see: - * http://datatables.net/blog/2015-04-10 - */ - -(function($){ - -var PageResize = function ( dt ) -{ - var table = dt.table(); - - this.s = { - dt: dt, - host: $(table.container()).parent(), - header: $(table.header()), - footer: $(table.footer()), - body: $(table.body()), - container: $(table.container()), - table: $(table.node()) - }; - - var host = this.s.host; - if ( host.css('position') === 'static' ) { - host.css( 'position', 'relative' ); - } - - this._attach(); - this._size(); -}; - - -PageResize.prototype = { - _size: function () - { - var settings = this.s; - var dt = settings.dt; - var t = dt.table(); - var offsetTop = $( settings.table ).offset().top; - var rowHeight = $( 'tr', settings.body ).eq(0).height(); - var availableHeight = settings.host.height(); - - // Subtract the height of the header, footer and the elements - // surrounding the table - availableHeight -= settings.header.height(); - availableHeight -= settings.footer.height(); - availableHeight -= offsetTop; - availableHeight -= settings.container.height() - ( offsetTop + settings.table.height() ); - - var drawRows = Math.floor( availableHeight / rowHeight ); - - if ( ! isNaN( drawRows ) && drawRows !== Infinity && drawRows !== dt.page.len() ) { - dt.page.len( drawRows ).draw(); - } - }, - - _attach: function () { - // There is no `resize` event for elements, so to trigger this effect, - // create an empty HTML document using an <object> which will issue a - // resize event inside itself when the document resizes. Since it is - // 100% x 100% that will occur whenever the host element is resized. - var that = this; - var obj = $('<object/>') - .css( { - position: 'absolute', - top: 0, - left: 0, - height: '100%', - width: '100%', - zIndex: -1 - } ) - .attr( 'type', 'text/html' ); - - obj[0].onload = function () { - var body = this.contentDocument.body; - var height = body.offsetHeight; - - this.contentDocument.defaultView.onresize = function () { - var newHeight = body.clientHeight || body.offsetHeight; - - if ( newHeight !== height ) { - height = newHeight; - - that._size(); - } - }; - }; - - obj - .appendTo( this.s.host ) - .attr( 'data', 'about:blank' ); - } -}; - - -$.fn.dataTable.PageResize = PageResize; -$.fn.DataTable.PageResize = PageResize; - -// Automatic initialisation listener -$(document).on( 'init.dt', function ( e, settings ) { - if ( e.namespace !== 'dt' ) { - return; - } - - var api = new $.fn.dataTable.Api( settings ); - - if ( $( api.table().node() ).hasClass( 'pageResize' ) || - settings.oInit.pageResize || - $.fn.dataTable.defaults.pageResize ) - { - new PageResize( api ); - } -} ); - -}(jQuery)); - diff --git a/dashboard/lib/datatables-plugins/features/pageResize/dataTables.pageResize.min.js b/dashboard/lib/datatables-plugins/features/pageResize/dataTables.pageResize.min.js deleted file mode 100644 index 731f738a..00000000 --- a/dashboard/lib/datatables-plugins/features/pageResize/dataTables.pageResize.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - PageResize for DataTables v1.0.0 - 2015 SpryMedia Ltd - datatables.net/license -*/ -(function(c){var e=function(a){var b=a.table();this.s={dt:a,host:c(b.container()).parent(),header:c(b.header()),footer:c(b.footer()),body:c(b.body()),container:c(b.container()),table:c(b.node())};a=this.s.host;"static"===a.css("position")&&a.css("position","relative");this._attach();this._size()};e.prototype={_size:function(){var a=this.s,b=a.dt;b.table();var f=c(a.table).offset().top,e=c("tr",a.body).eq(0).height(),d=a.host.height(),d=d-a.header.height(),d=d-a.footer.height(),d=d-f-(a.container.height()- -(f+a.table.height())),a=Math.floor(d/e);!isNaN(a)&&(Infinity!==a&&a!==b.page.len())&&b.page.len(a).draw()},_attach:function(){var a=this,b=c("<object/>").css({position:"absolute",top:0,left:0,height:"100%",width:"100%",zIndex:-1}).attr("type","text/html");b[0].onload=function(){var b=this.contentDocument.body,c=b.offsetHeight;this.contentDocument.defaultView.onresize=function(){var d=b.clientHeight||b.offsetHeight;d!==c&&(c=d,a._size())}};b.appendTo(this.s.host).attr("data","about:blank")}};c.fn.dataTable.PageResize= -e;c.fn.DataTable.PageResize=e;c(document).on("init.dt",function(a,b){if("dt"===a.namespace){var f=new c.fn.dataTable.Api(b);(c(f.table().node()).hasClass("pageResize")||b.oInit.pageResize||c.fn.dataTable.defaults.pageResize)&&new e(f)}})})(jQuery); diff --git a/dashboard/lib/datatables-plugins/features/pageResize/index.html b/dashboard/lib/datatables-plugins/features/pageResize/index.html deleted file mode 100644 index d1cadbe3..00000000 --- a/dashboard/lib/datatables-plugins/features/pageResize/index.html +++ /dev/null @@ -1,578 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - - <title>DataTables page resize example</title> - - <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.6/css/jquery.dataTables.min.css"> - <style type="text/css"> - div.container { - margin: 0 auto; - max-width: 980px; - } - - #resize_wrapper { - position: relative; - height: 300px; - padding: 0.5em 0.5em 1.5em 0.5em; - border: 1px solid #aaa; - border-radius: 0.5em; - background-color: #f9f9f9; - } - - #resize_handle { - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 1.5em; - border-bottom-right-radius: 0.5em; - border-bottom-left-radius: 0.5em; - text-align: center; - font-size: 0.8em; - line-height: 1.5em; - background-color: #4d90fe; - color: white; - cursor: pointer; - } - - table.dataTable th, - table.dataTable td { - white-space: nowrap; - } - - div.dataTables_length { - display: none; - } - </style> - - <script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script> - <script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.6/js/jquery.dataTables.min.js"></script> - <script type="text/javascript" language="javascript" src="dataTables.pageResize.js"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready( function () { - // Resize the demo table container with mouse drag - var wrapper = $('#resize_wrapper'); - $('#resize_handle').on( 'mousedown', function (e) { - var mouseStartY = e.pageY; - var resizeStartHeight = wrapper.height(); - - $(document) - .on( 'mousemove.demo', function (e) { - var height = resizeStartHeight + (e.pageY - mouseStartY); - if ( height < 180 ) { - height = 180; - } - - wrapper.height( height ); - } ) - .on( 'mouseup.demo', function (e) { - $(document).off( 'mousemove.demo mouseup.demo' ); - } ); - - return false; - } ); - - // DataTables initialisation - var table = $('#example').DataTable( { - pageResize: true, - columnDefs: [ - { visible: false, targets: 1 } - ] - } ); - } ); - </script> - </head> - <body> - <div class="container"> - <div id="resize_wrapper"> - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - <div id="resize_handle">Click and drag me!</div> - </div> - - </div> - </body> -</html> \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.css b/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.css deleted file mode 100644 index 10a03e63..00000000 --- a/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.css +++ /dev/null @@ -1,6 +0,0 @@ - - -table.dataTable span.highlight { - background-color: #FFFF88; -} - diff --git a/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.js b/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.js deleted file mode 100644 index 538f63f9..00000000 --- a/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.js +++ /dev/null @@ -1,81 +0,0 @@ -/*! SearchHighlight for DataTables v1.0.1 - * 2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary SearchHighlight - * @description Search term highlighter for DataTables - * @version 1.0.1 - * @file dataTables.searchHighlight.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2014 SpryMedia Ltd. - * - * License MIT - http://datatables.net/license/mit - * - * This feature plug-in for DataTables will highlight search terms in the - * DataTable as they are entered into the main search input element, or via the - * `search()` API method. - * - * It depends upon the jQuery Highlight plug-in by Bartek Szopka: - * http://bartaz.github.io/sandbox.js/jquery.highlight.js - * - * Search highlighting in DataTables can be enabled by: - * - * * Adding the class `searchHighlight` to the HTML table - * * Setting the `searchHighlight` parameter in the DataTables initialisation to - * be true - * * Setting the `searchHighlight` parameter to be true in the DataTables - * defaults (thus causing all tables to have this feature) - i.e. - * `$.fn.dataTable.defaults.searchHighlight = true`. - * - * For more detailed information please see: - * http://datatables.net/blog/2014-10-22 - */ - -(function(window, document, $){ - - -function highlight( body, table ) -{ - // Removing the old highlighting first - body.unhighlight(); - - // Don't highlight the "not found" row, so we get the rows using the api - if ( table.rows( { filter: 'applied' } ).data().length ) { - body.highlight( $.trim( table.search() ).split(/\s+/) ); - } -} - -// Listen for DataTables initialisations -$(document).on( 'init.dt.dth', function (e, settings, json) { - if ( e.namespace !== 'dt' ) { - return; - } - - var table = new $.fn.dataTable.Api( settings ); - var body = $( table.table().body() ); - - if ( - $( table.table().node() ).hasClass( 'searchHighlight' ) || // table has class - settings.oInit.searchHighlight || // option specified - $.fn.dataTable.defaults.searchHighlight // default set - ) { - table - .on( 'draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth', function () { - highlight( body, table ); - } ) - .on( 'destroy', function () { - // Remove event handler - table.off( 'draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth' ); - } ); - - // initial highlight for state saved conditions and initial states - if ( table.search() ) { - highlight( body, table ); - } - } -} ); - - -})(window, document, jQuery); diff --git a/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.min.js b/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.min.js deleted file mode 100644 index 38758710..00000000 --- a/dashboard/lib/datatables-plugins/features/searchHighlight/dataTables.searchHighlight.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - SearchHighlight for DataTables v1.0.1 - 2014 SpryMedia Ltd - datatables.net/license -*/ -(function(h,g,b){function e(d,c){d.unhighlight();c.rows({filter:"applied"}).data().length&&d.highlight(b.trim(c.search()).split(/\s+/))}b(g).on("init.dt.dth",function(d,c){if("dt"===d.namespace){var a=new b.fn.dataTable.Api(c),f=b(a.table().body());if(b(a.table().node()).hasClass("searchHighlight")||c.oInit.searchHighlight||b.fn.dataTable.defaults.searchHighlight)a.on("draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth",function(){e(f,a)}).on("destroy",function(){a.off("draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth")}), -a.search()&&e(f,a)}})})(window,document,jQuery); diff --git a/dashboard/lib/datatables-plugins/filtering/row-based/TableTools.ShowSelectedOnly.js b/dashboard/lib/datatables-plugins/filtering/row-based/TableTools.ShowSelectedOnly.js deleted file mode 100644 index 6c0c9cd9..00000000 --- a/dashboard/lib/datatables-plugins/filtering/row-based/TableTools.ShowSelectedOnly.js +++ /dev/null @@ -1,168 +0,0 @@ -/** - * Used in combination with TableTools and selectable rows, this will allow you - * to switch between showing all rows and just the selected ones. - * - * @name Show selected only - * @summary Show only selected rows, or all rows, through filtering - * @requires TableTools - * @author [Caleb Harrelson](http://stackoverflow.com/users/8507/phloopy) - * - * @example - * $('#example').dataTable({ - * "sDom": 'T<"clear">Sfrtip', - * "oTableTools": { - * "sRowSelect": "multi", - * }, - * "oLanguage": { - * "oFilterSelectedOptions": { - * AllText: "All Widgets", - * SelectedText: "Selected Widgets" - * } - * } - * }); - */ - -(function (window, document, $, undefined) { - - $.fn.dataTable.SelectedLengthMenu = function(oSettings) { - if (oSettings.oScroll.bInfinite) { - return null; - } - - /* This can be overruled by not using the _MENU_ var/macro in the language variable */ - var sName = 'name="' + oSettings.sTableId + '_length"'; - var sStdMenu = '<select size="1" ' + sName + '>'; - var i, iLen; - var aLengthMenu = oSettings.aLengthMenu; - - if (aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' && - typeof aLengthMenu[1] === 'object') { - for (i = 0, iLen = aLengthMenu[0].length; i < iLen; i++) { - sStdMenu += '<option value="' + aLengthMenu[0][i] + '">' + aLengthMenu[1][i] + '</option>'; - } - } else { - for (i = 0, iLen = aLengthMenu.length; i < iLen; i++) { - sStdMenu += '<option value="' + aLengthMenu[i] + '">' + aLengthMenu[i] + '</option>'; - } - } - sStdMenu += '</select>'; - - // select box to show all or only selected items - var oFilterSelectedOptions = oSettings.oLanguage.oFilterSelectedOptions; - if (!oFilterSelectedOptions) - oFilterSelectedOptions = { "AllText": "All Items", "SelectedText": "Selected Items" }; - - var sSelectedMenu = '<select name="' + oSettings.sTableId + '_selectedFilter">'; - if (typeof oFilterSelectedOptions === 'object') { - sSelectedMenu += '<option value="All">' + oFilterSelectedOptions.AllText + '</option>'; - sSelectedMenu += '<option value="Selected">' + oFilterSelectedOptions.SelectedText + '</option>'; - } else { - sSelectedMenu += '<option value="All">' + oFilterSelectedOptions[0] + '</option>'; - sSelectedMenu += '<option value="Selected">' + oFilterSelectedOptions[1] + '</option>'; - } - sSelectedMenu += '</select>'; - - - - var nLength = document.createElement('div'); - if (!oSettings.aanFeatures.l) { - nLength.id = oSettings.sTableId + '_length'; - } - nLength.className = oSettings.oClasses.sLength; - var sLengthMenu = oSettings.oLanguage.sLengthMenu; - if (sLengthMenu == 'Show _MENU_ entries') - sLengthMenu = 'Show _MENU_ of _SELECTEDMENU_'; - - nLength.innerHTML = '<span>' + sLengthMenu.replace('_MENU_', sStdMenu).replace('_SELECTEDMENU_', sSelectedMenu) + '</span>'; - - var $lengthSelect = $('select[name="' + oSettings.sTableId + '_length"]', nLength); - if ($lengthSelect.length == 0) - $lengthSelect = $('select :eq(0)', nLength); - - /* - * Set the length to the current display length - thanks to Andrea Pavlovic for this fix, - * and Stefan Skopnik for fixing the fix! - */ - $lengthSelect.find('option[value="' + oSettings._iDisplayLength + '"]', nLength).attr("selected", true); - - - $lengthSelect.bind('change.DT', function(e) { - var iVal = $(this).val(); - - /* Update all other length options for the new display */ - var n = oSettings.aanFeatures.S; - for (i = 0, iLen = n.length; i < iLen; i++) { - if (n[i] != this.parentNode) { - $('select', n[i]).val(iVal); - } - } - - /* Redraw the table */ - oSettings._iDisplayLength = parseInt(iVal, 10); - oSettings.oApi._fnCalculateEnd(oSettings); - - /* If we have space to show extra rows (backing up from the end point - then do so */ - if (oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay()) { - oSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength; - if (oSettings._iDisplayStart < 0) { - oSettings._iDisplayStart = 0; - } - } - - if (oSettings._iDisplayLength == -1) { - oSettings._iDisplayStart = 0; - } - - oSettings.oApi._fnDraw(oSettings); - }); - - - var $filterSelectedSelect = $('select[name="' + oSettings.sTableId + '_selectedFilter"]', nLength); - if ($filterSelectedSelect.length == 0) - $filterSelectedSelect = $('select :eq(1)', nLength); - - $filterSelectedSelect.find('option[value="' + oSettings._sFilterSelected + '"]', nLength).attr('selected', true); - - $filterSelectedSelect.on('change', function () { - oSettings._sFilterSelected = $(this).val(); - $('#' + oSettings.sTableId).dataTable().fnDraw(); - }); - - - $('select', nLength).attr('aria-controls', oSettings.sTableId); - - return nLength; - }; - - $.fn.dataTableExt.afnFiltering.push( - function (oSettings, aData, iDataIndex) { - var $filterSelectedSelect = $('select[name="' + oSettings.sTableId + '_selectedFilter"]'); - if ($filterSelectedSelect.length == 0) - return true; // feature not enabled - - if ($filterSelectedSelect.val() == 'All') - return true; // all items selected - - - var oTable = $('#' + oSettings.sTableId).dataTable(); - var row = oTable.fnGetNodes(iDataIndex); - var oTableTools = TableTools.fnGetInstance(oSettings.sTableId); - var isSelected = oTableTools.fnIsSelected(row); - - return isSelected; - } - ); - - - // Subscribe the feature plug-in to DataTables, ready for use - $.fn.dataTableExt.aoFeatures.push({ - "fnInit": function (oSettings) { - return new $.fn.dataTable.SelectedLengthMenu(oSettings); - }, - "cFeature": "O", - "sFeature": "SelectedLengthMenu" - }); - - - -})(window, document, jQuery); \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/filtering/row-based/range_dates.js b/dashboard/lib/datatables-plugins/filtering/row-based/range_dates.js deleted file mode 100644 index 591b482e..00000000 --- a/dashboard/lib/datatables-plugins/filtering/row-based/range_dates.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Filter a column on a specific date range. Note that you will likely need - * to change the id's on the inputs and the columns in which the start and - * end date exist. - * - * @name Date range filter - * @summary Filter the table based on two dates in different columns - * @author _guillimon_ - * - * @example - * $(document).ready(function() { - * var table = $('#example').DataTable(); - * - * // Add event listeners to the two range filtering inputs - * $('#min').keyup( function() { table.draw(); } ); - * $('#max').keyup( function() { table.draw(); } ); - * } ); - */ - -$.fn.dataTableExt.afnFiltering.push( - function( oSettings, aData, iDataIndex ) { - var iFini = document.getElementById('fini').value; - var iFfin = document.getElementById('ffin').value; - var iStartDateCol = 6; - var iEndDateCol = 7; - - iFini=iFini.substring(6,10) + iFini.substring(3,5)+ iFini.substring(0,2); - iFfin=iFfin.substring(6,10) + iFfin.substring(3,5)+ iFfin.substring(0,2); - - var datofini=aData[iStartDateCol].substring(6,10) + aData[iStartDateCol].substring(3,5)+ aData[iStartDateCol].substring(0,2); - var datoffin=aData[iEndDateCol].substring(6,10) + aData[iEndDateCol].substring(3,5)+ aData[iEndDateCol].substring(0,2); - - if ( iFini === "" && iFfin === "" ) - { - return true; - } - else if ( iFini <= datofini && iFfin === "") - { - return true; - } - else if ( iFfin >= datoffin && iFini === "") - { - return true; - } - else if (iFini <= datofini && iFfin >= datoffin) - { - return true; - } - return false; - } -); diff --git a/dashboard/lib/datatables-plugins/filtering/row-based/range_numbers.js b/dashboard/lib/datatables-plugins/filtering/row-based/range_numbers.js deleted file mode 100644 index ca585756..00000000 --- a/dashboard/lib/datatables-plugins/filtering/row-based/range_numbers.js +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Filter a specific numeric column on the value being between two given - * numbers. Note that you will likely need to change the id's on the inputs - * and the column in which the numeric value is given. - * - * @summary Filter the data between two numbers (inclusive) - * @name Range filtering (numbers) - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $(document).ready(function() { - * // Initialise datatables - * var table = $('#example').DataTable(); - * - * // Add event listeners to the two range filtering inputs - * $('#min').keyup( function() { table.draw(); } ); - * $('#max').keyup( function() { table.draw(); } ); - * } ); - */ - -jQuery.fn.dataTableExt.afnFiltering.push( - function( oSettings, aData, iDataIndex ) { - var iColumn = 3; - var iMin = document.getElementById('min').value * 1; - var iMax = document.getElementById('max').value * 1; - - var iVersion = aData[iColumn] == "-" ? 0 : aData[iColumn]*1; - if ( iMin === "" && iMax === "" ) - { - return true; - } - else if ( iMin === "" && iVersion < iMax ) - { - return true; - } - else if ( iMin < iVersion && "" === iMax ) - { - return true; - } - else if ( iMin < iVersion && iVersion < iMax ) - { - return true; - } - return false; - } -); diff --git a/dashboard/lib/datatables-plugins/filtering/type-based/accent-neutralise.js b/dashboard/lib/datatables-plugins/filtering/type-based/accent-neutralise.js deleted file mode 100644 index 8bb700ef..00000000 --- a/dashboard/lib/datatables-plugins/filtering/type-based/accent-neutralise.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * When search a table with accented characters, it can be frustrating to have - * an input such as _Zurich_ not match _Zürich_ in the table (`u !== ü`). This - * type based search plug-in replaces the built-in string formatter in - * DataTables with a function that will remove replace the accented characters - * with their unaccented counterparts for fast and easy filtering. - * - * Note that with the accented characters being replaced, a search input using - * accented characters will no longer match. The second example below shows - * how the function can be used to remove accents from the search input as well, - * to mitigate this problem. - * - * @summary Replace accented characters with unaccented counterparts - * @name Accent neutralise - * @author Allan Jardine - * - * @example - * $(document).ready(function() { - * $('#example').dataTable(); - * } ); - * - * @example - * $(document).ready(function() { - * var table = $('#example').dataTable(); - * - * // Remove accented character from search input as well - * $('#myInput').keyup( function () { - * table - * .search( - * jQuery.fn.DataTable.ext.type.search.string( this ) - * ) - * .draw() - * } ); - * } ); - */ - -jQuery.fn.DataTable.ext.type.search.string = function ( data ) { - return ! data ? - '' : - typeof data === 'string' ? - data - .replace( /έ/g, 'ε') - .replace( /ύ/g, 'υ') - .replace( /ό/g, 'ο') - .replace( /ώ/g, 'ω') - .replace( /ά/g, 'α') - .replace( /ί/g, 'ι') - .replace( /ή/g, 'η') - .replace( /\n/g, ' ' ) - .replace( /á/g, 'a' ) - .replace( /é/g, 'e' ) - .replace( /í/g, 'i' ) - .replace( /ó/g, 'o' ) - .replace( /ú/g, 'u' ) - .replace( /ê/g, 'e' ) - .replace( /î/g, 'i' ) - .replace( /ô/g, 'o' ) - .replace( /è/g, 'e' ) - .replace( /ï/g, 'i' ) - .replace( /ü/g, 'u' ) - .replace( /ã/g, 'a' ) - .replace( /õ/g, 'o' ) - .replace( /ç/g, 'c' ) - .replace( /ì/g, 'i' ) : - data; -}; diff --git a/dashboard/lib/datatables-plugins/filtering/type-based/html.js b/dashboard/lib/datatables-plugins/filtering/type-based/html.js deleted file mode 100644 index 7fec55a1..00000000 --- a/dashboard/lib/datatables-plugins/filtering/type-based/html.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * DataTables has a built in type called `html` which will strip HTML tags - * from a search string, but it doesn't cope with nested HTML inside another - * element's attributes (for example DOM0 events with have HTML in them). This - * plug-in function overrules the built-in method and provides complete HTML - * tag removal. - * - * Note that this function is not included in DataTables by - * default because it is slightly slower than the built-in method, which is - * good enough for by far the majority of use cases. - * - * @summary Strip HTML using DOM methods - * @name html - * @author _guillimon_ - * - * @example - * $(document).ready(function() { - * $('#example').dataTable({ - * "columnDefs": [ - * { type: "html", target: 0 } - * ] - * }); - * } ); - */ - -(function () { - -var _div = document.createElement('div'); - -jQuery.fn.dataTable.ext.type.search.html = function ( data ) { - _div.innerHTML = data; - - return _div.textContent ? - _div.textContent.replace(/\n/g," ") : - _div.innerText.replace(/\n/g," "); -}; - -})(); diff --git a/dashboard/lib/datatables-plugins/filtering/type-based/phoneNumber.js b/dashboard/lib/datatables-plugins/filtering/type-based/phoneNumber.js deleted file mode 100644 index ed1a20cf..00000000 --- a/dashboard/lib/datatables-plugins/filtering/type-based/phoneNumber.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Telephone numbers are a common data point to display in HTML tables, and are - * often formatted (e.g. `dt-string 555-1234`). Typically, when searching a - * table a user would need to enter the number in exactly the same format it is - * displayed in, but this is not always convenient (e.g. you might search for - * `dt-string 5551`). - * - * This filtering plug-in will allow both forms to be matched be providing both - * the formatted and de-formatted data to the table's search. - * - * @summary Make phone numbers searchable formatted or unformatted - * @name Phone number - * @author Allan Jardine - * - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'phoneNumber', target: 4 } - * ] - * } ); - * } ); - */ - -jQuery.fn.DataTable.ext.type.search.phoneNumber = function ( data ) { - return ! data ? - '' : - typeof data === 'string' ? - data + data.replace(/[ \-]/g, '') : - data; -}; diff --git a/dashboard/lib/datatables-plugins/i18n/Afrikaans.lang b/dashboard/lib/datatables-plugins/i18n/Afrikaans.lang deleted file mode 100644 index ac35b40d..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Afrikaans.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Afrikaans translation - * @name Afrikaans - * @anchor Afrikaans - * @author <a href="http://www.ajoft.com">Ajoft Software</a> - */ - -{ - "sEmptyTable": "Geen data beskikbaar in tabel", - "sInfo": "uitstalling _START_ to _END_ of _TOTAL_ inskrywings", - "sInfoEmpty": "uitstalling 0 to 0 of 0 inskrywings", - "sInfoFiltered": "(gefiltreer uit _MAX_ totaal inskrywings)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "uitstal _MENU_ inskrywings", - "sLoadingRecords": "laai...", - "sProcessing": "verwerking...", - "sSearch": "soektog:", - "sZeroRecords": "Geen treffers gevind", - "oPaginate": { - "sFirst": "eerste", - "sLast": "laaste", - "sNext": "volgende", - "sPrevious": "vorige" - }, - "oAria": { - "sSortAscending": ": aktiveer kolom stygende te sorteer", - "sSortDescending": ": aktiveer kolom orde te sorteer" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Albanian.lang b/dashboard/lib/datatables-plugins/i18n/Albanian.lang deleted file mode 100644 index f2313982..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Albanian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Albanian translation - * @name Albanian - * @anchor Albanian - * @author Besnik Belegu - */ - -{ - "sEmptyTable": "Nuk ka asnjë të dhënë në tabele", - "sInfo": "Duke treguar _START_ deri _END_ prej _TOTAL_ reshtave", - "sInfoEmpty": "Duke treguar 0 deri 0 prej 0 reshtave", - "sInfoFiltered": "(të filtruara nga gjithësej _MAX_ reshtave)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Shiko _MENU_ reshta", - "sLoadingRecords": "Duke punuar...", - "sProcessing": "Duke procesuar...", - "sSearch": "Kërkoni:", - "sZeroRecords": "Asnjë e dhënë nuk u gjet", - "oPaginate": { - "sFirst": "E para", - "sLast": "E Fundit", - "sNext": "Tjetra", - "sPrevious": "E Kaluara" - }, - "oAria": { - "sSortAscending": ": aktivizo për të sortuar kolumnin me vlera në ngritje", - "sSortDescending": ": aktivizo për të sortuar kolumnin me vlera në zbritje" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Arabic.lang b/dashboard/lib/datatables-plugins/i18n/Arabic.lang deleted file mode 100644 index 70ebad63..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Arabic.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Arabic translation - * @name Arabic - * @anchor Arabic - * @author Ossama Khayat - */ - -{ - "sProcessing": "جاري التحميل...", - "sLengthMenu": "أظهر مُدخلات _MENU_", - "sZeroRecords": "لم يُعثر على أية سجلات", - "sInfo": "إظهار _START_ إلى _END_ من أصل _TOTAL_ مُدخل", - "sInfoEmpty": "يعرض 0 إلى 0 من أصل 0 سجلّ", - "sInfoFiltered": "(منتقاة من مجموع _MAX_ مُدخل)", - "sInfoPostFix": "", - "sSearch": "ابحث:", - "sUrl": "", - "oPaginate": { - "sFirst": "الأول", - "sPrevious": "السابق", - "sNext": "التالي", - "sLast": "الأخير" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Armenian.lang b/dashboard/lib/datatables-plugins/i18n/Armenian.lang deleted file mode 100644 index a7f6e16f..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Armenian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Armenian - translation - * @name Armenian - * @anchor Armenian - * @author <a href="http://www.voznisoft.com/">Levon Levonyan</a> - */ - -{ - "sEmptyTable": "Տվյալները բացակայում են", - "sProcessing": "Կատարվում է...", - "sInfoThousands": ",", - "sLengthMenu": "Ցուցադրել _MENU_ արդյունքներ մեկ էջում", - "sLoadingRecords": "Բեռնվում է ...", - "sZeroRecords": "Հարցմանը համապատասխանող արդյունքներ չկան", - "sInfo": "Ցուցադրված են _START_-ից _END_ արդյունքները ընդհանուր _TOTAL_-ից", - "sInfoEmpty": "Արդյունքներ գտնված չեն", - "sInfoFiltered": "(ֆիլտրվել է ընդհանուր _MAX_ արդյունքներից)", - "sInfoPostFix": "", - "sSearch": "Փնտրել", - "oPaginate": { - "sFirst": "Առաջին էջ", - "sPrevious": "Նախորդ էջ", - "sNext": "Հաջորդ էջ", - "sLast": "Վերջին էջ" - }, - "oAria": { - "sSortAscending": ": ակտիվացրեք աճման կարգով դասավորելու համար", - "sSortDescending": ": ակտիվացրեք նվազման կարգով դասավորելու համար" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Azerbaijan.lang b/dashboard/lib/datatables-plugins/i18n/Azerbaijan.lang deleted file mode 100644 index 9d681f4f..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Azerbaijan.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Azerbaijan translation - * @name Azerbaijan - * @anchor Azerbaijan - * @author H.Huseyn - */ - -{ - "sEmptyTable": "Cədvəldə heç bir məlumat yoxdur", - "sInfo": " _TOTAL_ Nəticədən _START_ - _END_ Arası Nəticələr", - "sInfoEmpty": "Nəticə Yoxdur", - "sInfoFiltered": "( _MAX_ Nəticə İçindən Tapılanlar)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Səhifədə _MENU_ Nəticə Göstər", - "sLoadingRecords": "Yüklənir...", - "sProcessing": "Gözləyin...", - "sSearch": "Axtarış:", - "sZeroRecords": "Nəticə Tapılmadı.", - "oPaginate": { - "sFirst": "İlk", - "sLast": "Axırıncı", - "sNext": "Sonraki", - "sPrevious": "Öncəki" - }, - "oAria": { - "sSortAscending": ": sütunu artma sırası üzərə aktiv etmək", - "sSortDescending": ": sütunu azalma sırası üzərə aktiv etmək" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Bangla.lang b/dashboard/lib/datatables-plugins/i18n/Bangla.lang deleted file mode 100644 index ee274586..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Bangla.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Bangla translation - * @name Bangla - * @anchor Bangla - * @author <a href="http://khaledcse06.wordpress.com">Md. Khaled Ben Islam</a> - */ - -{ - "sProcessing": "প্রসেসিং হচ্ছে...", - "sLengthMenu": "_MENU_ টা এন্ট্রি দেখাও", - "sZeroRecords": "আপনি যা অনুসন্ধান করেছেন তার সাথে মিলে যাওয়া কোন রেকর্ড খুঁজে পাওয়া যায় নাই", - "sInfo": "_TOTAL_ টা এন্ট্রির মধ্যে _START_ থেকে _END_ পর্যন্ত দেখানো হচ্ছে", - "sInfoEmpty": "কোন এন্ট্রি খুঁজে পাওয়া যায় নাই", - "sInfoFiltered": "(মোট _MAX_ টা এন্ট্রির মধ্যে থেকে বাছাইকৃত)", - "sInfoPostFix": "", - "sSearch": "অনুসন্ধান:", - "sUrl": "", - "oPaginate": { - "sFirst": "প্রথমটা", - "sPrevious": "আগেরটা", - "sNext": "পরবর্তীটা", - "sLast": "শেষেরটা" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Basque.lang b/dashboard/lib/datatables-plugins/i18n/Basque.lang deleted file mode 100644 index 96df1a8b..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Basque.lang +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Basque translation - * @name Basque - * @anchor Basque - * @author <a href="https://github.com/xabikip/">Xabi Pico</a> - */ - -{ - "sProcessing": "Prozesatzen...", - "sLengthMenu": "Erakutsi _MENU_ erregistro", - "sZeroRecords": "Ez da emaitzarik aurkitu", - "sEmptyTable": "Taula hontan ez dago inongo datu erabilgarririk", - "sInfo": "_START_ -etik _END_ -erako erregistroak erakusten, guztira _TOTAL_ erregistro", - "sInfoEmpty": "0tik 0rako erregistroak erakusten, guztira 0 erregistro", - "sInfoFiltered": "(guztira _MAX_ erregistro iragazten)", - "sInfoPostFix": "", - "sSearch": "Aurkitu:", - "sUrl": "", - "sInfoThousands": ",", - "sLoadingRecords": "Abiarazten...", - "oPaginate": { - "sFirst": "Lehena", - "sLast": "Azkena", - "sNext": "Hurrengoa", - "sPrevious": "Aurrekoa" - }, - "oAria": { - "sSortAscending": ": Zutabea goranzko eran ordenatzeko aktibatu ", - "sSortDescending": ": Zutabea beheranzko eran ordenatzeko aktibatu" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Belarusian.lang b/dashboard/lib/datatables-plugins/i18n/Belarusian.lang deleted file mode 100644 index 2869e407..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Belarusian.lang +++ /dev/null @@ -1,27 +0,0 @@ -/** -* Belarusian translation -* @name Belarusian -* @anchor Belarusian -* @author vkachurka -*/ -{ - "sProcessing": "Пачакайце...", - "sLengthMenu": "Паказваць _MENU_ запісаў", - "sZeroRecords": "Запісы адсутнічаюць.", - "sInfo": "Запісы з _START_ па _END_ з _TOTAL_ запісаў", - "sInfoEmpty": "Запісы з 0 па 0 з 0 запісаў", - "sInfoFiltered": "(адфільтравана з _MAX_ запісаў)", - "sInfoPostFix": "", - "sSearch": "Пошук:", - "sUrl": "", - "oPaginate": { - "sFirst": "Першая", - "sPrevious": "Папярэдняя", - "sNext": "Наступная", - "sLast": "Апошняя" - }, - "oAria": { - "sSortAscending": ": актываваць для сартавання слупка па ўзрастанні", - "sSortDescending": ": актываваць для сартавання слупка па змяншэнні" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Bulgarian.lang b/dashboard/lib/datatables-plugins/i18n/Bulgarian.lang deleted file mode 100644 index d8e37f11..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Bulgarian.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Bulgarian translation - * @name Bulgarian - * @anchor Bulgarian - * @author Rostislav Stoyanov - */ - -{ - "sProcessing": "Обработка на резултатите...", - "sLengthMenu": "Показване на _MENU_ резултата", - "sZeroRecords": "Няма намерени резултати", - "sInfo": "Показване на резултати от _START_ до _END_ от общо _TOTAL_", - "sInfoEmpty": "Показване на резултати от 0 до 0 от общо 0", - "sInfoFiltered": "(филтрирани от общо _MAX_ резултата)", - "sInfoPostFix": "", - "sSearch": "Търсене във всички колони:", - "sUrl": "", - "oPaginate": { - "sFirst": "Първа", - "sPrevious": "Предишна", - "sNext": "Следваща", - "sLast": "Последна" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Catalan.lang b/dashboard/lib/datatables-plugins/i18n/Catalan.lang deleted file mode 100644 index e7b997c0..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Catalan.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Catalan translation - * @name Catalan - * @anchor Catalan - * @author Sergi - */ - -{ - "sProcessing": "Processant...", - "sLengthMenu": "Mostra _MENU_ registres", - "sZeroRecords": "No s'han trobat registres.", - "sInfo": "Mostrant de _START_ a _END_ de _TOTAL_ registres", - "sInfoEmpty": "Mostrant de 0 a 0 de 0 registres", - "sInfoFiltered": "(filtrat de _MAX_ total registres)", - "sInfoPostFix": "", - "sSearch": "Filtrar:", - "sUrl": "", - "oPaginate": { - "sFirst": "Primer", - "sPrevious": "Anterior", - "sNext": "Següent", - "sLast": "Últim" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Chinese-traditional.lang b/dashboard/lib/datatables-plugins/i18n/Chinese-traditional.lang deleted file mode 100644 index 538ca695..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Chinese-traditional.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Chinese (traditional) translation - * @name Chinese (traditional) - * @anchor Chinese (traditional) - * @author <a href="https://gimmerank.com/">GimmeRank Affiliate</a> - */ - -{ - "sProcessing": "處理中...", - "sLengthMenu": "顯示 _MENU_ 項結果", - "sZeroRecords": "沒有匹配結果", - "sInfo": "顯示第 _START_ 至 _END_ 項結果,共 _TOTAL_ 項", - "sInfoEmpty": "顯示第 0 至 0 項結果,共 0 項", - "sInfoFiltered": "(從 _MAX_ 項結果過濾)", - "sInfoPostFix": "", - "sSearch": "搜索:", - "sUrl": "", - "oPaginate": { - "sFirst": "首頁", - "sPrevious": "上頁", - "sNext": "下頁", - "sLast": "尾頁" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Chinese.lang b/dashboard/lib/datatables-plugins/i18n/Chinese.lang deleted file mode 100644 index 648a7e0d..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Chinese.lang +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Chinese translation - * @name Chinese - * @anchor Chinese - * @author <a href="http://docs.jquery.com/UI">Chi Cheng</a> - */ - -{ - "sProcessing": "处理中...", - "sLengthMenu": "显示 _MENU_ 项结果", - "sZeroRecords": "没有匹配结果", - "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", - "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", - "sInfoFiltered": "(由 _MAX_ 项结果过滤)", - "sInfoPostFix": "", - "sSearch": "搜索:", - "sUrl": "", - "sEmptyTable": "表中数据为空", - "sLoadingRecords": "载入中...", - "sInfoThousands": ",", - "oPaginate": { - "sFirst": "首页", - "sPrevious": "上页", - "sNext": "下页", - "sLast": "末页" - }, - "oAria": { - "sSortAscending": ": 以升序排列此列", - "sSortDescending": ": 以降序排列此列" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Croatian.lang b/dashboard/lib/datatables-plugins/i18n/Croatian.lang deleted file mode 100644 index 77214ee5..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Croatian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Croatian translation - * @name Croatian - * @anchor Croatian - * @author Predrag Mušić and _hrvoj3e_ - */ - -{ - "sEmptyTable": "Nema podataka u tablici", - "sInfo": "Prikazano _START_ do _END_ od _TOTAL_ rezultata", - "sInfoEmpty": "Prikazano 0 do 0 od 0 rezultata", - "sInfoFiltered": "(filtrirano iz _MAX_ ukupnih rezultata)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Prikaži _MENU_ rezultata po stranici", - "sLoadingRecords": "Dohvaćam...", - "sProcessing": "Obrađujem...", - "sSearch": "Pretraži:", - "sZeroRecords": "Ništa nije pronađeno", - "oPaginate": { - "sFirst": "Prva", - "sPrevious": "Nazad", - "sNext": "Naprijed", - "sLast": "Zadnja" - }, - "oAria": { - "sSortAscending": ": aktiviraj za rastući poredak", - "sSortDescending": ": aktiviraj za padajući poredak" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Czech.lang b/dashboard/lib/datatables-plugins/i18n/Czech.lang deleted file mode 100644 index f2cbd4b3..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Czech.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Czech translation - * @name Czech - * @anchor Czech - * @author <a href="http://blog.magerio.cz/">Magerio</a> - */ - -{ - "sEmptyTable": "Tabulka neobsahuje žádná data", - "sInfo": "Zobrazuji _START_ až _END_ z celkem _TOTAL_ záznamů", - "sInfoEmpty": "Zobrazuji 0 až 0 z 0 záznamů", - "sInfoFiltered": "(filtrováno z celkem _MAX_ záznamů)", - "sInfoPostFix": "", - "sInfoThousands": " ", - "sLengthMenu": "Zobraz záznamů _MENU_", - "sLoadingRecords": "Načítám...", - "sProcessing": "Provádím...", - "sSearch": "Hledat:", - "sZeroRecords": "Žádné záznamy nebyly nalezeny", - "oPaginate": { - "sFirst": "První", - "sLast": "Poslední", - "sNext": "Další", - "sPrevious": "Předchozí" - }, - "oAria": { - "sSortAscending": ": aktivujte pro řazení sloupce vzestupně", - "sSortDescending": ": aktivujte pro řazení sloupce sestupně" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Danish.lang b/dashboard/lib/datatables-plugins/i18n/Danish.lang deleted file mode 100644 index 1d98cc52..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Danish.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Danish translation - * @name Danish - * @anchor Danish - * @author <a href="http://www.kor.dk/">Werner Knudsen</a> - */ - -{ - "sProcessing": "Henter...", - "sLengthMenu": "Vis _MENU_ linjer", - "sZeroRecords": "Ingen linjer matcher søgningen", - "sInfo": "Viser _START_ til _END_ af _TOTAL_ linjer", - "sInfoEmpty": "Viser 0 til 0 af 0 linjer", - "sInfoFiltered": "(filtreret fra _MAX_ linjer)", - "sInfoPostFix": "", - "sSearch": "Søg:", - "sUrl": "", - "oPaginate": { - "sFirst": "Første", - "sPrevious": "Forrige", - "sNext": "Næste", - "sLast": "Sidste" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Dutch.lang b/dashboard/lib/datatables-plugins/i18n/Dutch.lang deleted file mode 100644 index 3ac7ad72..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Dutch.lang +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Dutch translation - * @name Dutch - * @anchor Dutch - * @author <a href="http://www.blikgooien.nl/">Erwin Kerk</a> and <i>ashwin</i> - */ - -{ - "sProcessing": "Bezig...", - "sLengthMenu": "_MENU_ resultaten weergeven", - "sZeroRecords": "Geen resultaten gevonden", - "sInfo": "_START_ tot _END_ van _TOTAL_ resultaten", - "sInfoEmpty": "Geen resultaten om weer te geven", - "sInfoFiltered": " (gefilterd uit _MAX_ resultaten)", - "sInfoPostFix": "", - "sSearch": "Zoeken:", - "sEmptyTable": "Geen resultaten aanwezig in de tabel", - "sInfoThousands": ".", - "sLoadingRecords": "Een moment geduld aub - bezig met laden...", - "oPaginate": { - "sFirst": "Eerste", - "sLast": "Laatste", - "sNext": "Volgende", - "sPrevious": "Vorige" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/English.lang b/dashboard/lib/datatables-plugins/i18n/English.lang deleted file mode 100644 index 5fa998aa..00000000 --- a/dashboard/lib/datatables-plugins/i18n/English.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * English - this is the default DataTables ships with - * @name English - * @anchor English - * @author <a href="http://www.sprymedia.co.uk/">Allan Jardine</a> - */ - -{ - "sEmptyTable": "No data available in table", - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", - "sInfoEmpty": "Showing 0 to 0 of 0 entries", - "sInfoFiltered": "(filtered from _MAX_ total entries)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Show _MENU_ entries", - "sLoadingRecords": "Loading...", - "sProcessing": "Processing...", - "sSearch": "Search:", - "sZeroRecords": "No matching records found", - "oPaginate": { - "sFirst": "First", - "sLast": "Last", - "sNext": "Next", - "sPrevious": "Previous" - }, - "oAria": { - "sSortAscending": ": activate to sort column ascending", - "sSortDescending": ": activate to sort column descending" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Estonian.lang b/dashboard/lib/datatables-plugins/i18n/Estonian.lang deleted file mode 100644 index 0263fe52..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Estonian.lang +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Estonian translation - * @name Estonian - * @anchor Estonian - * @author <a href="http://www.arts9.com/">Janek Todoruk</a> - */ - -{ - "sProcessing": "Palun oodake, koostan kuvamiseks nimekirja!", - "sLengthMenu": "Näita kirjeid _MENU_ kaupa", - "sZeroRecords": "Otsitavat vastet ei leitud.", - "sInfo": "Kuvatud: _TOTAL_ kirjet (_START_-_END_)", - "sInfoEmpty": "Otsinguvasteid ei leitud", - "sInfoFiltered": " - filteeritud _MAX_ kirje seast.", - "sInfoPostFix": "Kõik kuvatud kirjed põhinevad reaalsetel tulemustel.", - "sSearch": "Otsi kõikide tulemuste seast:", - "oPaginate": { - "sFirst": "Algus", - "sPrevious": "Eelmine", - "sNext": "Järgmine", - "sLast": "Viimane" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Filipino.lang b/dashboard/lib/datatables-plugins/i18n/Filipino.lang deleted file mode 100644 index 30b4bf7f..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Filipino.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Filipino translation - * @name Filipino - * @anchor Filipino - * @author <a href="http://citi360.com/">Citi360</a> - */ - -{ - "sProcessing": "Pagproseso...", - "sLengthMenu": "Ipakita _MENU_ entries", - "sZeroRecords": "Walang katugmang mga talaan na natagpuan", - "sInfo": "Ipinapakita ang _START_ sa _END_ ng _TOTAL_ entries", - "sInfoEmpty": "Ipinapakita ang 0-0 ng 0 entries", - "sInfoFiltered": "(na-filter mula _MAX_ kabuuang entries)", - "sInfoPostFix": "", - "sSearch": "Paghahanap:", - "sUrl": "", - "oPaginate": { - "sFirst": "Unang", - "sPrevious": "Nakaraan", - "sNext": "Susunod", - "sLast": "Huli" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Finnish.lang b/dashboard/lib/datatables-plugins/i18n/Finnish.lang deleted file mode 100644 index fb1b20ae..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Finnish.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Finnish translation - * @name Finnish - * @anchor Finnish - * @author Seppo Äyräväinen - */ - -{ - "sProcessing": "Hetkinen...", - "sLengthMenu": "Näytä kerralla _MENU_ riviä", - "sZeroRecords": "Tietoja ei löytynyt", - "sInfo": "Näytetään rivit _START_ - _END_ (yhteensä _TOTAL_ )", - "sInfoEmpty": "Näytetään 0 - 0 (yhteensä 0)", - "sInfoFiltered": "(suodatettu _MAX_ tuloksen joukosta)", - "sInfoPostFix": "", - "sSearch": "Etsi:", - "sUrl": "", - "oPaginate": { - "sFirst": "Ensimmäinen", - "sPrevious": "Edellinen", - "sNext": "Seuraava", - "sLast": "Viimeinen" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/French.lang b/dashboard/lib/datatables-plugins/i18n/French.lang deleted file mode 100644 index 0acf74bc..00000000 --- a/dashboard/lib/datatables-plugins/i18n/French.lang +++ /dev/null @@ -1,29 +0,0 @@ -/** - * French translation - * @name French - * @anchor French - * @author - */ - -{ - "sProcessing": "Traitement en cours...", - "sSearch": "Rechercher :", - "sLengthMenu": "Afficher _MENU_ éléments", - "sInfo": "Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments", - "sInfoEmpty": "Affichage de l'élément 0 à 0 sur 0 éléments", - "sInfoFiltered": "(filtré de _MAX_ éléments au total)", - "sInfoPostFix": "", - "sLoadingRecords": "Chargement en cours...", - "sZeroRecords": "Aucun élément à afficher", - "sEmptyTable": "Aucune donnée disponible dans le tableau", - "oPaginate": { - "sFirst": "Premier", - "sPrevious": "Précédent", - "sNext": "Suivant", - "sLast": "Dernier" - }, - "oAria": { - "sSortAscending": ": activer pour trier la colonne par ordre croissant", - "sSortDescending": ": activer pour trier la colonne par ordre décroissant" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Galician.lang b/dashboard/lib/datatables-plugins/i18n/Galician.lang deleted file mode 100644 index 22dba945..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Galician.lang +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Galician translation - * @name Galician - * @anchor Galician - * @author <i>Emilio</i> - */ - -{ - "sProcessing": "Procesando...", - "sLengthMenu": "Mostrar _MENU_ rexistros", - "sZeroRecords": "Non se atoparon resultados", - "sEmptyTable": "Ningún dato dispoñible nesta táboa", - "sInfo": "Mostrando rexistros do _START_ ó _END_ dun total de _TOTAL_ rexistros", - "sInfoEmpty": "Mostrando rexistros do 0 ó 0 dun total de 0 rexistros", - "sInfoFiltered": "(filtrado dun total de _MAX_ rexistros)", - "sInfoPostFix": "", - "sSearch": "Buscar:", - "sUrl": "", - "sInfoThousands": ",", - "sLoadingRecords": "Cargando...", - "oPaginate": { - "sFirst": "Primeiro", - "sLast": "Último", - "sNext": "Seguinte", - "sPrevious": "Anterior" - }, - "oAria": { - "sSortAscending": ": Activar para ordear a columna de maneira ascendente", - "sSortDescending": ": Activar para ordear a columna de maneira descendente" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Georgian.lang b/dashboard/lib/datatables-plugins/i18n/Georgian.lang deleted file mode 100644 index 2d424f1e..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Georgian.lang +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Georgian translation - * @name Georgian - * @anchor Georgian - * @author Mikheil Nadareishvili - */ - -{ - "sProcessing": "მიმდინარეობს დამუშავება...", - "sLengthMenu": "აჩვენე _MENU_ ჩანაწერი", - "sZeroRecords": "არაფერი მოიძებნა", - "sInfo": "ნაჩვენებია ჩანაწერები _START_–დან _END_–მდე, სულ _TOTAL_ ჩანაწერია", - "sInfoEmpty": "ნაჩვენებია ჩანაწერები 0–დან 0–მდე, სულ 0 ჩანაწერია", - "sInfoFiltered": "(გაფილტრული შედეგი _MAX_ ჩანაწერიდან)", - "sInfoPostFix": "", - "sSearch": "ძიება:", - "sUrl": "", - "oPaginate": { - "sFirst": "პირველი", - "sPrevious": "წინა", - "sNext": "შემდეგი", - "sLast": "ბოლო" -} diff --git a/dashboard/lib/datatables-plugins/i18n/German.lang b/dashboard/lib/datatables-plugins/i18n/German.lang deleted file mode 100644 index 30421c51..00000000 --- a/dashboard/lib/datatables-plugins/i18n/German.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * German translation - * @name German - * @anchor German - * @author Joerg Holz - */ - -{ - "sEmptyTable": "Keine Daten in der Tabelle vorhanden", - "sInfo": "_START_ bis _END_ von _TOTAL_ Einträgen", - "sInfoEmpty": "0 bis 0 von 0 Einträgen", - "sInfoFiltered": "(gefiltert von _MAX_ Einträgen)", - "sInfoPostFix": "", - "sInfoThousands": ".", - "sLengthMenu": "_MENU_ Einträge anzeigen", - "sLoadingRecords": "Wird geladen...", - "sProcessing": "Bitte warten...", - "sSearch": "Suchen", - "sZeroRecords": "Keine Einträge vorhanden.", - "oPaginate": { - "sFirst": "Erste", - "sPrevious": "Zurück", - "sNext": "Nächste", - "sLast": "Letzte" - }, - "oAria": { - "sSortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren", - "sSortDescending": ": aktivieren, um Spalte absteigend zu sortieren" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Greek.lang b/dashboard/lib/datatables-plugins/i18n/Greek.lang deleted file mode 100644 index 7282cffb..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Greek.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Greek translation - * @name Greek - * @anchor Greek - * @author Abraam Ziogas - */ - -{ - "sProcessing": "Επεξεργασία...", - "sLengthMenu": "Δείξε _MENU_ εγγραφές", - "sZeroRecords": "Δεν βρέθηκαν εγγραφές που να ταιριάζουν", - "sInfo": "Δείχνοντας _START_ εως _END_ από _TOTAL_ εγγραφές", - "sInfoEmpty": "Δείχνοντας 0 εως 0 από 0 εγγραφές", - "sInfoFiltered": "(φιλτραρισμένες από _MAX_ συνολικά εγγραφές)", - "sInfoPostFix": "", - "sSearch": "Αναζήτηση:", - "sUrl": "", - "oPaginate": { - "sFirst": "Πρώτη", - "sPrevious": "Προηγούμενη", - "sNext": "Επόμενη", - "sLast": "Τελευταία" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Gujarati.lang b/dashboard/lib/datatables-plugins/i18n/Gujarati.lang deleted file mode 100644 index 224cd5e6..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Gujarati.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Gujarati translation - * @name Gujarati - * @anchor Gujarati - * @author <a href="http://www.apoto.com/">Apoto</a> - */ - -{ - "sEmptyTable": "કોષ્ટકમાં કોઈ ડેટા ઉપલબ્ધ નથી", - "sInfo": "કુલ_પ્રવેશો_અંત_પ્રારંભ_દર્શાવે_છે", - "sInfoEmpty": "0 પ્રવેશો 0 0 બતાવી રહ્યું છે", - "sInfoFiltered": "(_MAX_ કુલ પ્રવેશો માંથી ફિલ્ટર)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "બતાવો _MENU_ પ્રવેશો", - "sLoadingRecords": "લોડ કરી રહ્યું છે ...", - "sProcessing": "પ્રક્રિયા ...", - "sSearch": "શોધો:", - "sZeroRecords": "કોઈ મેળ ખાતા રેકોર્ડ મળી", - "oPaginate": { - "sFirst": "પ્રથમ", - "sLast": "અંતિમ", - "sNext": "આગામી", - "sPrevious": "ગત" - }, - "oAria": { - "sSortAscending": ": સ્તંભ ચડતા ક્રમમાં ગોઠવવા માટે સક્રિય", - "sSortDescending": ": કૉલમ ઉતરતા ક્રમમાં ગોઠવવા માટે સક્રિય" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Hebrew.lang b/dashboard/lib/datatables-plugins/i18n/Hebrew.lang deleted file mode 100644 index 6765e627..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Hebrew.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Hebrew translation - * @name Hebrew - * @anchor Hebrew - * @author <a href="http://ww3.co.il/">Neil Osman (WW3)</a> - */ - -{ - "sProcessing": "מעבד...", - "sLengthMenu": "הצג _MENU_ פריטים", - "sZeroRecords": "לא נמצאו רשומות מתאימות", - "sInfo": "_START_ עד _END_ מתוך _TOTAL_ רשומות" , - "sInfoEmpty": "0 עד 0 מתוך 0 רשומות", - "sInfoFiltered": "(מסונן מסך _MAX_ רשומות)", - "sInfoPostFix": "", - "sSearch": "חפש:", - "sUrl": "", - "oPaginate": { - "sFirst": "ראשון", - "sPrevious": "קודם", - "sNext": "הבא", - "sLast": "אחרון" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Hindi.lang b/dashboard/lib/datatables-plugins/i18n/Hindi.lang deleted file mode 100644 index 8013e886..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Hindi.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Hindi translation - * @name Hindi - * @anchor Hindi - * @author <a href="http://outshinesolutions.com">Outshine Solutions</a> - */ - -{ - "sProcessing": "प्रगति पे हैं ...", - "sLengthMenu": " _MENU_ प्रविष्टियां दिखाएं ", - "sZeroRecords": "रिकॉर्ड्स का मेल नहीं मिला", - "sInfo": "_START_ to _END_ of _TOTAL_ प्रविष्टियां दिखा रहे हैं", - "sInfoEmpty": "0 में से 0 से 0 प्रविष्टियां दिखा रहे हैं", - "sInfoFiltered": "(_MAX_ कुल प्रविष्टियों में से छठा हुआ)", - "sInfoPostFix": "", - "sSearch": "खोजें:", - "sUrl": "", - "oPaginate": { - "sFirst": "प्रथम", - "sPrevious": "पिछला", - "sNext": "अगला", - "sLast": "अंतिम" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Hungarian.lang b/dashboard/lib/datatables-plugins/i18n/Hungarian.lang deleted file mode 100644 index b591d58a..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Hungarian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Hungarian translation - * @name Hungarian - * @anchor Hungarian - * @author <a href="http://www.maschek.hu">Adam Maschek</a> and Lajos Cseppentő - */ - -{ - "sEmptyTable": "Nincs rendelkezésre álló adat", - "sInfo": "Találatok: _START_ - _END_ Összesen: _TOTAL_", - "sInfoEmpty": "Nulla találat", - "sInfoFiltered": "(_MAX_ összes rekord közül szűrve)", - "sInfoPostFix": "", - "sInfoThousands": " ", - "sLengthMenu": "_MENU_ találat oldalanként", - "sLoadingRecords": "Betöltés...", - "sProcessing": "Feldolgozás...", - "sSearch": "Keresés:", - "sZeroRecords": "Nincs a keresésnek megfelelő találat", - "oPaginate": { - "sFirst": "Első", - "sPrevious": "Előző", - "sNext": "Következő", - "sLast": "Utolsó" - }, - "oAria": { - "sSortAscending": ": aktiválja a növekvő rendezéshez", - "sSortDescending": ": aktiválja a csökkenő rendezéshez" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Icelandic.lang b/dashboard/lib/datatables-plugins/i18n/Icelandic.lang deleted file mode 100644 index e17feb00..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Icelandic.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Icelandic translation - * @name Icelandic - * @anchor Icelandic - * @author Finnur Kolbeinsson - */ - -{ - "sEmptyTable": "Engin gögn eru í þessari töflu", - "sInfo": "Sýni _START_ til _END_ af _TOTAL_ færslum", - "sInfoEmpty": "Sýni 0 til 0 af 0 færslum", - "sInfoFiltered": "(síað út frá _MAX_ færslum)", - "sInfoPostFix": "", - "sInfoThousands": ".", - "sLengthMenu": "Sýna _MENU_ færslur", - "sLoadingRecords": "Hleð...", - "sProcessing": "Úrvinnsla...", - "sSearch": "Leita:", - "sZeroRecords": "Engar færslur fundust", - "oPaginate": { - "sFirst": "Fyrsta", - "sLast": "Síðasta", - "sNext": "Næsta", - "sPrevious": "Fyrri" - }, - "oAria": { - "sSortAscending": ": virkja til að raða dálki í hækkandi röð", - "sSortDescending": ": virkja til að raða dálki lækkandi í röð" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Indonesian-Alternative.lang b/dashboard/lib/datatables-plugins/i18n/Indonesian-Alternative.lang deleted file mode 100644 index 1db780bf..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Indonesian-Alternative.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Indonesian translation - * @name Indonesian - * @anchor Indonesian - * @author Landung Wahana - */ - -{ - "sProcessing": "Sedang proses...", - "sLengthMenu": "Tampilan _MENU_ entri", - "sZeroRecords": "Tidak ditemukan data yang sesuai", - "sInfo": "Tampilan _START_ sampai _END_ dari _TOTAL_ entri", - "sInfoEmpty": "Tampilan 0 hingga 0 dari 0 entri", - "sInfoFiltered": "(disaring dari _MAX_ entri keseluruhan)", - "sInfoPostFix": "", - "sSearch": "Cari:", - "sUrl": "", - "oPaginate": { - "sFirst": "Awal", - "sPrevious": "Balik", - "sNext": "Lanjut", - "sLast": "Akhir" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Indonesian.lang b/dashboard/lib/datatables-plugins/i18n/Indonesian.lang deleted file mode 100644 index f47a0683..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Indonesian.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Indonesian translation - * @name Indonesian - * @anchor Indonesian - * @author Cipto Hadi - */ - -{ - "sProcessing": "Sedang memproses...", - "sLengthMenu": "Tampilkan _MENU_ entri", - "sZeroRecords": "Tidak ditemukan data yang sesuai", - "sInfo": "Menampilkan _START_ sampai _END_ dari _TOTAL_ entri", - "sInfoEmpty": "Menampilkan 0 sampai 0 dari 0 entri", - "sInfoFiltered": "(disaring dari _MAX_ entri keseluruhan)", - "sInfoPostFix": "", - "sSearch": "Cari:", - "sUrl": "", - "oPaginate": { - "sFirst": "Pertama", - "sPrevious": "Sebelumnya", - "sNext": "Selanjutnya", - "sLast": "Terakhir" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Irish.lang b/dashboard/lib/datatables-plugins/i18n/Irish.lang deleted file mode 100644 index 7f69db9d..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Irish.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Irish translation - * @name Irish - * @anchor Irish - * @author <a href="http://letsbefamous.com">Lets Be Famous Journal</a> - */ - -{ - "sProcessing": "Próiseáil...", - "sLengthMenu": "Taispeáin iontrálacha _MENU_", - "sZeroRecords": "Gan aon taifead meaitseáil aimsithe", - "sInfo": "_START_ Showing a _END_ na n-iontrálacha _TOTAL_", - "sInfoEmpty": "Showing 0-0 na n-iontrálacha 0", - "sInfoFiltered": "(scagtha ó _MAX_ iontrálacha iomlán)", - "sInfoPostFix": "", - "sSearch": "Cuardaigh:", - "sUrl": "", - "oPaginate": { - "sFirst": "An Chéad", - "sPrevious": "Roimhe Seo", - "sNext": "Ar Aghaidh", - "sLast": "Last" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Italian.lang b/dashboard/lib/datatables-plugins/i18n/Italian.lang deleted file mode 100644 index a17e803c..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Italian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Italian translation - * @name Italian - * @anchor Italian - * @author Nicola Zecchin & Giulio Quaresima - */ - -{ - "sEmptyTable": "Nessun dato presente nella tabella", - "sInfo": "Vista da _START_ a _END_ di _TOTAL_ elementi", - "sInfoEmpty": "Vista da 0 a 0 di 0 elementi", - "sInfoFiltered": "(filtrati da _MAX_ elementi totali)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Visualizza _MENU_ elementi", - "sLoadingRecords": "Caricamento...", - "sProcessing": "Elaborazione...", - "sSearch": "Cerca:", - "sZeroRecords": "La ricerca non ha portato alcun risultato.", - "oPaginate": { - "sFirst": "Inizio", - "sPrevious": "Precedente", - "sNext": "Successivo", - "sLast": "Fine" - }, - "oAria": { - "sSortAscending": ": attiva per ordinare la colonna in ordine crescente", - "sSortDescending": ": attiva per ordinare la colonna in ordine decrescente" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Japanese.lang b/dashboard/lib/datatables-plugins/i18n/Japanese.lang deleted file mode 100644 index fb351a56..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Japanese.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Japanese translation - * @name Japanese - * @anchor Japanese - * @author <i>yusuke</i> - */ - -{ - "sProcessing": "処理中...", - "sLengthMenu": "_MENU_ 件表示", - "sZeroRecords": "データはありません。", - "sInfo": " _TOTAL_ 件中 _START_ から _END_ まで表示", - "sInfoEmpty": " 0 件中 0 から 0 まで表示", - "sInfoFiltered": "(全 _MAX_ 件より抽出)", - "sInfoPostFix": "", - "sSearch": "検索:", - "sUrl": "", - "oPaginate": { - "sFirst": "先頭", - "sPrevious": "前", - "sNext": "次", - "sLast": "最終" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Korean.lang b/dashboard/lib/datatables-plugins/i18n/Korean.lang deleted file mode 100644 index 9a04c01d..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Korean.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Korean translation - * @name Korean - * @anchor Korean - * @author WonGoo Lee - */ - -{ - "sEmptyTable": "데이터가 없습니다", - "sInfo": "_START_ - _END_ / _TOTAL_", - "sInfoEmpty": "0 - 0 / 0", - "sInfoFiltered": "(총 _MAX_ 개)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "페이지당 줄수 _MENU_", - "sLoadingRecords": "읽는중...", - "sProcessing": "처리중...", - "sSearch": "검색:", - "sZeroRecords": "검색 결과가 없습니다", - "oPaginate": { - "sFirst": "처음", - "sLast": "마지막", - "sNext": "다음", - "sPrevious": "이전" - }, - "oAria": { - "sSortAscending": ": 오름차순 정렬", - "sSortDescending": ": 내림차순 정렬" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Kyrgyz.lang b/dashboard/lib/datatables-plugins/i18n/Kyrgyz.lang deleted file mode 100644 index e7fe90ac..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Kyrgyz.lang +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @name Kyrgyz - * @anchor Kyrgyz - * @author <a href="https://github.com/nursultan92/">Nursultan Turdaliev</a> - */ - -{ - "sEmptyTable": "Таблицада эч кандай берилиш жок", - "sInfo": "Жалпы _TOTAL_ дан _START_ дан _END_ га чейинки сапты көрсөтүүдө", - "sInfoEmpty": "Жалпы 0 дөн 0 дөн 0 гө чейинки саптар", - "sInfoFiltered": "( Жалпысынан _MAX_ фильтрленди)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Саптан _MENU_ көрсөт", - "sLoadingRecords": "Жүктөлүүдө...", - "sProcessing": "Иштеп жатат...", - "sSearch": "Издөө:", - "sZeroRecords": "Туура келген бир да сап жок", - "oPaginate": { - "sFirst": "Биринчи", - "sLast": "Акыркы", - "sNext": "Кийинки", - "sPrevious": "Мукдакы" - }, - "oAria": { - "sSortAscending": ": Чоңойуу ирээти боюнча тизмеле", - "sSortDescending": ": Кемүү ирээти боюнча тизмеле" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Latvian.lang b/dashboard/lib/datatables-plugins/i18n/Latvian.lang deleted file mode 100644 index 7e07969e..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Latvian.lang +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Latvian translation - * @name Latvian - * @anchor Latvian - * @author Oskars Podans and Ruslans Jermakovičs - */ - -{ - "processing": "Uzgaidiet...", - "search": "Meklēt:", - "lengthMenu": "Rādīt _MENU_ ierakstus", - "info": "Parādīti _START_. līdz _END_. no _TOTAL_ ierakstiem", - "infoEmpty": "Nav ierakstu", - "infoFiltered": "(atlasīts no pavisam _MAX_ ierakstiem)", - "infoPostFix": "", - "loadingRecords": "Iekraušanas ieraksti ...", - "zeroRecords": "Nav atrasti vaicājumam atbilstoši ieraksti", - "emptyTable:": "Tabula nav datu", - "paginate": { - "first": "Pirmā", - "previous": "Iepriekšējā", - "next": "Nākošā", - "last": "Pēdējā" - }, - "aria": { - "sortAscending": ": aktivizēt kolonnu, lai kārtotu augošā", - "sortDescending": ": aktivizēt kolonnu, lai kārtotu dilstošā" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Lithuanian.lang b/dashboard/lib/datatables-plugins/i18n/Lithuanian.lang deleted file mode 100644 index 61d188ca..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Lithuanian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Lithuanian translation - * @name Lithuanian - * @anchor Lithuanian - * @author <a href="http://www.kurdingopinigai.lt">Kęstutis Morkūnas</a> - * @author Algirdas Brazas - */ - -{ - "sEmptyTable": "Lentelėje nėra duomenų", - "sInfo": "Rodomi įrašai nuo _START_ iki _END_ iš _TOTAL_ įrašų", - "sInfoEmpty": "Rodomi įrašai nuo 0 iki 0 iš 0", - "sInfoFiltered": "(atrinkta iš _MAX_ įrašų)", - "sInfoPostFix": "", - "sInfoThousands": " ", - "sLengthMenu": "Rodyti _MENU_ įrašus", - "sLoadingRecords": "Įkeliama...", - "sProcessing": "Apdorojama...", - "sSearch": "Ieškoti:", - "sThousands": " ", - "sUrl": "", - "sZeroRecords": "Įrašų nerasta", - - "oPaginate": { - "sFirst": "Pirmas", - "sPrevious": "Ankstesnis", - "sNext": "Tolimesnis", - "sLast": "Paskutinis" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Macedonian.lang b/dashboard/lib/datatables-plugins/i18n/Macedonian.lang deleted file mode 100644 index 38e1f563..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Macedonian.lang +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Macedonian translation - * @name Macedonian - * @anchor Macedonian - * @author Bojan Petkovski - */ - -{ - "sProcessing": "Процесирање...", - "sLengthMenu": "Прикажи _MENU_ записи", - "sZeroRecords": "Не се пронајдени записи", - "sEmptyTable": "Нема податоци во табелата", - "sLoadingRecords": "Вчитување...", - "sInfo": "Прикажани _START_ до _END_ од _TOTAL_ записи", - "sInfoEmpty": "Прикажани 0 до 0 од 0 записи", - "sInfoFiltered": "(филтрирано од вкупно _MAX_ записи)", - "sInfoPostFix": "", - "sSearch": "Барај", - "sUrl": "", - "oPaginate": { - "sFirst": "Почетна", - "sPrevious": "Претходна", - "sNext": "Следна", - "sLast": "Последна" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Malay.lang b/dashboard/lib/datatables-plugins/i18n/Malay.lang deleted file mode 100644 index 3e3d10d6..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Malay.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Malay translation - * @name Malay - * @anchor Malay - * @author Mohamad Zharif - */ - -{ - "sEmptyTable": "Tiada data", - "sInfo": "Paparan dari _START_ hingga _END_ dari _TOTAL_ rekod", - "sInfoEmpty": "Paparan 0 hingga 0 dari 0 rekod", - "sInfoFiltered": "(Ditapis dari jumlah _MAX_ rekod)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Papar _MENU_ rekod", - "sLoadingRecords": "Diproses...", - "sProcessing": "Sedang diproses...", - "sSearch": "Carian:", - "sZeroRecords": "Tiada padanan rekod yang dijumpai.", - "oPaginate": { - "sFirst": "Pertama", - "sPrevious": "Sebelum", - "sNext": "Kemudian", - "sLast": "Akhir" - }, - "oAria": { - "sSortAscending": ": diaktifkan kepada susunan lajur menaik", - "sSortDescending": ": diaktifkan kepada susunan lajur menurun" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Mongolian.lang b/dashboard/lib/datatables-plugins/i18n/Mongolian.lang deleted file mode 100644 index 22618a02..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Mongolian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Mongolian - Монгол хэлний орчуулга - * @name Mongolian - * @anchor Mongolian - * @author <a href="http://www.Batmandakh.com/">Batmandakh Erdenebileg</a> - */ - -{ - "sEmptyTable": "Хүснэгт хоосон байна", - "sInfo": "Нийт _TOTAL_ бичлэгээс _START_ - _END_ харуулж байна", - "sInfoEmpty": "Тохирох үр дүн алга", - "sInfoFiltered": "(нийт _MAX_ бичлэгээс шүүв)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Дэлгэцэд _MENU_ бичлэг харуулна", - "sLoadingRecords": "Ачааллаж байна...", - "sProcessing": "Боловсруулж байна...", - "sSearch": "Хайлт:", - "sZeroRecords": "Тохирох бичлэг олдсонгүй", - "oPaginate": { - "sFirst": "Эхнийх", - "sLast": "Сүүлийнх", - "sNext": "Өмнөх", - "sPrevious": "Дараах" - }, - "oAria": { - "sSortAscending": ": цагаан толгойн дарааллаар эрэмбэлэх", - "sSortDescending": ": цагаан толгойн эсрэг дарааллаар эрэмбэлэх" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Nepali.lang b/dashboard/lib/datatables-plugins/i18n/Nepali.lang deleted file mode 100644 index 40166b49..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Nepali.lang +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Nepali - * @name Nepali - * @anchor Nepali - * @author Bishwo Adhikari - */ - -{ - "sEmptyTable": "टेबलमा डाटा उपलब्ध भएन", - "sInfo": "_TOTAL_ रेकर्ड मध्य _START_ देखि _END_ रेकर्ड देखाउंदै", - "sInfoEmpty": "0 मध्य 0 देखि 0 रेकर्ड देखाउंदै", - "sInfoFiltered": "(_MAX_ कुल रेकर्डबाट छनौट गरिएको)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": " _MENU_ रेकर्ड देखाउने ", - "sLoadingRecords": "लोड हुँदैछ...", - "sProcessing": "प्रगति हुदैंछ ...", - "sSearch": "खोजी:", - "sUrl": "", - "sZeroRecords": "कुनै मिल्ने रेकर्ड फेला परेन", - "oPaginate": { - "sFirst": "प्रथम", - "sPrevious": "पछिल्लो", - "sNext": "अघिल्लो", - "sLast": "अन्तिम" - }, - "oAria": { - "sSortAscending": ": अगाडिबाट अक्षरात्मक रूपमा क्रमबद्ध गराउने", - "sSortDescending": ": पछाडिबाट अक्षरात्मक रूपमा क्रमबद्ध गराउने" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Norwegian.lang b/dashboard/lib/datatables-plugins/i18n/Norwegian.lang deleted file mode 100644 index f5394539..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Norwegian.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Norwegian translation - * @name Norwegian - * @anchor Norwegian - * @author Petter Ekrann - */ - -{ - "sProcessing": "Laster...", - "sLengthMenu": "Vis _MENU_ linjer", - "sZeroRecords": "Ingen linjer matcher søket", - "sInfo": "Viser _START_ til _END_ av _TOTAL_ linjer", - "sInfoEmpty": "Viser 0 til 0 av 0 linjer", - "sInfoFiltered": "(filtrert fra _MAX_ totalt antall linjer)", - "sInfoPostFix": "", - "sSearch": "Søk:", - "sUrl": "", - "oPaginate": { - "sFirst": "Første", - "sPrevious": "Forrige", - "sNext": "Neste", - "sLast": "Siste" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Persian.lang b/dashboard/lib/datatables-plugins/i18n/Persian.lang deleted file mode 100644 index 67ad74fe..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Persian.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Persian translation - * @name Persian - * @anchor Persian - * @author <a href="http://www.chavoshi.com/">Ehsan Chavoshi</a> - */ - -{ - "sProcessing": "درحال پردازش...", - "sLengthMenu": "نمایش محتویات _MENU_", - "sZeroRecords": "موردی یافت نشد", - "sInfo": "نمایش _START_ تا _END_ از مجموع _TOTAL_ مورد", - "sInfoEmpty": "تهی", - "sInfoFiltered": "(فیلتر شده از مجموع _MAX_ مورد)", - "sInfoPostFix": "", - "sSearch": "جستجو:", - "sUrl": "", - "oPaginate": { - "sFirst": "ابتدا", - "sPrevious": "قبلی", - "sNext": "بعدی", - "sLast": "انتها" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Polish.lang b/dashboard/lib/datatables-plugins/i18n/Polish.lang deleted file mode 100644 index 09af71f9..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Polish.lang +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Polish translation - * @name Polish - * @anchor Polish - * @author Tomasz Kowalski - */ - -{ - "sProcessing": "Przetwarzanie...", - "sLengthMenu": "Pokaż _MENU_ pozycji", - "sZeroRecords": "Nie znaleziono pasujących pozycji", - "sInfoThousands": " ", - "sInfo": "Pozycje od _START_ do _END_ z _TOTAL_ łącznie", - "sInfoEmpty": "Pozycji 0 z 0 dostępnych", - "sInfoFiltered": "(filtrowanie spośród _MAX_ dostępnych pozycji)", - "sInfoPostFix": "", - "sSearch": "Szukaj:", - "sUrl": "", - "oPaginate": { - "sFirst": "Pierwsza", - "sPrevious": "Poprzednia", - "sNext": "Następna", - "sLast": "Ostatnia" - }, - "sEmptyTable": "Brak danych", - "sLoadingRecords": "Wczytywanie...", - "oAria": { - "sSortAscending": ": aktywuj, by posortować kolumnę rosnąco", - "sSortDescending": ": aktywuj, by posortować kolumnę malejąco" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Portuguese-Brasil.lang b/dashboard/lib/datatables-plugins/i18n/Portuguese-Brasil.lang deleted file mode 100644 index 1612d970..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Portuguese-Brasil.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Portuguese Brasil translation - * @name Portuguese Brasil - * @anchor Portuguese Brasil - * @author Julio Cesar Viana Palma - */ - -{ - "sEmptyTable": "Nenhum registro encontrado", - "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros", - "sInfoEmpty": "Mostrando 0 até 0 de 0 registros", - "sInfoFiltered": "(Filtrados de _MAX_ registros)", - "sInfoPostFix": "", - "sInfoThousands": ".", - "sLengthMenu": "_MENU_ resultados por página", - "sLoadingRecords": "Carregando...", - "sProcessing": "Processando...", - "sZeroRecords": "Nenhum registro encontrado", - "sSearch": "Pesquisar", - "oPaginate": { - "sNext": "Próximo", - "sPrevious": "Anterior", - "sFirst": "Primeiro", - "sLast": "Último" - }, - "oAria": { - "sSortAscending": ": Ordenar colunas de forma ascendente", - "sSortDescending": ": Ordenar colunas de forma descendente" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Portuguese.lang b/dashboard/lib/datatables-plugins/i18n/Portuguese.lang deleted file mode 100644 index 89a00765..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Portuguese.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Portuguese translation - * @name Portuguese - * @anchor Portuguese - * @author Nuno Felicio - */ - -{ - "sProcessing": "A processar...", - "sLengthMenu": "Mostrar _MENU_ registos", - "sZeroRecords": "Não foram encontrados resultados", - "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registos", - "sInfoEmpty": "Mostrando de 0 até 0 de 0 registos", - "sInfoFiltered": "(filtrado de _MAX_ registos no total)", - "sInfoPostFix": "", - "sSearch": "Procurar:", - "sUrl": "", - "oPaginate": { - "sFirst": "Primeiro", - "sPrevious": "Anterior", - "sNext": "Seguinte", - "sLast": "Último" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Romanian.lang b/dashboard/lib/datatables-plugins/i18n/Romanian.lang deleted file mode 100644 index 70606a17..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Romanian.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Romanian translation - * @name Romanian - * @anchor Romanian - * @author <a href="http://www.jurubita.ro/">Alexandru Jurubita</a> - */ - -{ - "sProcessing": "Proceseaza...", - "sLengthMenu": "Afiseaza _MENU_ inregistrari pe pagina", - "sZeroRecords": "Nu am gasit nimic - ne pare rau", - "sInfo": "Afisate de la _START_ la _END_ din _TOTAL_ inregistrari", - "sInfoEmpty": "Afisate de la 0 la 0 din 0 inregistrari", - "sInfoFiltered": "(filtrate dintr-un total de _MAX_ inregistrari)", - "sInfoPostFix": "", - "sSearch": "Cauta:", - "sUrl": "", - "oPaginate": { - "sFirst": "Prima", - "sPrevious": "Precedenta", - "sNext": "Urmatoarea", - "sLast": "Ultima" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Russian.lang b/dashboard/lib/datatables-plugins/i18n/Russian.lang deleted file mode 100644 index 5367c85e..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Russian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Russian translation - * @name Russian - * @anchor Russian - * @author Tjoma - * @autor aspyatkin - */ - -{ - "processing": "Подождите...", - "search": "Поиск:", - "lengthMenu": "Показать _MENU_ записей", - "info": "Записи с _START_ до _END_ из _TOTAL_ записей", - "infoEmpty": "Записи с 0 до 0 из 0 записей", - "infoFiltered": "(отфильтровано из _MAX_ записей)", - "infoPostFix": "", - "loadingRecords": "Загрузка записей...", - "zeroRecords": "Записи отсутствуют.", - "emptyTable": "В таблице отсутствуют данные", - "paginate": { - "first": "Первая", - "previous": "Предыдущая", - "next": "Следующая", - "last": "Последняя" - }, - "aria": { - "sortAscending": ": активировать для сортировки столбца по возрастанию", - "sortDescending": ": активировать для сортировки столбца по убыванию" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Serbian.lang b/dashboard/lib/datatables-plugins/i18n/Serbian.lang deleted file mode 100644 index c3000aae..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Serbian.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Serbian translation (Latin alphabet) - * @name Serbian (Latin) - * @anchor Serbian (Latin) - * @author <a href="http://mnovakovic.byteout.com">Marko Novakovic</a> - */ - -{ - "sProcessing": "Procesiranje u toku...", - "sLengthMenu": "Prikaži _MENU_ elemenata", - "sZeroRecords": "Nije pronađen nijedan rezultat", - "sInfo": "Prikaz _START_ do _END_ od ukupno _TOTAL_ elemenata", - "sInfoEmpty": "Prikaz 0 do 0 od ukupno 0 elemenata", - "sInfoFiltered": "(filtrirano od ukupno _MAX_ elemenata)", - "sInfoPostFix": "", - "sSearch": "Pretraga:", - "sUrl": "", - "oPaginate": { - "sFirst": "Početna", - "sPrevious": "Prethodna", - "sNext": "Sledeća", - "sLast": "Poslednja" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Sinhala.lang b/dashboard/lib/datatables-plugins/i18n/Sinhala.lang deleted file mode 100644 index 604f1952..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Sinhala.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Sinhala translation - * @name Sinhala - * @anchor Sinhala - * @author Isuru Sampath Ratnayake - */ - -{ - "sEmptyTable": "වගුවේ දත්ත කිසිවක් නොමැත", - "sInfo": "_TOTAL_ න් _START_ සිට _END_ දක්වා", - "sInfoEmpty": "0 න් 0 සිට 0 දක්වා", - "sInfoFiltered": "(_MAX_ න් තෝරාගත් )", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "_MENU_ ක් පෙන්වන්න", - "sLoadingRecords": "පූරණය වෙමින් පවතී...", - "sProcessing": "සැකසෙමින් පවතී...", - "sSearch": "සොයන්න :", - "sZeroRecords": "ගැලපෙන වාර්තා නොමැත.", - "oPaginate": { - "sFirst": "පළමු", - "sLast": "අන්තිම", - "sNext": "ඊළග", - "sPrevious": "පසුගිය" - }, - "oAria": { - "sSortAscending": ": තීරුව ආරෝහනව තෝරන්න", - "sSortDescending": ": තීරුව අවරෝහනව තෝරන්න" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Slovak.lang b/dashboard/lib/datatables-plugins/i18n/Slovak.lang deleted file mode 100644 index a3f8c281..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Slovak.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Slovak translation - * @name Slovak - * @anchor Slovak - * @author <a href="https://github.com/dlugos">Ivan Dlugoš</a> - * @author (original translation) <a href="http://miskerik.com/">Maroš Miškerik</a> - */ -{ - "sEmptyTable": "Nie sú k dispozícii žiadne dáta", - "sInfo": "Záznamy _START_ až _END_ z celkom _TOTAL_", - "sInfoEmpty": "Záznamy 0 až 0 z celkom 0 ", - "sInfoFiltered": "(vyfiltrované spomedzi _MAX_ záznamov)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Zobraz _MENU_ záznamov", - "sLoadingRecords": "Načítavam...", - "sProcessing": "Spracúvam...", - "sSearch": "Hľadať:", - "sZeroRecords": "Nenašli sa žiadne vyhovujúce záznamy", - "oPaginate": { - "sFirst": "Prvá", - "sLast": "Posledná", - "sNext": "Nasledujúca", - "sPrevious": "Predchádzajúca" - }, - "oAria": { - "sSortAscending": ": aktivujte na zoradenie stĺpca vzostupne", - "sSortDescending": ": aktivujte na zoradenie stĺpca zostupne" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Slovenian.lang b/dashboard/lib/datatables-plugins/i18n/Slovenian.lang deleted file mode 100644 index a3660428..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Slovenian.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Slovenian translation - * @name Slovenian - * @anchor Slovenian - * @author Marko Kroflic, Blaž Brenčič and Andrej Florjančič - */ - -{ - "sEmptyTable": "Nobenih podatkov ni na voljo", - "sInfo": "Prikazujem _START_ do _END_ od _TOTAL_ zapisov", - "sInfoEmpty": "Prikazujem 0 do 0 od 0 zapisov", - "sInfoFiltered": "(filtrirano od _MAX_ vseh zapisov)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Prikaži _MENU_ zapisov", - "sLoadingRecords": "Nalagam...", - "sProcessing": "Obdelujem...", - "sSearch": "Išči:", - "sZeroRecords": "Nobeden zapis ne ustreza", - "oPaginate": { - "sFirst": "Prvi", - "sLast": "Zadnji", - "sNext": "Nasl.", - "sPrevious": "Pred." - }, - "oAria": { - "sSortAscending": ": vključite za naraščujoči sort", - "sSortDescending": ": vključite za padajoči sort" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Spanish.lang b/dashboard/lib/datatables-plugins/i18n/Spanish.lang deleted file mode 100644 index 61b33583..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Spanish.lang +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Spanish translation - * @name Spanish - * @anchor Spanish - * @author Giovanni Ariza, Aristobulo Gomez and Roberto Poo - */ - -{ - "sProcessing": "Procesando...", - "sLengthMenu": "Mostrar _MENU_ registros", - "sZeroRecords": "No se encontraron resultados", - "sEmptyTable": "Ningún dato disponible en esta tabla", - "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros", - "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros", - "sInfoFiltered": "(filtrado de un total de _MAX_ registros)", - "sInfoPostFix": "", - "sSearch": "Buscar:", - "sUrl": "", - "sInfoThousands": ",", - "sLoadingRecords": "Cargando...", - "oPaginate": { - "sFirst": "Primero", - "sLast": "Último", - "sNext": "Siguiente", - "sPrevious": "Anterior" - }, - "oAria": { - "sSortAscending": ": Activar para ordenar la columna de manera ascendente", - "sSortDescending": ": Activar para ordenar la columna de manera descendente" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Swahili.lang b/dashboard/lib/datatables-plugins/i18n/Swahili.lang deleted file mode 100644 index c2cc0a4d..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Swahili.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Swahili translation - * @name Swahili - * @anchor Swahili - * @author <a href="http://zoop.co.tz/schoolpesa/">Roy Owino</a> - */ - -{ - "sEmptyTable": "Hakuna data iliyo patikana", - "sInfo": "Inaonyesha _START_ mpaka _END_ ya matokeo _TOTAL_", - "sInfoEmpty": "Inaonyesha 0 hadi 0 ya matokeo 0", - "sInfoFiltered": "(uschujo kutoka matokeo idadi _MAX_)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "Onyesha _MENU_ matokeo", - "sLoadingRecords": "Inapakia...", - "sProcessing": "Processing...", - "sSearch": "Tafuta:", - "sZeroRecords": "Rekodi vinavyolingana haziku patikana", - "oPaginate": { - "sFirst": "Mwanzo", - "sLast": "Mwisho", - "sNext": "Ijayo", - "sPrevious": "Kabla" - }, - "oAria": { - "sSortAscending": ": seti kulainisha sanjari kwa mtindo wa upandaji", - "sSortDescending": ": seti kulainisha sanjari kwa mtindo wa mteremko" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Swedish.lang b/dashboard/lib/datatables-plugins/i18n/Swedish.lang deleted file mode 100644 index 6691aa49..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Swedish.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Swedish translation - * @name Swedish - * @anchor Swedish - * @author <a href="http://www.kmmtiming.se/">Kristoffer Karlström</a> - */ - -{ - "sEmptyTable": "Tabellen innehåller ingen data", - "sInfo": "Visar _START_ till _END_ av totalt _TOTAL_ rader", - "sInfoEmpty": "Visar 0 till 0 av totalt 0 rader", - "sInfoFiltered": "(filtrerade från totalt _MAX_ rader)", - "sInfoPostFix": "", - "sInfoThousands": " ", - "sLengthMenu": "Visa _MENU_ rader", - "sLoadingRecords": "Laddar...", - "sProcessing": "Bearbetar...", - "sSearch": "Sök:", - "sZeroRecords": "Hittade inga matchande resultat", - "oPaginate": { - "sFirst": "Första", - "sLast": "Sista", - "sNext": "Nästa", - "sPrevious": "Föregående" - }, - "oAria": { - "sSortAscending": ": aktivera för att sortera kolumnen i stigande ordning", - "sSortDescending": ": aktivera för att sortera kolumnen i fallande ordning" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Tamil.lang b/dashboard/lib/datatables-plugins/i18n/Tamil.lang deleted file mode 100644 index ce096797..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Tamil.lang +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Tamil translation - * @name Tamil - * @anchor Tamil - * @author Sam Arul Raj - */ - -{ - "sEmptyTable": "அட்டவணையில் தரவு கிடைக்கவில்லை", - "sInfo": "உள்ளீடுகளை் _START_ முதல _END_ உள்ள _TOTAL_ காட்டும்", - "sInfoEmpty": "0 உள்ளீடுகளை 0 0 காட்டும்", - "sInfoFiltered": "(_MAX_ மொத்த உள்ளீடுகளை இருந்து வடிகட்டி)", - "sInfoPostFix": "", - "sInfoThousands": ",", - "sLengthMenu": "_MENU_ காண்பி", - "sLoadingRecords": "ஏற்றுகிறது ...", - "sProcessing": "செயலாக்க ...", - "sSearch": "தேடல்:", - "sZeroRecords": "பொருத்தமான பதிவுகள் இல்லை", - "oPaginate": { - "sFirst": "முதல்", - "sLast": "இறுதி", - "sNext": "அடுத்து", - "sPrevious": "முந்தைய" - }, - "oAria": { - "sSortAscending": ": நிரலை ஏறுவரிசையில் வரிசைப்படுத்த செயல்படுத்த", - "sSortDescending": ": நிரலை இறங்கு வரிசைப்படுத்த செயல்படுத்த" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Thai.lang b/dashboard/lib/datatables-plugins/i18n/Thai.lang deleted file mode 100644 index 0005ed6d..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Thai.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Thai translation - * @name Thai - * @anchor Thai - * @author Thanva Thonglor - */ - -{ - "sProcessing": "กำลังดำเนินการ...", - "sLengthMenu": "แสดง_MENU_ แถว", - "sZeroRecords": "ไม่พบข้อมูล", - "sInfo": "แสดง _START_ ถึง _END_ จาก _TOTAL_ แถว", - "sInfoEmpty": "แสดง 0 ถึง 0 จาก 0 แถว", - "sInfoFiltered": "(กรองข้อมูล _MAX_ ทุกแถว)", - "sInfoPostFix": "", - "sSearch": "ค้นหา:", - "sUrl": "", - "oPaginate": { - "sFirst": "เิริ่มต้น", - "sPrevious": "ก่อนหน้า", - "sNext": "ถัดไป", - "sLast": "สุดท้าย" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Turkish.lang b/dashboard/lib/datatables-plugins/i18n/Turkish.lang deleted file mode 100644 index 8d8e919e..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Turkish.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Turkish translation - * @name Turkish - * @anchor Turkish - * @author Umit Gorkem - */ - -{ - "sProcessing": "İşleniyor...", - "sLengthMenu": "Sayfada _MENU_ Kayıt Göster", - "sZeroRecords": "Eşleşen Kayıt Bulunmadı", - "sInfo": " _TOTAL_ Kayıttan _START_ - _END_ Arası Kayıtlar", - "sInfoEmpty": "Kayıt Yok", - "sInfoFiltered": "( _MAX_ Kayıt İçerisinden Bulunan)", - "sInfoPostFix": "", - "sSearch": "Bul:", - "sUrl": "", - "oPaginate": { - "sFirst": "İlk", - "sPrevious": "Önceki", - "sNext": "Sonraki", - "sLast": "Son" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Ukranian.lang b/dashboard/lib/datatables-plugins/i18n/Ukranian.lang deleted file mode 100644 index c25083c0..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Ukranian.lang +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Ukranian translation - * @name Ukranian - * @anchor Ukranian - * @author <i>antyrat</i> - */ - -{ - "sProcessing": "Зачекайте...", - "sLengthMenu": "Показати _MENU_ записів", - "sZeroRecords": "Записи відсутні.", - "sInfo": "Записи з _START_ по _END_ із _TOTAL_ записів", - "sInfoEmpty": "Записи з 0 по 0 із 0 записів", - "sInfoFiltered": "(відфільтровано з _MAX_ записів)", - "sInfoPostFix": "", - "sSearch": "Пошук:", - "sUrl": "", - "oPaginate": { - "sFirst": "Перша", - "sPrevious": "Попередня", - "sNext": "Наступна", - "sLast": "Остання" - }, - "oAria": { - "sSortAscending": ": активувати для сортування стовпців за зростанням", - "sSortDescending": ": активувати для сортування стовпців за спаданням" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Urdu.lang b/dashboard/lib/datatables-plugins/i18n/Urdu.lang deleted file mode 100644 index 2664e61b..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Urdu.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Urdu translation - * @name Urdu - * @anchor Urdu - * @author Zafar Subzwari - */ - -{ - "sProcessing": "ہے جاري عملدرامد...", - "sLengthMenu": "دکہائين شقيں کي (_MENU_) فہرست", - "sZeroRecords": "ملے نہيں مفروضات جلتے ملتے کوئ", - "sInfo": "فہرست کي تک _END_ سے _START_ سے ميں _TOTAL_ فہرست پوري ہے نظر پيش", - "sInfoEmpty": "فہرست کي تک 0 سے 0 سے ميں 0 قل ہے نظر پيشّ", - "sInfoFiltered": "(فہرست ہوئ چھني سے ميں _MAX_ قل)", - "sInfoPostFix": "", - "sSearch": "کرو تلاش:", - "sUrl": "", - "oPaginate": { - "sFirst": "پہلا", - "sPrevious": "پچہلا", - "sNext": "اگلا", - "sLast": "آخري" - } -} diff --git a/dashboard/lib/datatables-plugins/i18n/Uzbek.lang b/dashboard/lib/datatables-plugins/i18n/Uzbek.lang deleted file mode 100644 index ff44437b..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Uzbek.lang +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Uzbek translation - * @name Uzbek - * @anchor Uzbek - * @author <a href="http://davlat.info">Farkhod Dadajanov</a> - */ - -{ - "sEmptyTable": "Ma'lumot yo'q", - "sInfo": "Umumiy _TOTAL_ yozuvlarlardan _START_ dan _END_ gachasi ko'rsatilmoqda", - "sInfoEmpty": "Umumiy 0 yozuvlardan 0 dan 0 gachasi ko'rsatilmoqda", - "sInfoFiltered": "(_MAX_ yozuvlardan filtrlandi)", - "sInfoPostFix": "", - "sLengthMenu": "_MENU_ ta yozuvlarni ko'rsat", - "sLoadingRecords": "Yozuvlar yuklanmoqda...", - "sProcessing": "Ishlayapman...", - "sSearch": "Izlash:", - "sZeroRecords": "Ma'lumot yo'q.", - "oPaginate": { - "sFirst": "Birinchi", - "sPrevious": "Avvalgi", - "sNext": "Keyingi", - "sLast": "Son'ggi" - }, - "oAria": { - "sSortAscending": ": to'g'ri tartiblash", - "sSortDescending": ": teskari tartiblash" - } -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/i18n/Vietnamese.lang b/dashboard/lib/datatables-plugins/i18n/Vietnamese.lang deleted file mode 100644 index 7022f308..00000000 --- a/dashboard/lib/datatables-plugins/i18n/Vietnamese.lang +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Vietnamese translation - * @name Vietnamese - * @anchor Vietnamese - * @author Trinh Phuoc Thai - */ - -{ - "sProcessing": "Đang xử lý...", - "sLengthMenu": "Xem _MENU_ mục", - "sZeroRecords": "Không tìm thấy dòng nào phù hợp", - "sInfo": "Đang xem _START_ đến _END_ trong tổng số _TOTAL_ mục", - "sInfoEmpty": "Đang xem 0 đến 0 trong tổng số 0 mục", - "sInfoFiltered": "(được lọc từ _MAX_ mục)", - "sInfoPostFix": "", - "sSearch": "Tìm:", - "sUrl": "", - "oPaginate": { - "sFirst": "Đầu", - "sPrevious": "Trước", - "sNext": "Tiếp", - "sLast": "Cuối" - } -} diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/1/dataTables.bootstrap.css b/dashboard/lib/datatables-plugins/integration/bootstrap/1/dataTables.bootstrap.css deleted file mode 100644 index b6850a07..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/1/dataTables.bootstrap.css +++ /dev/null @@ -1,28 +0,0 @@ -div.dataTables_length label { - width: 460px; - float: left; - text-align: left; -} - -div.dataTables_length select { - width: 75px; -} - -div.dataTables_filter label { - float: right; - width: 460px; -} - -div.dataTables_info { - padding-top: 8px; -} - -div.dataTables_paginate { - float: right; - margin: 0; -} - -table { - margin: 1em 0; - clear: both; -} \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/1/dataTables.bootstrap.js b/dashboard/lib/datatables-plugins/integration/bootstrap/1/dataTables.bootstrap.js deleted file mode 100644 index 0c3a76fc..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/1/dataTables.bootstrap.js +++ /dev/null @@ -1,150 +0,0 @@ -/* Set the defaults for DataTables initialisation */ -$.extend( true, $.fn.dataTable.defaults, { - "sDom": "<'row'<'span8'l><'span8'f>r>t<'row'<'span8'i><'span8'p>>", - "sPaginationType": "bootstrap", - "oLanguage": { - "sLengthMenu": "_MENU_ records per page" - } -} ); - - -/* Default class modification */ -$.extend( $.fn.dataTableExt.oStdClasses, { - "sSortAsc": "header headerSortDown", - "sSortDesc": "header headerSortUp", - "sSortable": "header" -} ); - - -/* API method to get paging information */ -$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings ) -{ - return { - "iStart": oSettings._iDisplayStart, - "iEnd": oSettings.fnDisplayEnd(), - "iLength": oSettings._iDisplayLength, - "iTotal": oSettings.fnRecordsTotal(), - "iFilteredTotal": oSettings.fnRecordsDisplay(), - "iPage": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ), - "iTotalPages": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength ) - }; -}; - - -/* Bootstrap style pagination control */ -$.extend( $.fn.dataTableExt.oPagination, { - "bootstrap": { - "fnInit": function( oSettings, nPaging, fnDraw ) { - var oLang = oSettings.oLanguage.oPaginate; - var fnClickHandler = function ( e ) { - e.preventDefault(); - if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) { - fnDraw( oSettings ); - } - }; - - $(nPaging).addClass('pagination').append( - '<ul>'+ - '<li class="prev disabled"><a href="#">← '+oLang.sPrevious+'</a></li>'+ - '<li class="next disabled"><a href="#">'+oLang.sNext+' → </a></li>'+ - '</ul>' - ); - var els = $('a', nPaging); - $(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler ); - $(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler ); - }, - - "fnUpdate": function ( oSettings, fnDraw ) { - var iListLength = 5; - var oPaging = oSettings.oInstance.fnPagingInfo(); - var an = oSettings.aanFeatures.p; - var i, ien, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2); - - if ( oPaging.iTotalPages < iListLength) { - iStart = 1; - iEnd = oPaging.iTotalPages; - } - else if ( oPaging.iPage <= iHalf ) { - iStart = 1; - iEnd = iListLength; - } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) { - iStart = oPaging.iTotalPages - iListLength + 1; - iEnd = oPaging.iTotalPages; - } else { - iStart = oPaging.iPage - iHalf + 1; - iEnd = iStart + iListLength - 1; - } - - for ( i=0, ien=an.length ; i<ien ; i++ ) { - // Remove the middle elements - $('li:gt(0)', an[i]).filter(':not(:last)').remove(); - - // Add the new list items and their event handlers - for ( j=iStart ; j<=iEnd ; j++ ) { - sClass = (j==oPaging.iPage+1) ? 'class="active"' : ''; - $('<li '+sClass+'><a href="#">'+j+'</a></li>') - .insertBefore( $('li:last', an[i])[0] ) - .bind('click', function (e) { - e.preventDefault(); - oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength; - fnDraw( oSettings ); - } ); - } - - // Add / remove disabled classes from the static elements - if ( oPaging.iPage === 0 ) { - $('li:first', an[i]).addClass('disabled'); - } else { - $('li:first', an[i]).removeClass('disabled'); - } - - if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) { - $('li:last', an[i]).addClass('disabled'); - } else { - $('li:last', an[i]).removeClass('disabled'); - } - } - } - } -} ); - - -/* - * TableTools Bootstrap compatibility - * Required TableTools 2.1+ - */ -if ( $.fn.DataTable.TableTools ) { - // Set the classes that TableTools uses to something suitable for Bootstrap - $.extend( true, $.fn.DataTable.TableTools.classes, { - "container": "DTTT btn-group", - "buttons": { - "normal": "btn", - "disabled": "disabled" - }, - "collection": { - "container": "DTTT_dropdown dropdown-menu", - "buttons": { - "normal": "", - "disabled": "disabled" - } - }, - "print": { - "info": "DTTT_print_info modal" - }, - "select": { - "row": "active" - } - } ); - - // Have the collection use a bootstrap compatible dropdown - $.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, { - "collection": { - "container": "ul", - "button": "li", - "liner": "a" - } - } ); -} - diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.css b/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.css deleted file mode 100644 index 1744bb98..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.css +++ /dev/null @@ -1,226 +0,0 @@ -div.dataTables_length label { - text-align: left; -} - -div.dataTables_length select { - width: 75px; -} - -div.dataTables_filter { - text-align: right; -} - -div.dataTables_filter label { - text-align: left; -} - -div.dataTables_filter input { - margin-left: 0.5em; - display: inline-block; -} - -div.dataTables_info { - padding-top: 8px; -} - -div.dataTables_paginate { - text-align: right; - margin: 0; -} - -div.dataTables_paginate div.pagination { - margin: 0; -} - -@media screen and (max-width: 767px) { - div.dataTables_length, - div.dataTables_filter, - div.dataTables_info, - div.dataTables_paginate { - text-align: center; - } -} - -table.table { - clear: both; - margin-bottom: 6px !important; - max-width: none !important; -} - -table.table thead .sorting, -table.table thead .sorting_asc, -table.table thead .sorting_desc, -table.table thead .sorting_asc_disabled, -table.table thead .sorting_desc_disabled { - cursor: pointer; - *cursor: hand; -} - -table.table thead .sorting { background: url('../images/sort_both.png') no-repeat center right; } -table.table thead .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } -table.table thead .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } - -table.table thead .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } -table.table thead .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } - -table.dataTable th:active { - outline: none; -} - -/* Scrolling */ -div.dataTables_scrollHead table { - margin-bottom: 0 !important; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -div.dataTables_scrollHead table thead tr:last-child th:first-child, -div.dataTables_scrollHead table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.dataTables_scrollBody table { - border-top: none; - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody tbody tr:first-child th, -div.dataTables_scrollBody tbody tr:first-child td { - border-top: none; -} - -div.dataTables_scrollFoot table { - margin-top: 0 !important; - border-top: none; -} - - - - -/* - * TableTools styles - */ -.table tbody tr.active td, -.table tbody tr.active th { - background-color: #08C; - color: white; -} - -.table tbody tr.active:hover td, -.table tbody tr.active:hover th { - background-color: #0075b0 !important; -} - -.table tbody tr.active a { - color: white; -} - -.table-striped tbody tr.active:nth-child(odd) td, -.table-striped tbody tr.active:nth-child(odd) th { - background-color: #017ebc; -} - -table.DTTT_selectable tbody tr { - cursor: pointer; - *cursor: hand; -} - -div.DTTT .btn { - color: #333 !important; - font-size: 12px; -} - -div.DTTT .btn:hover { - text-decoration: none !important; -} - -ul.DTTT_dropdown.dropdown-menu { - z-index: 2003; -} - -ul.DTTT_dropdown.dropdown-menu a { - color: #333 !important; /* needed only when demo_page.css is included */ -} - -ul.DTTT_dropdown.dropdown-menu li { - position: relative; -} - -ul.DTTT_dropdown.dropdown-menu li:hover a { - background-color: #0088cc; - color: white !important; -} - -div.DTTT_collection_background { - z-index: 2002; -} - -/* TableTools information display */ -div.DTTT_print_info.modal { - height: 150px; - margin-top: -75px; - text-align: center; -} - -div.DTTT_print_info h6 { - font-weight: normal; - font-size: 28px; - line-height: 28px; - margin: 1em; -} - -div.DTTT_print_info p { - font-size: 14px; - line-height: 20px; -} - - - -/* - * FixedColumns styles - */ -div.DTFC_LeftHeadWrapper table, -div.DTFC_LeftFootWrapper table, -div.DTFC_RightHeadWrapper table, -div.DTFC_RightFootWrapper table, -table.DTFC_Cloned tr.even { - background-color: white; - margin-bottom: 0; -} - -div.DTFC_RightHeadWrapper table , -div.DTFC_LeftHeadWrapper table { - margin-bottom: 0 !important; - border-top-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightBodyWrapper table, -div.DTFC_LeftBodyWrapper table { - border-top: none; - margin-bottom: 0 !important; -} - -div.DTFC_RightBodyWrapper tbody tr:first-child th, -div.DTFC_RightBodyWrapper tbody tr:first-child td, -div.DTFC_LeftBodyWrapper tbody tr:first-child th, -div.DTFC_LeftBodyWrapper tbody tr:first-child td { - border-top: none; -} - -div.DTFC_RightFootWrapper table, -div.DTFC_LeftFootWrapper table { - border-top: none; -} - diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.js b/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.js deleted file mode 100644 index 264763f9..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.js +++ /dev/null @@ -1,162 +0,0 @@ -/*! DataTables Bootstrap 2 integration - * ©2011-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * DataTables integration for Bootstrap 2. This requires Bootstrap 2 and - * DataTables 1.10 or newer. - * - * This file sets the defaults and adds options to DataTables to style its - * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap - * for further information. - */ -(function(window, document, $, DataTable, undefined){ - -$.extend( true, DataTable.defaults, { - "dom": - "<'row-fluid'<'span6'l><'span6'f>r>" + - "<'row-fluid'<'span12't>>" + - "<'row-fluid'<'span6'i><'span6'p>>", - renderer: 'bootstrap' -} ); - - -/* Default class modification */ -$.extend( DataTable.ext.classes, { - sWrapper: "dataTables_wrapper form-inline dt-bootstrap" -} ); - - -/* Bootstrap paging button renderer */ -DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { - var api = new DataTable.Api( settings ); - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass; - - var attach = function( container, buttons ) { - var i, ien, node, button; - var clickHandler = function ( e ) { - e.preventDefault(); - if ( !$(e.currentTarget).hasClass('disabled') ) { - api.page( e.data.action ).draw( false ); - } - }; - - for ( i=0, ien=buttons.length ; i<ien ; i++ ) { - button = buttons[i]; - - if ( $.isArray( button ) ) { - attach( container, button ); - } - else { - btnDisplay = ''; - btnClass = ''; - - switch ( button ) { - case 'ellipsis': - btnDisplay = '…'; - btnClass = 'disabled'; - break; - - case 'first': - btnDisplay = lang.sFirst; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages-1 ? - '' : ' disabled'); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages-1 ? - '' : ' disabled'); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - 'active' : ''; - break; - } - - if ( btnDisplay ) { - node = $('<li>', { - 'class': classes.sPageButton+' '+btnClass, - 'aria-controls': settings.sTableId, - 'tabindex': settings.iTabIndex, - 'id': idx === 0 && typeof button === 'string' ? - settings.sTableId +'_'+ button : - null - } ) - .append( $('<a>', { - 'href': '#' - } ) - .html( btnDisplay ) - ) - .appendTo( container ); - - settings.oApi._fnBindAction( - node, {action: button}, clickHandler - ); - } - } - } - }; - - attach( - $(host).empty().html('<div class="pagination"><ul/></div>').find('ul'), - buttons - ); -}; - - -/* - * TableTools Bootstrap compatibility - * Required TableTools 2.1+ - */ -if ( DataTable.TableTools ) { - // Set the classes that TableTools uses to something suitable for Bootstrap - $.extend( true, DataTable.TableTools.classes, { - "container": "DTTT btn-group", - "buttons": { - "normal": "btn", - "disabled": "disabled" - }, - "collection": { - "container": "DTTT_dropdown dropdown-menu", - "buttons": { - "normal": "", - "disabled": "disabled" - } - }, - "print": { - "info": "DTTT_print_info modal" - }, - "select": { - "row": "active" - } - } ); - - // Have the collection use a bootstrap compatible dropdown - $.extend( true, DataTable.TableTools.DEFAULTS.oTags, { - "collection": { - "container": "ul", - "button": "li", - "liner": "a" - } - } ); -} - - -})(window, document, jQuery, jQuery.fn.dataTable); diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.min.js b/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.min.js deleted file mode 100644 index 4e5480d3..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/2/dataTables.bootstrap.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - DataTables Bootstrap 2 integration - ©2011-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(t,u,c,b){c.extend(!0,b.defaults,{dom:"<'row-fluid'<'span6'l><'span6'f>r><'row-fluid'<'span12't>><'row-fluid'<'span6'i><'span6'p>>",renderer:"bootstrap"});c.extend(b.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap"});b.ext.renderer.pageButton.bootstrap=function(f,j,p,q,g,k){var r=new b.Api(f),s=f.oClasses,h=f.oLanguage.oPaginate,d,e,o=function(b,l){var i,m,n,a,j=function(a){a.preventDefault();c(a.currentTarget).hasClass("disabled")||r.page(a.data.action).draw(!1)};i=0; -for(m=l.length;i<m;i++)if(a=l[i],c.isArray(a))o(b,a);else{e=d="";switch(a){case "ellipsis":d="…";e="disabled";break;case "first":d=h.sFirst;e=a+(0<g?"":" disabled");break;case "previous":d=h.sPrevious;e=a+(0<g?"":" disabled");break;case "next":d=h.sNext;e=a+(g<k-1?"":" disabled");break;case "last":d=h.sLast;e=a+(g<k-1?"":" disabled");break;default:d=a+1,e=g===a?"active":""}d&&(n=c("<li>",{"class":s.sPageButton+" "+e,"aria-controls":f.sTableId,tabindex:f.iTabIndex,id:0===p&&"string"===typeof a? -f.sTableId+"_"+a:null}).append(c("<a>",{href:"#"}).html(d)).appendTo(b),f.oApi._fnBindAction(n,{action:a},j))}};o(c(j).empty().html('<div class="pagination"><ul/></div>').find("ul"),q)};b.TableTools&&(c.extend(!0,b.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn",disabled:"disabled"},collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info modal"},select:{row:"active"}}),c.extend(!0,b.TableTools.DEFAULTS.oTags,{collection:{container:"ul", -button:"li",liner:"a"}}))})(window,document,jQuery,jQuery.fn.dataTable); diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/2/index.html b/dashboard/lib/datatables-plugins/integration/bootstrap/2/index.html deleted file mode 100644 index 4334d67d..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/2/index.html +++ /dev/null @@ -1,442 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - - <title>DataTables Bootstrap 2 example</title> - - <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"> - <link rel="stylesheet" type="text/css" href="dataTables.bootstrap.css"> - - <script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script> - <script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.3/js/jquery.dataTables.min.js"></script> - <script type="text/javascript" language="javascript" src="dataTables.bootstrap.js"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() { - $('#example').dataTable(); - } ); - </script> - </head> - <body> - <div class="container"> - -<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" id="example"> - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="odd gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0</td> - <td>Win 95+</td> - <td class="center"> 4</td> - <td class="center">X</td> - </tr> - <tr class="even gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0</td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="odd gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5</td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="even gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6</td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="odd gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="even gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> -</table> - - </div> - </body> -</html> \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.css b/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.css deleted file mode 100644 index 2ccacaff..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.css +++ /dev/null @@ -1,372 +0,0 @@ -div.dataTables_length label { - font-weight: normal; - text-align: left; - white-space: nowrap; -} - -div.dataTables_length select { - width: 75px; - display: inline-block; -} - -div.dataTables_filter { - text-align: right; -} - -div.dataTables_filter label { - font-weight: normal; - white-space: nowrap; - text-align: left; -} - -div.dataTables_filter input { - margin-left: 0.5em; - display: inline-block; - width: auto; -} - -div.dataTables_info { - padding-top: 8px; - white-space: nowrap; -} - -div.dataTables_paginate { - margin: 0; - white-space: nowrap; - text-align: right; -} - -div.dataTables_paginate ul.pagination { - margin: 2px 0; - white-space: nowrap; -} - -@media screen and (max-width: 767px) { - div.dataTables_wrapper > div.row > div, - div.dataTables_length, - div.dataTables_filter, - div.dataTables_info, - div.dataTables_paginate { - text-align: center; - } - - div.DTTT { - margin-bottom: 0.5em; - } -} - - -table.dataTable td, -table.dataTable th { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - - -table.dataTable { - clear: both; - margin-top: 6px !important; - margin-bottom: 6px !important; - max-width: none !important; -} - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - cursor: pointer; - position: relative; -} - -table.dataTable thead .sorting:after, -table.dataTable thead .sorting_asc:after, -table.dataTable thead .sorting_desc:after { - position: absolute; - top: 8px; - right: 8px; - display: block; - font-family: 'Glyphicons Halflings'; - opacity: 0.5; -} -table.dataTable thead .sorting:after { - opacity: 0.2; - content: "\e150"; /* sort */ -} -table.dataTable thead .sorting_asc:after { - content: "\e155"; /* sort-by-attributes */ -} -table.dataTable thead .sorting_desc:after { - content: "\e156"; /* sort-by-attributes-alt */ -} -div.dataTables_scrollBody table.dataTable thead .sorting:after, -div.dataTables_scrollBody table.dataTable thead .sorting_asc:after, -div.dataTables_scrollBody table.dataTable thead .sorting_desc:after { - display: none; -} - -table.dataTable thead .sorting_asc_disabled:after, -table.dataTable thead .sorting_desc_disabled:after { - color: #eee; -} - -table.dataTable thead > tr > th { - padding-right: 30px; -} - -table.dataTable th:active { - outline: none; -} - - -/* Condensed */ -table.dataTable.table-condensed thead > tr > th { - padding-right: 20px; -} - -table.dataTable.table-condensed thead .sorting:after, -table.dataTable.table-condensed thead .sorting_asc:after, -table.dataTable.table-condensed thead .sorting_desc:after { - top: 6px; - right: 6px; -} - -/* Scrolling */ -div.dataTables_scrollHead table { - margin-bottom: 0 !important; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -div.dataTables_scrollHead table thead tr:last-child th:first-child, -div.dataTables_scrollHead table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.dataTables_scrollBody table { - border-top: none; - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody tbody tr:first-child th, -div.dataTables_scrollBody tbody tr:first-child td { - border-top: none; -} - -div.dataTables_scrollFoot table { - margin-top: 0 !important; - border-top: none; -} - -/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column - width calculations when using scrolling impossible to align columns. We have - to use separate - */ -table.table-bordered.dataTable { - border-collapse: separate !important; -} -table.table-bordered thead th, -table.table-bordered thead td { - border-left-width: 0; - border-top-width: 0; -} -table.table-bordered tbody th, -table.table-bordered tbody td { - border-left-width: 0; - border-bottom-width: 0; -} -table.table-bordered tfoot th, -table.table-bordered tfoot td { - border-left-width: 0; - border-bottom-width: 0; -} -table.table-bordered th:last-child, -table.table-bordered td:last-child { - border-right-width: 0; -} -div.dataTables_scrollHead table.table-bordered { - border-bottom-width: 0; -} - - - - -/* - * TableTools styles - */ -.table.dataTable tbody tr.active td, -.table.dataTable tbody tr.active th { - background-color: #08C; - color: white; -} - -.table.dataTable tbody tr.active:hover td, -.table.dataTable tbody tr.active:hover th { - background-color: #0075b0 !important; -} - -.table.dataTable tbody tr.active th > a, -.table.dataTable tbody tr.active td > a { - color: white; -} - -.table-striped.dataTable tbody tr.active:nth-child(odd) td, -.table-striped.dataTable tbody tr.active:nth-child(odd) th { - background-color: #017ebc; -} - -table.DTTT_selectable tbody tr { - cursor: pointer; -} - -div.DTTT .btn:hover { - text-decoration: none !important; -} - -ul.DTTT_dropdown.dropdown-menu { - z-index: 2003; -} - -ul.DTTT_dropdown.dropdown-menu a { - color: #333 !important; /* needed only when demo_page.css is included */ -} - -ul.DTTT_dropdown.dropdown-menu li { - position: relative; -} - -ul.DTTT_dropdown.dropdown-menu li:hover a { - background-color: #0088cc; - color: white !important; -} - -div.DTTT_collection_background { - z-index: 2002; -} - -/* TableTools information display */ -div.DTTT_print_info { - position: fixed; - top: 50%; - left: 50%; - width: 400px; - height: 150px; - margin-left: -200px; - margin-top: -75px; - text-align: center; - color: #333; - padding: 10px 30px; - opacity: 0.95; - - background-color: white; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); -} - -div.DTTT_print_info h6 { - font-weight: normal; - font-size: 28px; - line-height: 28px; - margin: 1em; -} - -div.DTTT_print_info p { - font-size: 14px; - line-height: 20px; -} - -div.dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 60px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - padding-bottom: 20px; - text-align: center; - font-size: 1.2em; - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0))); - background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); -} - - - -/* - * FixedColumns styles - */ -div.DTFC_LeftHeadWrapper table, -div.DTFC_LeftFootWrapper table, -div.DTFC_RightHeadWrapper table, -div.DTFC_RightFootWrapper table, -table.DTFC_Cloned tr.even { - background-color: white; - margin-bottom: 0; -} - -div.DTFC_RightHeadWrapper table , -div.DTFC_LeftHeadWrapper table { - border-bottom: none !important; - margin-bottom: 0 !important; - border-top-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightBodyWrapper table, -div.DTFC_LeftBodyWrapper table { - border-top: none; - margin: 0 !important; -} - -div.DTFC_RightBodyWrapper tbody tr:first-child th, -div.DTFC_RightBodyWrapper tbody tr:first-child td, -div.DTFC_LeftBodyWrapper tbody tr:first-child th, -div.DTFC_LeftBodyWrapper tbody tr:first-child td { - border-top: none; -} - -div.DTFC_RightFootWrapper table, -div.DTFC_LeftFootWrapper table { - border-top: none; - margin-top: 0 !important; -} - - -div.DTFC_LeftBodyWrapper table.dataTable thead .sorting:after, -div.DTFC_LeftBodyWrapper table.dataTable thead .sorting_asc:after, -div.DTFC_LeftBodyWrapper table.dataTable thead .sorting_desc:after, -div.DTFC_RightBodyWrapper table.dataTable thead .sorting:after, -div.DTFC_RightBodyWrapper table.dataTable thead .sorting_asc:after, -div.DTFC_RightBodyWrapper table.dataTable thead .sorting_desc:after { - display: none; -} - - -/* - * FixedHeader styles - */ -div.FixedHeader_Cloned table { - margin: 0 !important -} - diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.js b/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.js deleted file mode 100644 index dcc561fc..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.js +++ /dev/null @@ -1,206 +0,0 @@ -/*! DataTables Bootstrap 3 integration - * ©2011-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and - * DataTables 1.10 or newer. - * - * This file sets the defaults and adds options to DataTables to style its - * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap - * for further information. - */ -(function(window, document, undefined){ - -var factory = function( $, DataTable ) { -"use strict"; - - -/* Set the defaults for DataTables initialisation */ -$.extend( true, DataTable.defaults, { - dom: - "<'row'<'col-sm-6'l><'col-sm-6'f>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-5'i><'col-sm-7'p>>", - renderer: 'bootstrap' -} ); - - -/* Default class modification */ -$.extend( DataTable.ext.classes, { - sWrapper: "dataTables_wrapper form-inline dt-bootstrap", - sFilterInput: "form-control input-sm", - sLengthSelect: "form-control input-sm" -} ); - - -/* Bootstrap paging button renderer */ -DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { - var api = new DataTable.Api( settings ); - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass, counter=0; - - var attach = function( container, buttons ) { - var i, ien, node, button; - var clickHandler = function ( e ) { - e.preventDefault(); - if ( !$(e.currentTarget).hasClass('disabled') ) { - api.page( e.data.action ).draw( false ); - } - }; - - for ( i=0, ien=buttons.length ; i<ien ; i++ ) { - button = buttons[i]; - - if ( $.isArray( button ) ) { - attach( container, button ); - } - else { - btnDisplay = ''; - btnClass = ''; - - switch ( button ) { - case 'ellipsis': - btnDisplay = '…'; - btnClass = 'disabled'; - break; - - case 'first': - btnDisplay = lang.sFirst; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages-1 ? - '' : ' disabled'); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages-1 ? - '' : ' disabled'); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - 'active' : ''; - break; - } - - if ( btnDisplay ) { - node = $('<li>', { - 'class': classes.sPageButton+' '+btnClass, - 'id': idx === 0 && typeof button === 'string' ? - settings.sTableId +'_'+ button : - null - } ) - .append( $('<a>', { - 'href': '#', - 'aria-controls': settings.sTableId, - 'data-dt-idx': counter, - 'tabindex': settings.iTabIndex - } ) - .html( btnDisplay ) - ) - .appendTo( container ); - - settings.oApi._fnBindAction( - node, {action: button}, clickHandler - ); - - counter++; - } - } - } - }; - - // IE9 throws an 'unknown error' if document.activeElement is used - // inside an iframe or frame. - var activeEl; - - try { - // Because this approach is destroying and recreating the paging - // elements, focus is lost on the select button which is bad for - // accessibility. So we want to restore focus once the draw has - // completed - activeEl = $(document.activeElement).data('dt-idx'); - } - catch (e) {} - - attach( - $(host).empty().html('<ul class="pagination"/>').children('ul'), - buttons - ); - - if ( activeEl ) { - $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); - } -}; - - -/* - * TableTools Bootstrap compatibility - * Required TableTools 2.1+ - */ -if ( DataTable.TableTools ) { - // Set the classes that TableTools uses to something suitable for Bootstrap - $.extend( true, DataTable.TableTools.classes, { - "container": "DTTT btn-group", - "buttons": { - "normal": "btn btn-default", - "disabled": "disabled" - }, - "collection": { - "container": "DTTT_dropdown dropdown-menu", - "buttons": { - "normal": "", - "disabled": "disabled" - } - }, - "print": { - "info": "DTTT_print_info" - }, - "select": { - "row": "active" - } - } ); - - // Have the collection use a bootstrap compatible drop down - $.extend( true, DataTable.TableTools.DEFAULTS.oTags, { - "collection": { - "container": "ul", - "button": "li", - "liner": "a" - } - } ); -} - -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.min.js b/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.min.js deleted file mode 100644 index 85f7d062..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - DataTables Bootstrap 3 integration - ©2011-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(l,q){var e=function(b,c){b.extend(!0,c.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(c.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm"});c.ext.renderer.pageButton.bootstrap=function(g,e,r,s,i,m){var t=new c.Api(g),u=g.oClasses,j=g.oLanguage.oPaginate,d,f,n=0,p=function(c,e){var k,h,o,a,l=function(a){a.preventDefault(); -b(a.currentTarget).hasClass("disabled")||t.page(a.data.action).draw(!1)};k=0;for(h=e.length;k<h;k++)if(a=e[k],b.isArray(a))p(c,a);else{f=d="";switch(a){case "ellipsis":d="…";f="disabled";break;case "first":d=j.sFirst;f=a+(0<i?"":" disabled");break;case "previous":d=j.sPrevious;f=a+(0<i?"":" disabled");break;case "next":d=j.sNext;f=a+(i<m-1?"":" disabled");break;case "last":d=j.sLast;f=a+(i<m-1?"":" disabled");break;default:d=a+1,f=i===a?"active":""}d&&(o=b("<li>",{"class":u.sPageButton+" "+ -f,id:0===r&&"string"===typeof a?g.sTableId+"_"+a:null}).append(b("<a>",{href:"#","aria-controls":g.sTableId,"data-dt-idx":n,tabindex:g.iTabIndex}).html(d)).appendTo(c),g.oApi._fnBindAction(o,{action:a},l),n++)}},h;try{h=b(q.activeElement).data("dt-idx")}catch(l){}p(b(e).empty().html('<ul class="pagination"/>').children("ul"),s);h&&b(e).find("[data-dt-idx="+h+"]").focus()};c.TableTools&&(b.extend(!0,c.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default",disabled:"disabled"}, -collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info"},select:{row:"active"}}),b.extend(!0,c.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}}))};"function"===typeof define&&define.amd?define(["jquery","datatables"],e):"object"===typeof exports?e(require("jquery"),require("datatables")):jQuery&&e(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/3/index.html b/dashboard/lib/datatables-plugins/integration/bootstrap/3/index.html deleted file mode 100644 index c6e0e47c..00000000 --- a/dashboard/lib/datatables-plugins/integration/bootstrap/3/index.html +++ /dev/null @@ -1,442 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - - <title>DataTables Bootstrap 3 example</title> - - <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> - <link rel="stylesheet" type="text/css" href="dataTables.bootstrap.css"> - - <script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script> - <script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.3/js/jquery.dataTables.min.js"></script> - <script type="text/javascript" language="javascript" src="dataTables.bootstrap.js"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() { - $('#example').DataTable(); - } ); - </script> - </head> - <body> - <div class="container"> - -<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered table-condensed" id="example"> - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="odd gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0</td> - <td>Win 95+</td> - <td class="center"> 4</td> - <td class="center">X</td> - </tr> - <tr class="even gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0</td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="odd gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5</td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="even gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6</td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="odd gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="even gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> -</table> - - </div> - </body> -</html> \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_asc.png b/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_asc.png deleted file mode 100644 index e1ba61a8055fcb18273f2468d335572204667b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*bWaz@5R22v2@;zYta_*?F5u6Q zWR@in#&u+WgT?Hi<}D3B3<dtPKf3L(#%G;lkAsbPmH>}GOXuX|8Oj3tosHiJ3*4TN zC7>_x-r1O=t(?KoTC+`+>7&2GzdqLHBg&F)2Q?&EGZ+}|Rpsc~9`m>jw35No)z4*} HQ$iB}HK{Sd diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_asc_disabled.png b/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_asc_disabled.png deleted file mode 100644 index fb11dfe24a6c564cb7ddf8bc96703ebb121df1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX(Vi}jAsXkC6BcOhI9!^3NY?Do zDX;f`c1`y6n0RgO@$!H7ch<T~&R05SUEJ8^Q1D3B?anEg_j{VPewQ3)o33=v`u75$ u@NwC)H>ZT&|Jn0dmaqO^XNm-CGtk!Ur<_=Jws3;%W$<+Mb6Mw<&;$T1GdZXL diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_both.png b/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_both.png deleted file mode 100644 index af5bc7c5a10b9d6d57cb641aeec752428a07f0ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX6FglULp08By<o`a;2_ZY@ahDQ zIZn@cq>cxyy87-Q;~nRxO8@-UU*I^KVWyN+&SiMHu5xDOu|HNvwzODfTdXjhVyNu1 z#7^XbGKZ7<gEZFeRPCMIsy$+yhaA3~(<<ARU4F{HcWVEZS94u?w%>LW3XeONb<yeJ z>$RKLeE*WhqbYpIXPIqK@r4)v+qN8um%99%MPpS9d#7Ed7SL@Bp00i_>zopr0H-Zb Aj{pDw diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_desc.png b/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_desc.png deleted file mode 100644 index 0e156deb5f61d18f9e2ec5da4f6a8c94a5b4fb41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*R8JSj5R22v2@<S}6GRp?u4>yo z(czD9$NuDl3Ljm9c#_#4$vXUz=f1~&WY3aa=h!;z7fOEN>ySP9QA=6C-^Dmb&tuM= z4Z&=WZU;2WF>e%GI&mWJk^K!jrbro{W;-I>FeCfLGJl3}+Z^2)3Kw?+EoAU?^>bP0 Hl+XkKC^<KP diff --git a/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_desc_disabled.png b/dashboard/lib/datatables-plugins/integration/bootstrap/images/sort_desc_disabled.png deleted file mode 100644 index c9fdd8a1502fda301682e907afde86bc450da10f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRXk)AG&AsXkC6C_xhx$boC`TY4@ zxy7GKb-~?6->j|Q{b@g3TV7E(Grjn^aLC2o)_ptHrtUEoT$S@q)~)7U@V;W{6)!%@ u>N?4t-1qslpJw9!O?PJ&w0Cby<YFk^=EPF?qfY~934^DrpUXO@geCx6y*UB^ diff --git a/dashboard/lib/datatables-plugins/integration/font-awesome/bootstrap.html b/dashboard/lib/datatables-plugins/integration/font-awesome/bootstrap.html deleted file mode 100644 index 30d7f1fd..00000000 --- a/dashboard/lib/datatables-plugins/integration/font-awesome/bootstrap.html +++ /dev/null @@ -1,511 +0,0 @@ -<!doctype html> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - - <title>DataTables + Bootstrap + Font Awesome</title> - - <link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css"> - <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/plug-ins/28e7751dbec/integration/bootstrap/3/dataTables.bootstrap.css"> - <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.css"> - <link rel="stylesheet" type="text/css" href="dataTables.fontAwesome.css"> - - <script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script> - <script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.0/js/jquery.dataTables.min.js"></script> - <script type="text/javascript" language="javascript" src="//cdn.datatables.net/plug-ins/28e7751dbec/integration/bootstrap/3/dataTables.bootstrap.js"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() { - $('#example').dataTable(); - } ); - </script> - </head> - <body> - <div class="container"> - - - <table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - </div> - </body> -</html> \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/integration/font-awesome/dataTables.fontAwesome.css b/dashboard/lib/datatables-plugins/integration/font-awesome/dataTables.fontAwesome.css deleted file mode 100644 index 17bfb4e5..00000000 --- a/dashboard/lib/datatables-plugins/integration/font-awesome/dataTables.fontAwesome.css +++ /dev/null @@ -1,156 +0,0 @@ -/*! - * DataTables + Font Awesome integration - * License: MIT - http://datatables.net/license - */ - -/* - * Sort styling - */ -table.dataTable thead th { - position: relative; - background-image: none !important; /* Remove the DataTables bootstrap integration styling */ -} - -table.dataTable thead th.sorting:after, -table.dataTable thead th.sorting_asc:after, -table.dataTable thead th.sorting_desc:after { - position: absolute; - top: 12px; - right: 8px; - display: block; - font-family: FontAwesome; -} - -table.dataTable thead th.sorting:after { - content: "\f0dc"; - color: #ddd; - font-size: 0.8em; - padding-top: 0.12em; -} -table.dataTable thead th.sorting_asc:after { - content: "\f0de"; -} -table.dataTable thead th.sorting_desc:after { - content: "\f0dd"; -} - -div.dataTables_scrollBody table.dataTable thead th.sorting:after, -div.dataTables_scrollBody table.dataTable thead th.sorting_asc:after, -div.dataTables_scrollBody table.dataTable thead th.sorting_desc:after { - content: ""; -} - -/* In Bootstrap and Foundation the padding top is a little different from the DataTables stylesheet */ -table.table thead th.sorting:after, -table.table thead th.sorting_asc:after, -table.table thead th.sorting_desc:after { - top: 8px; -} - - -/* - * DataTables style pagination controls - */ -div.dataTables_paginate a.paginate_button.first, -div.dataTables_paginate a.paginate_button.previous { - position: relative; - padding-left: 24px; -} - -div.dataTables_paginate a.paginate_button.next, -div.dataTables_paginate a.paginate_button.last { - position: relative; - padding-right: 24px; -} - -div.dataTables_paginate a.first:before, -div.dataTables_paginate a.previous:before { - position: absolute; - top: 8px; - left: 10px; - display: block; - font-family: FontAwesome; -} - -div.dataTables_paginate a.next:after, -div.dataTables_paginate a.last:after { - position: absolute; - top: 8px; - right: 10px; - display: block; - font-family: FontAwesome; -} - -div.dataTables_paginate a.first:before { - content: "\f100"; -} - -div.dataTables_paginate a.previous:before { - content: "\f104"; -} - -div.dataTables_paginate a.next:after { - content: "\f105"; -} - -div.dataTables_paginate a.last:after { - content: "\f101"; -} - - -/* - * Bootstrap and foundation style pagination controls - */ -div.dataTables_paginate li.first > a, -div.dataTables_paginate li.previous > a { - position: relative; - padding-left: 24px; -} - -div.dataTables_paginate li.next > a, -div.dataTables_paginate li.last > a { - position: relative; - padding-right: 24px; -} - -div.dataTables_paginate li.first a:before, -div.dataTables_paginate li.previous a:before { - position: absolute; - top: 6px; - left: 10px; - display: block; - font-family: FontAwesome; -} - -div.dataTables_paginate li.next a:after, -div.dataTables_paginate li.last a:after { - position: absolute; - top: 6px; - right: 10px; - display: block; - font-family: FontAwesome; -} - -div.dataTables_paginate li.first a:before { - content: "\f100"; -} - -div.dataTables_paginate li.previous a:before { - content: "\f104"; -} - -div.dataTables_paginate li.next a:after { - content: "\f105"; -} - -div.dataTables_paginate li.last a:after { - content: "\f101"; -} - -/* In Foundation we don't want the padding like in bootstrap */ -div.columns div.dataTables_paginate li.first a:before, -div.columns div.dataTables_paginate li.previous a:before, -div.columns div.dataTables_paginate li.next a:after, -div.columns div.dataTables_paginate li.last a:after { - top: 0; -} diff --git a/dashboard/lib/datatables-plugins/integration/font-awesome/datatables.html b/dashboard/lib/datatables-plugins/integration/font-awesome/datatables.html deleted file mode 100644 index 8ff4a2a4..00000000 --- a/dashboard/lib/datatables-plugins/integration/font-awesome/datatables.html +++ /dev/null @@ -1,519 +0,0 @@ -<!doctype html> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - - <title>DataTables + Font Awesome</title> - - <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.0/css/jquery.dataTables.css"> - <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.1.0/css/font-awesome.css"> - <link rel="stylesheet" type="text/css" href="dataTables.fontAwesome.css"> - <style type="text/css"> - body { - font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; - font-size: 14px; - } - - div.container { - width: 960px; - margin: 0 auto; - } - </style> - - <script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script> - <script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.0/js/jquery.dataTables.min.js"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() { - $('#example').dataTable(); - } ); - </script> - </head> - <body> - <div class="container"> - - <table id="example" class="display" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - </div> - </body> -</html> \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/integration/font-awesome/foundation.html b/dashboard/lib/datatables-plugins/integration/font-awesome/foundation.html deleted file mode 100644 index 70aec435..00000000 --- a/dashboard/lib/datatables-plugins/integration/font-awesome/foundation.html +++ /dev/null @@ -1,511 +0,0 @@ -<!doctype html> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - - <title>DataTables + Foundation + FontAwesome example</title> - - <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/foundation/5.0.2/css/foundation.min.css"> - <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/plug-ins/28e7751dbec/integration/foundation/dataTables.foundation.css"> - <link rel="stylesheet" type="text/css" href="dataTables.fontAwesome.css"> - - <script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script> - <script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.0/js/jquery.dataTables.min.js"></script> - <script type="text/javascript" language="javascript" src="//cdn.datatables.net/plug-ins/28e7751dbec/integration/foundation/dataTables.foundation.js"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() { - $('#example').dataTable(); - } ); - </script> - </head> - <body> - <div class="row"> - <div class="large-12 columns"> - - <table id="example" class="display table" cellspacing="0" width="100%"> - <thead> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </thead> - - <tfoot> - <tr> - <th>Name</th> - <th>Position</th> - <th>Office</th> - <th>Age</th> - <th>Start date</th> - <th>Salary</th> - </tr> - </tfoot> - - <tbody> - <tr> - <td>Tiger Nixon</td> - <td>System Architect</td> - <td>Edinburgh</td> - <td>61</td> - <td>2011/04/25</td> - <td>$320,800</td> - </tr> - <tr> - <td>Garrett Winters</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>63</td> - <td>2011/07/25</td> - <td>$170,750</td> - </tr> - <tr> - <td>Ashton Cox</td> - <td>Junior Technical Author</td> - <td>San Francisco</td> - <td>66</td> - <td>2009/01/12</td> - <td>$86,000</td> - </tr> - <tr> - <td>Cedric Kelly</td> - <td>Senior Javascript Developer</td> - <td>Edinburgh</td> - <td>22</td> - <td>2012/03/29</td> - <td>$433,060</td> - </tr> - <tr> - <td>Airi Satou</td> - <td>Accountant</td> - <td>Tokyo</td> - <td>33</td> - <td>2008/11/28</td> - <td>$162,700</td> - </tr> - <tr> - <td>Brielle Williamson</td> - <td>Integration Specialist</td> - <td>New York</td> - <td>61</td> - <td>2012/12/02</td> - <td>$372,000</td> - </tr> - <tr> - <td>Herrod Chandler</td> - <td>Sales Assistant</td> - <td>San Francisco</td> - <td>59</td> - <td>2012/08/06</td> - <td>$137,500</td> - </tr> - <tr> - <td>Rhona Davidson</td> - <td>Integration Specialist</td> - <td>Tokyo</td> - <td>55</td> - <td>2010/10/14</td> - <td>$327,900</td> - </tr> - <tr> - <td>Colleen Hurst</td> - <td>Javascript Developer</td> - <td>San Francisco</td> - <td>39</td> - <td>2009/09/15</td> - <td>$205,500</td> - </tr> - <tr> - <td>Sonya Frost</td> - <td>Software Engineer</td> - <td>Edinburgh</td> - <td>23</td> - <td>2008/12/13</td> - <td>$103,600</td> - </tr> - <tr> - <td>Jena Gaines</td> - <td>Office Manager</td> - <td>London</td> - <td>30</td> - <td>2008/12/19</td> - <td>$90,560</td> - </tr> - <tr> - <td>Quinn Flynn</td> - <td>Support Lead</td> - <td>Edinburgh</td> - <td>22</td> - <td>2013/03/03</td> - <td>$342,000</td> - </tr> - <tr> - <td>Charde Marshall</td> - <td>Regional Director</td> - <td>San Francisco</td> - <td>36</td> - <td>2008/10/16</td> - <td>$470,600</td> - </tr> - <tr> - <td>Haley Kennedy</td> - <td>Senior Marketing Designer</td> - <td>London</td> - <td>43</td> - <td>2012/12/18</td> - <td>$313,500</td> - </tr> - <tr> - <td>Tatyana Fitzpatrick</td> - <td>Regional Director</td> - <td>London</td> - <td>19</td> - <td>2010/03/17</td> - <td>$385,750</td> - </tr> - <tr> - <td>Michael Silva</td> - <td>Marketing Designer</td> - <td>London</td> - <td>66</td> - <td>2012/11/27</td> - <td>$198,500</td> - </tr> - <tr> - <td>Paul Byrd</td> - <td>Chief Financial Officer (CFO)</td> - <td>New York</td> - <td>64</td> - <td>2010/06/09</td> - <td>$725,000</td> - </tr> - <tr> - <td>Gloria Little</td> - <td>Systems Administrator</td> - <td>New York</td> - <td>59</td> - <td>2009/04/10</td> - <td>$237,500</td> - </tr> - <tr> - <td>Bradley Greer</td> - <td>Software Engineer</td> - <td>London</td> - <td>41</td> - <td>2012/10/13</td> - <td>$132,000</td> - </tr> - <tr> - <td>Dai Rios</td> - <td>Personnel Lead</td> - <td>Edinburgh</td> - <td>35</td> - <td>2012/09/26</td> - <td>$217,500</td> - </tr> - <tr> - <td>Jenette Caldwell</td> - <td>Development Lead</td> - <td>New York</td> - <td>30</td> - <td>2011/09/03</td> - <td>$345,000</td> - </tr> - <tr> - <td>Yuri Berry</td> - <td>Chief Marketing Officer (CMO)</td> - <td>New York</td> - <td>40</td> - <td>2009/06/25</td> - <td>$675,000</td> - </tr> - <tr> - <td>Caesar Vance</td> - <td>Pre-Sales Support</td> - <td>New York</td> - <td>21</td> - <td>2011/12/12</td> - <td>$106,450</td> - </tr> - <tr> - <td>Doris Wilder</td> - <td>Sales Assistant</td> - <td>Sidney</td> - <td>23</td> - <td>2010/09/20</td> - <td>$85,600</td> - </tr> - <tr> - <td>Angelica Ramos</td> - <td>Chief Executive Officer (CEO)</td> - <td>London</td> - <td>47</td> - <td>2009/10/09</td> - <td>$1,200,000</td> - </tr> - <tr> - <td>Gavin Joyce</td> - <td>Developer</td> - <td>Edinburgh</td> - <td>42</td> - <td>2010/12/22</td> - <td>$92,575</td> - </tr> - <tr> - <td>Jennifer Chang</td> - <td>Regional Director</td> - <td>Singapore</td> - <td>28</td> - <td>2010/11/14</td> - <td>$357,650</td> - </tr> - <tr> - <td>Brenden Wagner</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>28</td> - <td>2011/06/07</td> - <td>$206,850</td> - </tr> - <tr> - <td>Fiona Green</td> - <td>Chief Operating Officer (COO)</td> - <td>San Francisco</td> - <td>48</td> - <td>2010/03/11</td> - <td>$850,000</td> - </tr> - <tr> - <td>Shou Itou</td> - <td>Regional Marketing</td> - <td>Tokyo</td> - <td>20</td> - <td>2011/08/14</td> - <td>$163,000</td> - </tr> - <tr> - <td>Michelle House</td> - <td>Integration Specialist</td> - <td>Sidney</td> - <td>37</td> - <td>2011/06/02</td> - <td>$95,400</td> - </tr> - <tr> - <td>Suki Burks</td> - <td>Developer</td> - <td>London</td> - <td>53</td> - <td>2009/10/22</td> - <td>$114,500</td> - </tr> - <tr> - <td>Prescott Bartlett</td> - <td>Technical Author</td> - <td>London</td> - <td>27</td> - <td>2011/05/07</td> - <td>$145,000</td> - </tr> - <tr> - <td>Gavin Cortez</td> - <td>Team Leader</td> - <td>San Francisco</td> - <td>22</td> - <td>2008/10/26</td> - <td>$235,500</td> - </tr> - <tr> - <td>Martena Mccray</td> - <td>Post-Sales support</td> - <td>Edinburgh</td> - <td>46</td> - <td>2011/03/09</td> - <td>$324,050</td> - </tr> - <tr> - <td>Unity Butler</td> - <td>Marketing Designer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/12/09</td> - <td>$85,675</td> - </tr> - <tr> - <td>Howard Hatfield</td> - <td>Office Manager</td> - <td>San Francisco</td> - <td>51</td> - <td>2008/12/16</td> - <td>$164,500</td> - </tr> - <tr> - <td>Hope Fuentes</td> - <td>Secretary</td> - <td>San Francisco</td> - <td>41</td> - <td>2010/02/12</td> - <td>$109,850</td> - </tr> - <tr> - <td>Vivian Harrell</td> - <td>Financial Controller</td> - <td>San Francisco</td> - <td>62</td> - <td>2009/02/14</td> - <td>$452,500</td> - </tr> - <tr> - <td>Timothy Mooney</td> - <td>Office Manager</td> - <td>London</td> - <td>37</td> - <td>2008/12/11</td> - <td>$136,200</td> - </tr> - <tr> - <td>Jackson Bradshaw</td> - <td>Director</td> - <td>New York</td> - <td>65</td> - <td>2008/09/26</td> - <td>$645,750</td> - </tr> - <tr> - <td>Olivia Liang</td> - <td>Support Engineer</td> - <td>Singapore</td> - <td>64</td> - <td>2011/02/03</td> - <td>$234,500</td> - </tr> - <tr> - <td>Bruno Nash</td> - <td>Software Engineer</td> - <td>London</td> - <td>38</td> - <td>2011/05/03</td> - <td>$163,500</td> - </tr> - <tr> - <td>Sakura Yamamoto</td> - <td>Support Engineer</td> - <td>Tokyo</td> - <td>37</td> - <td>2009/08/19</td> - <td>$139,575</td> - </tr> - <tr> - <td>Thor Walton</td> - <td>Developer</td> - <td>New York</td> - <td>61</td> - <td>2013/08/11</td> - <td>$98,540</td> - </tr> - <tr> - <td>Finn Camacho</td> - <td>Support Engineer</td> - <td>San Francisco</td> - <td>47</td> - <td>2009/07/07</td> - <td>$87,500</td> - </tr> - <tr> - <td>Serge Baldwin</td> - <td>Data Coordinator</td> - <td>Singapore</td> - <td>64</td> - <td>2012/04/09</td> - <td>$138,575</td> - </tr> - <tr> - <td>Zenaida Frank</td> - <td>Software Engineer</td> - <td>New York</td> - <td>63</td> - <td>2010/01/04</td> - <td>$125,250</td> - </tr> - <tr> - <td>Zorita Serrano</td> - <td>Software Engineer</td> - <td>San Francisco</td> - <td>56</td> - <td>2012/06/01</td> - <td>$115,000</td> - </tr> - <tr> - <td>Jennifer Acosta</td> - <td>Junior Javascript Developer</td> - <td>Edinburgh</td> - <td>43</td> - <td>2013/02/01</td> - <td>$75,650</td> - </tr> - <tr> - <td>Cara Stevens</td> - <td>Sales Assistant</td> - <td>New York</td> - <td>46</td> - <td>2011/12/06</td> - <td>$145,600</td> - </tr> - <tr> - <td>Hermione Butler</td> - <td>Regional Director</td> - <td>London</td> - <td>47</td> - <td>2011/03/21</td> - <td>$356,250</td> - </tr> - <tr> - <td>Lael Greer</td> - <td>Systems Administrator</td> - <td>London</td> - <td>21</td> - <td>2009/02/27</td> - <td>$103,500</td> - </tr> - <tr> - <td>Jonas Alexander</td> - <td>Developer</td> - <td>San Francisco</td> - <td>30</td> - <td>2010/07/14</td> - <td>$86,500</td> - </tr> - <tr> - <td>Shad Decker</td> - <td>Regional Director</td> - <td>Edinburgh</td> - <td>51</td> - <td>2008/11/13</td> - <td>$183,000</td> - </tr> - <tr> - <td>Michael Bruce</td> - <td>Javascript Developer</td> - <td>Singapore</td> - <td>29</td> - <td>2011/06/27</td> - <td>$183,000</td> - </tr> - <tr> - <td>Donna Snider</td> - <td>Customer Support</td> - <td>New York</td> - <td>27</td> - <td>2011/01/25</td> - <td>$112,000</td> - </tr> - </tbody> - </table> - - </div> - </div> - </body> -</html> \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.css b/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.css deleted file mode 100644 index ee565acd..00000000 --- a/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.css +++ /dev/null @@ -1,222 +0,0 @@ -div.dataTables_wrapper { - margin-bottom: 1.25em; -} - -div.dataTables_length label, -div.dataTables_filter label, -div.dataTables_info { - color: #999; - font-weight: normal; -} - -div.dataTables_length label { - float: left; - text-align: left; - margin-bottom: 0; -} - -div.dataTables_length select { - width: 75px; - margin-bottom: 0; -} - -div.dataTables_filter label { - float: right; - margin-bottom: 0; -} -div.dataTables_filter input { - display: inline-block !important; - width: auto !important; - margin-bottom: 0; - margin-left: 0.5em; -} - -div.dataTables_info { - padding-top: 2px; - font-size: 0.875em; -} - -div.dataTables_paginate { - float: right; - margin: 0; -} - -table.dataTable { - clear: both; - margin: 0.5em 0 !important; - max-width: none !important; - width: 100%; -} - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - cursor: pointer; - *cursor: hand; -} - -table.dataTable thead .sorting { background: url('images/sort_both.png') no-repeat center right; } -table.dataTable thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; } -table.dataTable thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; } - -table.dataTable thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; } -table.dataTable thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; } - -table.dataTable th:active { - outline: none; -} - -/* Scrolling */ -div.dataTables_scrollHead table { - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody table { - border-top: none; - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody tbody tr:first-child th, -div.dataTables_scrollBody tbody tr:first-child td { - border-top: none; -} - -div.dataTables_scrollFoot table { - margin-top: 0 !important; - border-top: none; -} - - - - -/* - * TableTools styles - */ -.table tbody tr.active td, -.table tbody tr.active th { - background-color: #08C; - color: white; -} - -.table tbody tr.active:hover td, -.table tbody tr.active:hover th { - background-color: #0075b0 !important; -} - -.table-striped tbody tr.active:nth-child(odd) td, -.table-striped tbody tr.active:nth-child(odd) th { - background-color: #017ebc; -} - -table.DTTT_selectable tbody tr { - cursor: pointer; - *cursor: hand; -} - -div.DTTT { - float: left; - margin-bottom: 0; - margin-top: -0.3em; -} - -div.DTTT .button { - margin: 0 0 0.25rem; -} - -div.DTTT .button:hover { - text-decoration: none !important; -} - -ul.DTTT_dropdown.dropdown-menu li { - position: relative; -} - -ul.DTTT_dropdown.dropdown-menu li:hover a { - background-color: #0088cc; - color: white !important; -} - -/* TableTools information display */ -.DTTT_print_info { - position: fixed; - top: 50%; - left: 50%; - width: 400px; - height: 150px; - margin-left: -200px; - margin-top: -75px; - text-align: center; - color: #333; - padding: 10px 30px; - - background: #ffffff; /* Old browsers */ - background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */ - background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */ - background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */ - - opacity: 0.95; - - border: 1px solid black; - border: 1px solid rgba(0, 0, 0, 0.5); - - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - -ms-border-radius: 6px; - -o-border-radius: 6px; - border-radius: 6px; - - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - -ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - -o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); -} - -div.DTTT_print_info h6 { - font-weight: normal; - font-size: 28px; - line-height: 28px; - margin: 1em; -} - -div.DTTT_print_info p { - font-size: 14px; - line-height: 20px; -} - - - -/* - * FixedColumns styles - */ -div.DTFC_LeftHeadWrapper table, -div.DTFC_LeftFootWrapper table, -table.DTFC_Cloned tr.even { - background-color: white; -} - -div.DTFC_LeftHeadWrapper table { - margin-bottom: 0 !important; -} - -div.DTFC_LeftBodyWrapper table { - border-top: none; - margin-bottom: 0 !important; -} - -div.DTFC_LeftBodyWrapper tbody tr:first-child th, -div.DTFC_LeftBodyWrapper tbody tr:first-child td { - border-top: none; -} - -div.DTFC_LeftFootWrapper table { - border-top: none; -} - - diff --git a/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.js b/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.js deleted file mode 100644 index a53ec1ae..00000000 --- a/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.js +++ /dev/null @@ -1,180 +0,0 @@ -/*! DataTables Foundation integration - * ©2011-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * DataTables integration for Foundation. This requires Foundation 5 and - * DataTables 1.10 or newer. - * - * This file sets the defaults and adds options to DataTables to style its - * controls using Foundation. See http://datatables.net/manual/styling/foundation - * for further information. - */ -(function(window, document, undefined){ - -var factory = function( $, DataTable ) { -"use strict"; - - -$.extend( DataTable.ext.classes, { - sWrapper: "dataTables_wrapper dt-foundation" -} ); - - -/* Set the defaults for DataTables initialisation */ -$.extend( true, DataTable.defaults, { - dom: - "<'row'<'small-6 columns'l><'small-6 columns'f>r>"+ - "t"+ - "<'row'<'small-6 columns'i><'small-6 columns'p>>", - renderer: 'foundation' -} ); - - -/* Page button renderer */ -DataTable.ext.renderer.pageButton.foundation = function ( settings, host, idx, buttons, page, pages ) { - var api = new DataTable.Api( settings ); - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass; - - var attach = function( container, buttons ) { - var i, ien, node, button; - var clickHandler = function ( e ) { - e.preventDefault(); - if ( e.data.action !== 'ellipsis' ) { - api.page( e.data.action ).draw( false ); - } - }; - - for ( i=0, ien=buttons.length ; i<ien ; i++ ) { - button = buttons[i]; - - if ( $.isArray( button ) ) { - attach( container, button ); - } - else { - btnDisplay = ''; - btnClass = ''; - - switch ( button ) { - case 'ellipsis': - btnDisplay = '…'; - btnClass = 'unavailable'; - break; - - case 'first': - btnDisplay = lang.sFirst; - btnClass = button + (page > 0 ? - '' : ' unavailable'); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' unavailable'); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages-1 ? - '' : ' unavailable'); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages-1 ? - '' : ' unavailable'); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - 'current' : ''; - break; - } - - if ( btnDisplay ) { - node = $('<li>', { - 'class': classes.sPageButton+' '+btnClass, - 'aria-controls': settings.sTableId, - 'tabindex': settings.iTabIndex, - 'id': idx === 0 && typeof button === 'string' ? - settings.sTableId +'_'+ button : - null - } ) - .append( $('<a>', { - 'href': '#' - } ) - .html( btnDisplay ) - ) - .appendTo( container ); - - settings.oApi._fnBindAction( - node, {action: button}, clickHandler - ); - } - } - } - }; - - attach( - $(host).empty().html('<ul class="pagination"/>').children('ul'), - buttons - ); -}; - - -/* - * TableTools Foundation compatibility - * Required TableTools 2.1+ - */ -if ( DataTable.TableTools ) { - // Set the classes that TableTools uses to something suitable for Foundation - $.extend( true, DataTable.TableTools.classes, { - "container": "DTTT button-group", - "buttons": { - "normal": "button small", - "disabled": "disabled" - }, - "collection": { - "container": "DTTT_dropdown dropdown-menu", - "buttons": { - "normal": "", - "disabled": "disabled" - } - }, - "select": { - "row": "active" - } - } ); - - // Have the collection use a bootstrap compatible dropdown - $.extend( true, DataTable.TableTools.DEFAULTS.oTags, { - "collection": { - "container": "ul", - "button": "li", - "liner": "a" - } - } ); -} - -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.min.js b/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.min.js deleted file mode 100644 index fb3cc5c0..00000000 --- a/dashboard/lib/datatables-plugins/integration/foundation/dataTables.foundation.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - DataTables Foundation integration - ©2011-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(){var f=function(d,b){d.extend(b.ext.classes,{sWrapper:"dataTables_wrapper dt-foundation"});d.extend(!0,b.defaults,{dom:"<'row'<'small-6 columns'l><'small-6 columns'f>r>t<'row'<'small-6 columns'i><'small-6 columns'p>>",renderer:"foundation"});b.ext.renderer.pageButton.foundation=function(g,f,p,k,h,l){var q=new b.Api(g),r=g.oClasses,i=g.oLanguage.oPaginate,c,e,o=function(b,f){var j,m,n,a,k=function(a){a.preventDefault();"ellipsis"!==a.data.action&&q.page(a.data.action).draw(!1)};j=0;for(m= -f.length;j<m;j++)if(a=f[j],d.isArray(a))o(b,a);else{e=c="";switch(a){case "ellipsis":c="…";e="unavailable";break;case "first":c=i.sFirst;e=a+(0<h?"":" unavailable");break;case "previous":c=i.sPrevious;e=a+(0<h?"":" unavailable");break;case "next":c=i.sNext;e=a+(h<l-1?"":" unavailable");break;case "last":c=i.sLast;e=a+(h<l-1?"":" unavailable");break;default:c=a+1,e=h===a?"current":""}c&&(n=d("<li>",{"class":r.sPageButton+" "+e,"aria-controls":g.sTableId,tabindex:g.iTabIndex,id:0===p&&"string"=== -typeof a?g.sTableId+"_"+a:null}).append(d("<a>",{href:"#"}).html(c)).appendTo(b),g.oApi._fnBindAction(n,{action:a},k))}};o(d(f).empty().html('<ul class="pagination"/>').children("ul"),k)};b.TableTools&&(d.extend(!0,b.TableTools.classes,{container:"DTTT button-group",buttons:{normal:"button small",disabled:"disabled"},collection:{container:"DTTT_dropdown dropdown-menu",buttons:{normal:"",disabled:"disabled"}},select:{row:"active"}}),d.extend(!0,b.TableTools.DEFAULTS.oTags,{collection:{container:"ul", -button:"li",liner:"a"}}))};"function"===typeof define&&define.amd?define(["jquery","datatables"],f):"object"===typeof exports?f(require("jquery"),require("datatables")):jQuery&&f(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/dashboard/lib/datatables-plugins/integration/foundation/images/sort_asc.png b/dashboard/lib/datatables-plugins/integration/foundation/images/sort_asc.png deleted file mode 100644 index e1ba61a8055fcb18273f2468d335572204667b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*bWaz@5R22v2@;zYta_*?F5u6Q zWR@in#&u+WgT?Hi<}D3B3<dtPKf3L(#%G;lkAsbPmH>}GOXuX|8Oj3tosHiJ3*4TN zC7>_x-r1O=t(?KoTC+`+>7&2GzdqLHBg&F)2Q?&EGZ+}|Rpsc~9`m>jw35No)z4*} HQ$iB}HK{Sd diff --git a/dashboard/lib/datatables-plugins/integration/foundation/images/sort_asc_disabled.png b/dashboard/lib/datatables-plugins/integration/foundation/images/sort_asc_disabled.png deleted file mode 100644 index fb11dfe24a6c564cb7ddf8bc96703ebb121df1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX(Vi}jAsXkC6BcOhI9!^3NY?Do zDX;f`c1`y6n0RgO@$!H7ch<T~&R05SUEJ8^Q1D3B?anEg_j{VPewQ3)o33=v`u75$ u@NwC)H>ZT&|Jn0dmaqO^XNm-CGtk!Ur<_=Jws3;%W$<+Mb6Mw<&;$T1GdZXL diff --git a/dashboard/lib/datatables-plugins/integration/foundation/images/sort_both.png b/dashboard/lib/datatables-plugins/integration/foundation/images/sort_both.png deleted file mode 100644 index af5bc7c5a10b9d6d57cb641aeec752428a07f0ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX6FglULp08By<o`a;2_ZY@ahDQ zIZn@cq>cxyy87-Q;~nRxO8@-UU*I^KVWyN+&SiMHu5xDOu|HNvwzODfTdXjhVyNu1 z#7^XbGKZ7<gEZFeRPCMIsy$+yhaA3~(<<ARU4F{HcWVEZS94u?w%>LW3XeONb<yeJ z>$RKLeE*WhqbYpIXPIqK@r4)v+qN8um%99%MPpS9d#7Ed7SL@Bp00i_>zopr0H-Zb Aj{pDw diff --git a/dashboard/lib/datatables-plugins/integration/foundation/images/sort_desc.png b/dashboard/lib/datatables-plugins/integration/foundation/images/sort_desc.png deleted file mode 100644 index 0e156deb5f61d18f9e2ec5da4f6a8c94a5b4fb41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*R8JSj5R22v2@<S}6GRp?u4>yo z(czD9$NuDl3Ljm9c#_#4$vXUz=f1~&WY3aa=h!;z7fOEN>ySP9QA=6C-^Dmb&tuM= z4Z&=WZU;2WF>e%GI&mWJk^K!jrbro{W;-I>FeCfLGJl3}+Z^2)3Kw?+EoAU?^>bP0 Hl+XkKC^<KP diff --git a/dashboard/lib/datatables-plugins/integration/foundation/images/sort_desc_disabled.png b/dashboard/lib/datatables-plugins/integration/foundation/images/sort_desc_disabled.png deleted file mode 100644 index c9fdd8a1502fda301682e907afde86bc450da10f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRXk)AG&AsXkC6C_xhx$boC`TY4@ zxy7GKb-~?6->j|Q{b@g3TV7E(Grjn^aLC2o)_ptHrtUEoT$S@q)~)7U@V;W{6)!%@ u>N?4t-1qslpJw9!O?PJ&w0Cby<YFk^=EPF?qfY~934^DrpUXO@geCx6y*UB^ diff --git a/dashboard/lib/datatables-plugins/integration/foundation/index.html b/dashboard/lib/datatables-plugins/integration/foundation/index.html deleted file mode 100644 index 2a413fe9..00000000 --- a/dashboard/lib/datatables-plugins/integration/foundation/index.html +++ /dev/null @@ -1,445 +0,0 @@ -<!DOCTYPE HTML> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - - <title>DataTables Foundation example</title> - - <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/foundation/5.4.7/css/foundation.min.css"> - <link rel="stylesheet" type="text/css" href="dataTables.foundation.css"> - - <script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script> - <!--<script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10-dev/js/jquery.dataTables.js"></script>--> - <script type="text/javascript" language="javascript" src="/dataTables/DataTablesSrc/built/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="dataTables.foundation.js"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() { - $('#example').dataTable(); - } ); - </script> - </head> - <body> - <div class="row"> - <div class="large-12 columns"> - -<table cellpadding="0" cellspacing="0" border="0" class="tdisplay" id="example"> - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="odd gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0</td> - <td>Win 95+</td> - <td class="center"> 4</td> - <td class="center">X</td> - </tr> - <tr class="even gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0</td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="odd gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5</td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="even gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6</td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="odd gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="even gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> -</table> - - </div> - </div> - </body> -</html> diff --git a/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.css b/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.css deleted file mode 100644 index d382fc8b..00000000 --- a/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.css +++ /dev/null @@ -1,500 +0,0 @@ -/* - * Table styles - */ -table.dataTable { - width: 100%; - margin: 0 auto; - clear: both; - border-collapse: separate; - border-spacing: 0; - /* - * Header and footer styles - */ - /* - * Body styles - */ -} -table.dataTable thead th, -table.dataTable thead td, -table.dataTable tfoot th, -table.dataTable tfoot td { - padding: 4px 10px; -} -table.dataTable thead th, -table.dataTable tfoot th { - font-weight: bold; -} -table.dataTable thead th:active, -table.dataTable thead td:active { - outline: none; -} -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting { - cursor: pointer; - *cursor: hand; -} -table.dataTable thead th div.DataTables_sort_wrapper { - position: relative; - padding-right: 10px; -} -table.dataTable thead th div.DataTables_sort_wrapper span { - position: absolute; - top: 50%; - margin-top: -8px; - right: -5px; -} -table.dataTable thead th.ui-state-default { - border-right-width: 0; -} -table.dataTable thead th.ui-state-default:last-child { - border-right-width: 1px; -} -table.dataTable tbody tr { - background-color: #ffffff; -} -table.dataTable tbody tr.selected { - background-color: #B0BED9; -} -table.dataTable tbody th, -table.dataTable tbody td { - padding: 8px 10px; -} -table.dataTable th.center, -table.dataTable td.center, -table.dataTable td.dataTables_empty { - text-align: center; -} -table.dataTable th.right, -table.dataTable td.right { - text-align: right; -} -table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { - border-top: 1px solid #ddd; -} -table.dataTable.row-border tbody tr:first-child th, -table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, -table.dataTable.display tbody tr:first-child td { - border-top: none; -} -table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { - border-top: 1px solid #ddd; - border-right: 1px solid #ddd; -} -table.dataTable.cell-border tbody tr th:first-child, -table.dataTable.cell-border tbody tr td:first-child { - border-left: 1px solid #ddd; -} -table.dataTable.cell-border tbody tr:first-child th, -table.dataTable.cell-border tbody tr:first-child td { - border-top: none; -} -table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { - background-color: #f9f9f9; -} -table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { - background-color: #abb9d3; -} -table.dataTable.hover tbody tr:hover, -table.dataTable.hover tbody tr.odd:hover, -table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover, -table.dataTable.display tbody tr.odd:hover, -table.dataTable.display tbody tr.even:hover { - background-color: whitesmoke; -} -table.dataTable.hover tbody tr:hover.selected, -table.dataTable.hover tbody tr.odd:hover.selected, -table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected, -table.dataTable.display tbody tr.odd:hover.selected, -table.dataTable.display tbody tr.even:hover.selected { - background-color: #a9b7d1; -} -table.dataTable.order-column tbody tr > .sorting_1, -table.dataTable.order-column tbody tr > .sorting_2, -table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, -table.dataTable.display tbody tr > .sorting_2, -table.dataTable.display tbody tr > .sorting_3 { - background-color: #f9f9f9; -} -table.dataTable.order-column tbody tr.selected > .sorting_1, -table.dataTable.order-column tbody tr.selected > .sorting_2, -table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, -table.dataTable.display tbody tr.selected > .sorting_2, -table.dataTable.display tbody tr.selected > .sorting_3 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { - background-color: #f1f1f1; -} -table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { - background-color: #f3f3f3; -} -table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { - background-color: whitesmoke; -} -table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { - background-color: #a6b3cd; -} -table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { - background-color: #a7b5ce; -} -table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { - background-color: #a9b6d0; -} -table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { - background-color: #f9f9f9; -} -table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { - background-color: #fbfbfb; -} -table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { - background-color: #fdfdfd; -} -table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { - background-color: #adbbd6; -} -table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { - background-color: #afbdd8; -} -table.dataTable.display tbody tr:hover > .sorting_1, -table.dataTable.display tbody tr.odd:hover > .sorting_1, -table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 { - background-color: #eaeaea; -} -table.dataTable.display tbody tr:hover > .sorting_2, -table.dataTable.display tbody tr.odd:hover > .sorting_2, -table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 { - background-color: #ebebeb; -} -table.dataTable.display tbody tr:hover > .sorting_3, -table.dataTable.display tbody tr.odd:hover > .sorting_3, -table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 { - background-color: #eeeeee; -} -table.dataTable.display tbody tr:hover.selected > .sorting_1, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_1, -table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 { - background-color: #a1aec7; -} -table.dataTable.display tbody tr:hover.selected > .sorting_2, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_2, -table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 { - background-color: #a2afc8; -} -table.dataTable.display tbody tr:hover.selected > .sorting_3, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_3, -table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 { - background-color: #a4b2cb; -} -table.dataTable.nowrap th, table.dataTable.nowrap td { - white-space: nowrap; -} -table.dataTable.compact thead th, -table.dataTable.compact thead td { - padding: 5px 9px; -} -table.dataTable.compact tfoot th, -table.dataTable.compact tfoot td { - padding: 5px 9px 3px 9px; -} -table.dataTable.compact tbody th, -table.dataTable.compact tbody td { - padding: 4px 5px; -} -table.dataTable th.dt-left, -table.dataTable td.dt-left { - text-align: left; -} -table.dataTable th.dt-center, -table.dataTable td.dt-center, -table.dataTable td.dataTables_empty { - text-align: center; -} -table.dataTable th.dt-right, -table.dataTable td.dt-right { - text-align: right; -} -table.dataTable th.dt-justify, -table.dataTable td.dt-justify { - text-align: justify; -} -table.dataTable th.dt-nowrap, -table.dataTable td.dt-nowrap { - white-space: nowrap; -} -table.dataTable thead th.dt-head-left, -table.dataTable thead td.dt-head-left, -table.dataTable tfoot th.dt-head-left, -table.dataTable tfoot td.dt-head-left { - text-align: left; -} -table.dataTable thead th.dt-head-center, -table.dataTable thead td.dt-head-center, -table.dataTable tfoot th.dt-head-center, -table.dataTable tfoot td.dt-head-center { - text-align: center; -} -table.dataTable thead th.dt-head-right, -table.dataTable thead td.dt-head-right, -table.dataTable tfoot th.dt-head-right, -table.dataTable tfoot td.dt-head-right { - text-align: right; -} -table.dataTable thead th.dt-head-justify, -table.dataTable thead td.dt-head-justify, -table.dataTable tfoot th.dt-head-justify, -table.dataTable tfoot td.dt-head-justify { - text-align: justify; -} -table.dataTable thead th.dt-head-nowrap, -table.dataTable thead td.dt-head-nowrap, -table.dataTable tfoot th.dt-head-nowrap, -table.dataTable tfoot td.dt-head-nowrap { - white-space: nowrap; -} -table.dataTable tbody th.dt-body-left, -table.dataTable tbody td.dt-body-left { - text-align: left; -} -table.dataTable tbody th.dt-body-center, -table.dataTable tbody td.dt-body-center { - text-align: center; -} -table.dataTable tbody th.dt-body-right, -table.dataTable tbody td.dt-body-right { - text-align: right; -} -table.dataTable tbody th.dt-body-justify, -table.dataTable tbody td.dt-body-justify { - text-align: justify; -} -table.dataTable tbody th.dt-body-nowrap, -table.dataTable tbody td.dt-body-nowrap { - white-space: nowrap; -} - -table.dataTable, -table.dataTable th, -table.dataTable td { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* - * Control feature layout - */ -.dataTables_wrapper { - position: relative; - clear: both; - *zoom: 1; - zoom: 1; -} -.dataTables_wrapper .dataTables_length { - float: left; -} -.dataTables_wrapper .dataTables_filter { - float: right; - text-align: right; -} -.dataTables_wrapper .dataTables_filter input { - margin-left: 0.5em; -} -.dataTables_wrapper .dataTables_info { - clear: both; - float: left; - padding-top: 0.55em; -} -.dataTables_wrapper .dataTables_paginate { - float: right; - text-align: right; -} -.dataTables_wrapper .dataTables_paginate .fg-button { - box-sizing: border-box; - display: inline-block; - min-width: 1.5em; - padding: 0.5em; - margin-left: 2px; - text-align: center; - text-decoration: none !important; - cursor: pointer; - *cursor: hand; - color: #333 !important; - border: 1px solid transparent; -} -.dataTables_wrapper .dataTables_paginate .fg-button:active { - outline: none; -} -.dataTables_wrapper .dataTables_paginate .fg-button:first-child { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.dataTables_wrapper .dataTables_paginate .fg-button:last-child { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.dataTables_wrapper .dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 40px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - text-align: center; - font-size: 1.2em; - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* IE10+ */ - background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Opera 11.10+ */ - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_length, -.dataTables_wrapper .dataTables_filter, -.dataTables_wrapper .dataTables_info, -.dataTables_wrapper .dataTables_processing, -.dataTables_wrapper .dataTables_paginate { - color: #333; -} -.dataTables_wrapper .dataTables_scroll { - clear: both; -} -.dataTables_wrapper .dataTables_scrollBody { - *margin-top: -1px; - -webkit-overflow-scrolling: touch; -} -.dataTables_wrapper .ui-widget-header { - font-weight: normal; -} -.dataTables_wrapper .ui-toolbar { - padding: 8px; -} -.dataTables_wrapper:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; -} - -@media screen and (max-width: 767px) { - .dataTables_wrapper .dataTables_length, - .dataTables_wrapper .dataTables_filter, - .dataTables_wrapper .dataTables_info, - .dataTables_wrapper .dataTables_paginate { - float: none; - text-align: center; - } - .dataTables_wrapper .dataTables_filter, - .dataTables_wrapper .dataTables_paginate { - margin-top: 0.5em; - } -} -/* - * TableTools styling for jQuery UI - */ -div.DTTT_container { - position: relative; - float: left; -} - -.DTTT_button { - position: relative; - float: left; - margin-right: 3px; - padding: 3px 10px; - border: 1px solid #d0d0d0; - background-color: #fff; - color: #333; - cursor: pointer; -} - -.DTTT_button::-moz-focus-inner { - border: none !important; - padding: 0; -} - -.DTTT_disabled { - color: #999; -} - -table.DTTT_selectable tbody tr { - cursor: pointer; -} - -div.DTTT_collection { - width: 150px; - background-color: #f3f3f3; - overflow: hidden; - z-index: 2002; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); -} -div.DTTT_collection button.DTTT_button, -div.DTTT_collection div.DTTT_button, -div.DTTT_collection a.DTTT_button { - float: none; - width: 100%; - margin-bottom: -0.1em; -} - -div.DTTT_collection_background { - background: black; - z-index: 2001; -} - -.DTTT_print_info { - position: absolute; - top: 50%; - left: 50%; - width: 400px; - height: 150px; - margin-left: -200px; - margin-top: -75px; - text-align: center; - background-color: #3f3f3f; - color: white; - padding: 10px 30px; - opacity: 0.9; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); -} -.DTTT_print_info .DTTT_print_info h6 { - font-weight: normal; - font-size: 28px; - line-height: 28px; - margin: 1em; -} -.DTTT_print_info .DTTT_print_info p { - font-size: 14px; - line-height: 20px; -} diff --git a/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.js b/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.js deleted file mode 100644 index 81fdd7ce..00000000 --- a/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.js +++ /dev/null @@ -1,156 +0,0 @@ -/*! DataTables jQuery UI integration - * ©2011-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * DataTables integration for jQuery UI. This requires jQuery UI and - * DataTables 1.10 or newer. - * - * This file sets the defaults and adds options to DataTables to style its - * controls using jQuery UI. See http://datatables.net/manual/styling/jqueryui - * for further information. - */ -(function(window, document, undefined){ - -var factory = function( $, DataTable ) { -"use strict"; - - -var sort_prefix = 'css_right ui-icon ui-icon-'; -var toolbar_prefix = 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-'; - -/* Set the defaults for DataTables initialisation */ -$.extend( true, DataTable.defaults, { - dom: - '<"'+toolbar_prefix+'tl ui-corner-tr"lfr>'+ - 't'+ - '<"'+toolbar_prefix+'bl ui-corner-br"ip>', - renderer: 'jqueryui' -} ); - - -$.extend( DataTable.ext.classes, { - "sWrapper": "dataTables_wrapper dt-jqueryui", - - /* Full numbers paging buttons */ - "sPageButton": "fg-button ui-button ui-state-default", - "sPageButtonActive": "ui-state-disabled", - "sPageButtonDisabled": "ui-state-disabled", - - /* Features */ - "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ - "ui-buttonset-multi paging_", /* Note that the type is postfixed */ - - /* Sorting */ - "sSortAsc": "ui-state-default sorting_asc", - "sSortDesc": "ui-state-default sorting_desc", - "sSortable": "ui-state-default sorting", - "sSortableAsc": "ui-state-default sorting_asc_disabled", - "sSortableDesc": "ui-state-default sorting_desc_disabled", - "sSortableNone": "ui-state-default sorting_disabled", - "sSortIcon": "DataTables_sort_icon", - - /* Scrolling */ - "sScrollHead": "dataTables_scrollHead "+"ui-state-default", - "sScrollFoot": "dataTables_scrollFoot "+"ui-state-default", - - /* Misc */ - "sHeaderTH": "ui-state-default", - "sFooterTH": "ui-state-default" -} ); - - -DataTable.ext.renderer.header.jqueryui = function ( settings, cell, column, classes ) { - // Calculate what the unsorted class should be - var noSortAppliedClass = sort_prefix+'carat-2-n-s'; - var asc = $.inArray('asc', column.asSorting) !== -1; - var desc = $.inArray('desc', column.asSorting) !== -1; - - if ( !column.bSortable || (!asc && !desc) ) { - noSortAppliedClass = ''; - } - else if ( asc && !desc ) { - noSortAppliedClass = sort_prefix+'carat-1-n'; - } - else if ( !asc && desc ) { - noSortAppliedClass = sort_prefix+'carat-1-s'; - } - - // Setup the DOM structure - $('<div/>') - .addClass( 'DataTables_sort_wrapper' ) - .append( cell.contents() ) - .append( $('<span/>') - .addClass( classes.sSortIcon+' '+noSortAppliedClass ) - ) - .appendTo( cell ); - - // Attach a sort listener to update on sort - $(settings.nTable).on( 'order.dt', function ( e, ctx, sorting, columns ) { - if ( settings !== ctx ) { - return; - } - - var colIdx = column.idx; - - cell - .removeClass( classes.sSortAsc +" "+classes.sSortDesc ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortAsc : columns[ colIdx ] == 'desc' ? - classes.sSortDesc : - column.sSortingClass - ); - - cell - .find( 'span.'+classes.sSortIcon ) - .removeClass( - sort_prefix+'triangle-1-n' +" "+ - sort_prefix+'triangle-1-s' +" "+ - sort_prefix+'carat-2-n-s' +" "+ - sort_prefix+'carat-1-n' +" "+ - sort_prefix+'carat-1-s' - ) - .addClass( columns[ colIdx ] == 'asc' ? - sort_prefix+'triangle-1-n' : columns[ colIdx ] == 'desc' ? - sort_prefix+'triangle-1-s' : - noSortAppliedClass - ); - } ); -}; - - -/* - * TableTools jQuery UI compatibility - * Required TableTools 2.1+ - */ -if ( DataTable.TableTools ) { - $.extend( true, DataTable.TableTools.classes, { - "container": "DTTT_container ui-buttonset ui-buttonset-multi", - "buttons": { - "normal": "DTTT_button ui-button ui-state-default" - }, - "collection": { - "container": "DTTT_collection ui-buttonset ui-buttonset-multi" - } - } ); -} - -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); - diff --git a/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.min.js b/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.min.js deleted file mode 100644 index 45a4fcd3..00000000 --- a/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! - DataTables jQuery UI integration - ©2011-2014 SpryMedia Ltd - datatables.net/license -*/ -(function(){var b=function(a,c){a.extend(!0,c.defaults,{dom:'<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-tl ui-corner-tr"lfr>t<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-bl ui-corner-br"ip>',renderer:"jqueryui"});a.extend(c.ext.classes,{sWrapper:"dataTables_wrapper dt-jqueryui",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_", -sSortAsc:"ui-state-default sorting_asc",sSortDesc:"ui-state-default sorting_desc",sSortable:"ui-state-default sorting",sSortableAsc:"ui-state-default sorting_asc_disabled",sSortableDesc:"ui-state-default sorting_desc_disabled",sSortableNone:"ui-state-default sorting_disabled",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sHeaderTH:"ui-state-default",sFooterTH:"ui-state-default"});c.ext.renderer.header.jqueryui= -function(c,g,e,d){var f="css_right ui-icon ui-icon-carat-2-n-s",b=-1!==a.inArray("asc",e.asSorting),h=-1!==a.inArray("desc",e.asSorting);!e.bSortable||!b&&!h?f="":b&&!h?f="css_right ui-icon ui-icon-carat-1-n":!b&&h&&(f="css_right ui-icon ui-icon-carat-1-s");a("<div/>").addClass("DataTables_sort_wrapper").append(g.contents()).append(a("<span/>").addClass(d.sSortIcon+" "+f)).appendTo(g);a(c.nTable).on("order.dt",function(a,b,h,i){c===b&&(a=e.idx,g.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"== -i[a]?d.sSortAsc:"desc"==i[a]?d.sSortDesc:e.sSortingClass),g.find("span."+d.sSortIcon).removeClass("css_right ui-icon ui-icon-triangle-1-n css_right ui-icon ui-icon-triangle-1-s css_right ui-icon ui-icon-carat-2-n-s css_right ui-icon ui-icon-carat-1-n css_right ui-icon ui-icon-carat-1-s").addClass("asc"==i[a]?"css_right ui-icon ui-icon-triangle-1-n":"desc"==i[a]?"css_right ui-icon ui-icon-triangle-1-s":f))})};c.TableTools&&a.extend(!0,c.TableTools.classes,{container:"DTTT_container ui-buttonset ui-buttonset-multi", -buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}})};"function"===typeof define&&define.amd?define(["jquery","datatables"],b):"object"===typeof exports?b(require("jquery"),require("datatables")):jQuery&&b(jQuery,jQuery.fn.dataTable)})(window,document); diff --git a/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.scss b/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.scss deleted file mode 100644 index 86f7a7da..00000000 --- a/dashboard/lib/datatables-plugins/integration/jqueryui/dataTables.jqueryui.scss +++ /dev/null @@ -1,629 +0,0 @@ - - - // - // Colour customisation - // - -// Border between the header (and footer) and the table body -$table-header-border: 1px solid #111; - -// Border of rows / cells -$table-body-border: 1px solid #ddd; - -// Row background colour (hover, striping etc are all based on this colour and -// calculated automatically) -$table-row-background: #ffffff; - -// Row colour, when selected (tr.selected) -$table-row-selected: #B0BED9; - -// Text colour of the interaction control elements (info, filter, paging etc) -$table-control-color: #333; - -// Highlight colour of the paging button for the current page -$table-paging-button-active: #dcdcdc; - -// Hover colour of paging buttons on mouse over -$table-paging-button-hover: #111; - - - -// -// Functions / mixins -// -@function tint( $color, $percent ) { - @return mix(white, $color, $percent); -} - -@function shade( $color, $percent ) { - @return mix(black, $color, $percent); -} - -@mixin gradient( $from, $to ) { - background-color: $from; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$from), color-stop(100%,$to)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, $from 0%, $to 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, $from 0%, $to 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, $from 0%, $to 100%); /* IE10+ */ - background: -o-linear-gradient(top, $from 0%, $to 100%); /* Opera 11.10+ */ - background: linear-gradient(to bottom, $from 0%, $to 100%); /* W3C */ -} - - -/* - * Table styles - */ -table.dataTable { - width: 100%; - margin: 0 auto; - clear: both; - border-collapse: separate; - border-spacing: 0; - - /* - * Header and footer styles - */ - thead, - tfoot { - th, - td { - padding: 4px 10px; - } - - th { - font-weight: bold; - } - } - - thead th, - thead td { - &:active { - outline: none; - } - } - - // Sorting - thead { - .sorting_asc, - .sorting_desc, - .sorting { - cursor: pointer; - *cursor: hand; - } - - th div.DataTables_sort_wrapper { - position: relative; - padding-right: 10px; - - span { - position: absolute; - top: 50%; - margin-top: -8px; - right: -5px; - } - } - - th.ui-state-default { - border-right-width: 0; - - &:last-child { - border-right-width: 1px; - } - } - } - - - /* - * Body styles - */ - tbody { - tr { - background-color: $table-row-background; - - &.selected { - background-color: $table-row-selected; - } - } - - th, - td { - padding: 8px 10px; - } - } - - th.center, - td.center, - td.dataTables_empty { - text-align: center; - } - - th.right, - td.right { - text-align: right; - } - - - // Stripe classes - add "row-border" class to the table to activate - &.row-border tbody, - &.display tbody { - th, td { - border-top: $table-body-border; - } - - tr:first-child th, - tr:first-child td { - border-top: none; - } - } - - - // Stripe classes - add "cell-border" class to the table to activate - &.cell-border tbody { - th, td { - border-top: $table-body-border; - border-right: $table-body-border; - } - - tr th:first-child, - tr td:first-child { - border-left: $table-body-border; - } - - tr:first-child th, - tr:first-child td { - border-top: none; - } - } - - - // Stripe classes - add "stripe" class to the table to activate - &.stripe tbody, - &.display tbody { - tr.odd { - background-color: shade($table-row-background, 2.35%); // shade by f9 - - &.selected { - background-color: shade($table-row-selected, 2.35%); - } - } - } - - - // Hover classes - add "hover" class to the table to activate - &.hover tbody, - &.display tbody { - tr:hover, - tr.odd:hover, - tr.even:hover { - background-color: shade($table-row-background, 3.6%); // shade by f5 - - &.selected { - background-color: shade($table-row-selected, 3.6%); - } - } - } - - - // Sort column highlighting - add "hover" class to the table to activate - &.order-column, - &.display { - tbody { - tr>.sorting_1, - tr>.sorting_2, - tr>.sorting_3 { - background-color: shade($table-row-background, 2%); // shade by fa - } - - tr.selected>.sorting_1, - tr.selected>.sorting_2, - tr.selected>.sorting_3 { - background-color: shade($table-row-selected, 2%); - } - } - } - - &.display tbody, - &.order-column.stripe tbody { - tr.odd { - >.sorting_1 { background-color: shade($table-row-background, 5.4%); } // shade by f1 - >.sorting_2 { background-color: shade($table-row-background, 4.7%); } // shade by f3 - >.sorting_3 { background-color: shade($table-row-background, 3.9%); } // shade by f5 - - &.selected { - >.sorting_1 { background-color: shade($table-row-selected, 5.4%); } - >.sorting_2 { background-color: shade($table-row-selected, 4.7%); } - >.sorting_3 { background-color: shade($table-row-selected, 3.9%); } - } - } - - tr.even { - >.sorting_1 { background-color: shade($table-row-background, 2%); } // shade by fa - >.sorting_2 { background-color: shade($table-row-background, 1.2%); } // shade by fc - >.sorting_3 { background-color: shade($table-row-background, 0.4%); } // shade by fe - - &.selected { - >.sorting_1 { background-color: shade($table-row-selected, 2%); } - >.sorting_2 { background-color: shade($table-row-selected, 1.2%); } - >.sorting_3 { background-color: shade($table-row-selected, 0.4%); } - } - } - } - - &.display tbody, - &.order-column.hover tbody { - tr:hover, - tr.odd:hover, - tr.even:hover { - >.sorting_1 { background-color: shade($table-row-background, 8.2%); } // shade by ea - >.sorting_2 { background-color: shade($table-row-background, 7.5%); } // shade by ec - >.sorting_3 { background-color: shade($table-row-background, 6.3%); } // shade by ef - - &.selected { - >.sorting_1 { background-color: shade($table-row-selected, 8.2%); } - >.sorting_2 { background-color: shade($table-row-selected, 7.5%); } - >.sorting_3 { background-color: shade($table-row-selected, 6.3%); } - } - } - } - - &.nowrap { - th, td { - white-space: nowrap; - } - } - - &.compact { - thead th, - thead td { - padding: 5px 9px; - } - - tfoot th, - tfoot td { - padding: 5px 9px 3px 9px; - } - - tbody th, - tbody td { - padding: 4px 5px; - } - } - - - // Typography - th.dt-left, - td.dt-left { - text-align: left; - } - - th.dt-center, - td.dt-center, - td.dataTables_empty { - text-align: center; - } - - th.dt-right, - td.dt-right { - text-align: right; - } - - th.dt-justify, - td.dt-justify { - text-align: justify; - } - - th.dt-nowrap, - td.dt-nowrap { - white-space: nowrap; - } - - thead, - tfoot { - th.dt-head-left, - td.dt-head-left { - text-align: left; - } - - th.dt-head-center, - td.dt-head-center{ - text-align: center; - } - - th.dt-head-right, - td.dt-head-right { - text-align: right; - } - - th.dt-head-justify, - td.dt-head-justify { - text-align: justify; - } - - th.dt-head-nowrap, - td.dt-head-nowrap { - white-space: nowrap; - } - } - - tbody { - th.dt-body-left, - td.dt-body-left { - text-align: left; - } - - th.dt-body-center, - td.dt-body-center { - text-align: center; - } - - th.dt-body-right, - td.dt-body-right { - text-align: right; - } - - th.dt-body-justify, - td.dt-body-justify { - text-align: justify; - } - - th.dt-body-nowrap, - td.dt-body-nowrap { - white-space: nowrap; - } - } -} - -// Its not uncommon to use * {border-box} now, but it messes up the column width -// calculations, so use content-box for the table and cells -table.dataTable, -table.dataTable th, -table.dataTable td { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - - - -/* - * Control feature layout - */ -.dataTables_wrapper { - position: relative; - clear: both; - *zoom: 1; - - // Page length options - .dataTables_length { - float: left; - } - - // Filtering input - .dataTables_filter { - float: right; - text-align: right; - - input { - margin-left: 0.5em; - } - } - - // Table info - .dataTables_info { - clear: both; - float: left; - padding-top: 0.55em; - } - - // Paging - .dataTables_paginate { - float: right; - text-align: right; - - .fg-button { - box-sizing: border-box; - display: inline-block; - min-width: 1.5em; - padding: 0.5em; - margin-left: 2px; - text-align: center; - text-decoration: none !important; - cursor: pointer; - *cursor: hand; - - color: $table-control-color !important; - border: 1px solid transparent; - - &:active { - outline: none; - } - } - - .fg-button:first-child { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - } - - .fg-button:last-child { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - } - } - - // Processing - .dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 40px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - - text-align: center; - font-size: 1.2em; - - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba($table-row-background, 0)), color-stop(25%,rgba($table-row-background, 0.9)), color-stop(75%,rgba($table-row-background, 0.9)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(left, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(left, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* FF3.6+ */ - background: -ms-linear-gradient(left, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* IE10+ */ - background: -o-linear-gradient(left, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* Opera 11.10+ */ - background: linear-gradient(to right, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* W3C */ - } - - .dataTables_length, - .dataTables_filter, - .dataTables_info, - .dataTables_processing, - .dataTables_paginate { - color: $table-control-color; - } - - // Scrolling - .dataTables_scroll { - clear: both; - } - - .dataTables_scrollBody { - *margin-top: -1px; - -webkit-overflow-scrolling: touch; - } - - - .ui-widget-header { - font-weight: normal; - } - - .ui-toolbar { - padding: 8px; - } - - // Self clear the wrapper - &:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; - } - zoom: 1; // Poor old IE -} - - -// Collapse the two column display of the control elements when the screen is -// small -@media screen and (max-width: 767px) { - .dataTables_wrapper { - .dataTables_length, - .dataTables_filter, - .dataTables_info, - .dataTables_paginate { - float: none; - text-align: center; - } - - .dataTables_filter, - .dataTables_paginate { - margin-top: 0.5em; - } - } -} - - - -/* - * TableTools styling for jQuery UI - */ -div.DTTT_container { - position: relative; - float: left; -} - -.DTTT_button { - position: relative; - float: left; - margin-right: 3px; - padding: 3px 10px; - border: 1px solid #d0d0d0; - background-color: #fff; - color: #333; - cursor: pointer; -} - -.DTTT_button::-moz-focus-inner { - border: none !important; - padding: 0; -} - -.DTTT_disabled { - color: #999; -} - -table.DTTT_selectable tbody tr { - cursor: pointer; -} - -div.DTTT_collection { - width: 150px; - background-color: #f3f3f3; - overflow: hidden; - z-index: 2002; - - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - - button.DTTT_button, - div.DTTT_button, - a.DTTT_button { - float: none; - width: 100%; - margin-bottom: -0.1em; - } -} - -div.DTTT_collection_background { - background: black; - z-index: 2001; -} - -.DTTT_print_info { - position: absolute; - top: 50%; - left: 50%; - width: 400px; - height: 150px; - margin-left: -200px; - margin-top: -75px; - text-align: center; - background-color: #3f3f3f; - color: white; - padding: 10px 30px; - - opacity: 0.9; - - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); - - .DTTT_print_info { - h6 { - font-weight: normal; - font-size: 28px; - line-height: 28px; - margin: 1em; - } - - p { - font-size: 14px; - line-height: 20px; - } - } -} - diff --git a/dashboard/lib/datatables-plugins/integration/jqueryui/index.html b/dashboard/lib/datatables-plugins/integration/jqueryui/index.html deleted file mode 100644 index 303dbc15..00000000 --- a/dashboard/lib/datatables-plugins/integration/jqueryui/index.html +++ /dev/null @@ -1,443 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -<html> - <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - - <title>DataTables jQuery UI example</title> - - <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"> - <link rel="stylesheet" type="text/css" href="dataTables.jqueryui.css"> - - <script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script> - <!--<script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10-dev/js/jquery.dataTables.js"></script>--> - <script type="text/javascript" language="javascript" src="/dataTables/DataTablesSrc/built/js/jquery.dataTables.js"></script> - <script type="text/javascript" language="javascript" src="dataTables.jqueryui.js"></script> - <script type="text/javascript" charset="utf-8"> - $(document).ready(function() { - $('#example').dataTable(); - } ); - </script> - </head> - <body> - <div class="container"> - -<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"> - <thead> - <tr> - <th>Rendering engine</th> - <th>Browser</th> - <th>Platform(s)</th> - <th>Engine version</th> - <th>CSS grade</th> - </tr> - </thead> - <tbody> - <tr class="odd gradeX"> - <td>Trident</td> - <td>Internet - Explorer 4.0</td> - <td>Win 95+</td> - <td class="center"> 4</td> - <td class="center">X</td> - </tr> - <tr class="even gradeC"> - <td>Trident</td> - <td>Internet - Explorer 5.0</td> - <td>Win 95+</td> - <td class="center">5</td> - <td class="center">C</td> - </tr> - <tr class="odd gradeA"> - <td>Trident</td> - <td>Internet - Explorer 5.5</td> - <td>Win 95+</td> - <td class="center">5.5</td> - <td class="center">A</td> - </tr> - <tr class="even gradeA"> - <td>Trident</td> - <td>Internet - Explorer 6</td> - <td>Win 98+</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="odd gradeA"> - <td>Trident</td> - <td>Internet Explorer 7</td> - <td>Win XP SP2+</td> - <td class="center">7</td> - <td class="center">A</td> - </tr> - <tr class="even gradeA"> - <td>Trident</td> - <td>AOL browser (AOL desktop)</td> - <td>Win XP</td> - <td class="center">6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 1.5</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 2.0</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Firefox 3.0</td> - <td>Win 2k+ / OSX.3+</td> - <td class="center">1.9</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.0</td> - <td>OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Camino 1.5</td> - <td>OSX.3+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape 7.2</td> - <td>Win 95+ / Mac OS 8.6-9.2</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Browser 8</td> - <td>Win 98SE+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Netscape Navigator 9</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.1</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.2</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.2</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.3</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.4</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.4</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.5</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.6</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">1.6</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.7</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.7</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Mozilla 1.8</td> - <td>Win 98+ / OSX.1+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Seamonkey 1.1</td> - <td>Win 98+ / OSX.2+</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Gecko</td> - <td>Epiphany 2.20</td> - <td>Gnome</td> - <td class="center">1.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.2</td> - <td>OSX.3</td> - <td class="center">125.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 1.3</td> - <td>OSX.3</td> - <td class="center">312.8</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 2.0</td> - <td>OSX.4+</td> - <td class="center">419.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>Safari 3.0</td> - <td>OSX.4+</td> - <td class="center">522.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>OmniWeb 5.5</td> - <td>OSX.4+</td> - <td class="center">420</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>iPod Touch / iPhone</td> - <td>iPod</td> - <td class="center">420.1</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Webkit</td> - <td>S60</td> - <td>S60</td> - <td class="center">413</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.0</td> - <td>Win 95+ / OSX.1+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 7.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.0</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 8.5</td> - <td>Win 95+ / OSX.2+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.0</td> - <td>Win 95+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.2</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera 9.5</td> - <td>Win 88+ / OSX.3+</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Opera for Wii</td> - <td>Wii</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nokia N800</td> - <td>N800</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>Presto</td> - <td>Nintendo DS browser</td> - <td>Nintendo DS</td> - <td class="center">8.5</td> - <td class="center">C/A<sup>1</sup></td> - </tr> - <tr class="gradeC"> - <td>KHTML</td> - <td>Konqureror 3.1</td> - <td>KDE 3.1</td> - <td class="center">3.1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.3</td> - <td>KDE 3.3</td> - <td class="center">3.3</td> - <td class="center">A</td> - </tr> - <tr class="gradeA"> - <td>KHTML</td> - <td>Konqureror 3.5</td> - <td>KDE 3.5</td> - <td class="center">3.5</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Tasman</td> - <td>Internet Explorer 4.5</td> - <td>Mac OS 8-9</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.1</td> - <td>Mac OS 7.6-9</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Tasman</td> - <td>Internet Explorer 5.2</td> - <td>Mac OS 8-X</td> - <td class="center">1</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.1</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeA"> - <td>Misc</td> - <td>NetFront 3.4</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">A</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Dillo 0.8</td> - <td>Embedded devices</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Links</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeX"> - <td>Misc</td> - <td>Lynx</td> - <td>Text only</td> - <td class="center">-</td> - <td class="center">X</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>IE Mobile</td> - <td>Windows Mobile 6</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeC"> - <td>Misc</td> - <td>PSP browser</td> - <td>PSP</td> - <td class="center">-</td> - <td class="center">C</td> - </tr> - <tr class="gradeU"> - <td>Other browsers</td> - <td>All others</td> - <td>-</td> - <td class="center">-</td> - <td class="center">U</td> - </tr> - </tbody> -</table> - - </div> - </body> -</html> \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/make.sh b/dashboard/lib/datatables-plugins/make.sh deleted file mode 100644 index b886c3df..00000000 --- a/dashboard/lib/datatables-plugins/make.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -OUT_DIR=$1 -DEBUG=$2 - -# Change into script's own dir -cd $(dirname $0) - -DT_SRC=$(dirname $(dirname $(pwd))) -DT_BUILT="${DT_SRC}/built/DataTables" -. $DT_SRC/build/include.sh - -scss_compile $DT_SRC/extensions/Plugins/integration/jqueryui/dataTables.jqueryui.scss - -js_compress $DT_SRC/extensions/Plugins/features/searchHighlight/dataTables.searchHighlight.js -js_compress $DT_SRC/extensions/Plugins/features/alphabetSearch/dataTables.alphabetSearch.js -js_compress $DT_SRC/extensions/Plugins/features/lengthLinks/dataTables.lengthLinks.js -js_compress $DT_SRC/extensions/Plugins/features/pageResize/dataTables.pageResize.js - -js_compress $DT_SRC/extensions/Plugins/integration/bootstrap/2/dataTables.bootstrap.js -js_compress $DT_SRC/extensions/Plugins/integration/bootstrap/3/dataTables.bootstrap.js -js_compress $DT_SRC/extensions/Plugins/integration/foundation/dataTables.foundation.js -js_compress $DT_SRC/extensions/Plugins/integration/jqueryui/dataTables.jqueryui.js - -# Only copying the integration files -rsync -r integration $OUT_DIR - diff --git a/dashboard/lib/datatables-plugins/pagination/ellipses.js b/dashboard/lib/datatables-plugins/pagination/ellipses.js deleted file mode 100644 index 25d37333..00000000 --- a/dashboard/lib/datatables-plugins/pagination/ellipses.js +++ /dev/null @@ -1,160 +0,0 @@ -/* - * This plug-in adds another pagination option similar to `full_numbers`, except - * it adds ellipses around the page numbers when applicable. You can set how - * many page numbers should be displayed with the iShowPages option. - * - * This plug- in extends the oStdClasses object with the following properties: - * sPageEllipsis, sPageNumber and sPageNumbers. - * - * It also extends the oSettings object with the following properties: - * _iShowPages, _iShowPagesHalf, _iCurrentPage, _iTotalPages, _iFirstPage and - * _iLastPage. - * - * Note that DataTables 1.10 has this ability built in. As such, this plug-ins - * has been marked as deprecated, but may still be useful for if you are using - * an old version of DataTables. - * - * @name Ellipses - * @summary Show ellipses in the pagination control where there is a gap in numbers - * @deprecated - * @author [Dave Kennedy](http://daveden.wordpress.com/) - * @example - * $(document).ready(function() { - * $('#example').dataTable({ - * 'sPaginationType': 'ellipses' - * }); - * }); - */ - -$.extend($.fn.dataTableExt.oStdClasses, { - 'sPageEllipsis': 'paginate_ellipsis', - 'sPageNumber': 'paginate_number', - 'sPageNumbers': 'paginate_numbers' -}); - -$.fn.dataTableExt.oPagination.ellipses = { - 'oDefaults': { - 'iShowPages': 5 - }, - 'fnClickHandler': function(e) { - var fnCallbackDraw = e.data.fnCallbackDraw, - oSettings = e.data.oSettings, - sPage = e.data.sPage; - - if ($(this).is('[disabled]')) { - return false; - } - - oSettings.oApi._fnPageChange(oSettings, sPage); - fnCallbackDraw(oSettings); - - return true; - }, - // fnInit is called once for each instance of pager - 'fnInit': function(oSettings, nPager, fnCallbackDraw) { - var oClasses = oSettings.oClasses, - oLang = oSettings.oLanguage.oPaginate, - that = this; - - var iShowPages = oSettings.oInit.iShowPages || this.oDefaults.iShowPages, - iShowPagesHalf = Math.floor(iShowPages / 2); - - $.extend(oSettings, { - _iShowPages: iShowPages, - _iShowPagesHalf: iShowPagesHalf, - }); - - var oFirst = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPageFirst + '">' + oLang.sFirst + '</a>'), - oPrevious = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPagePrevious + '">' + oLang.sPrevious + '</a>'), - oNumbers = $('<span class="' + oClasses.sPageNumbers + '"></span>'), - oNext = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPageNext + '">' + oLang.sNext + '</a>'), - oLast = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPageLast + '">' + oLang.sLast + '</a>'); - - oFirst.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': 'first' }, that.fnClickHandler); - oPrevious.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': 'previous' }, that.fnClickHandler); - oNext.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': 'next' }, that.fnClickHandler); - oLast.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': 'last' }, that.fnClickHandler); - - // Draw - $(nPager).append(oFirst, oPrevious, oNumbers, oNext, oLast); - }, - // fnUpdate is only called once while table is rendered - 'fnUpdate': function(oSettings, fnCallbackDraw) { - var oClasses = oSettings.oClasses, - that = this; - - var tableWrapper = oSettings.nTableWrapper; - - // Update stateful properties - this.fnUpdateState(oSettings); - - if (oSettings._iCurrentPage === 1) { - $('.' + oClasses.sPageFirst, tableWrapper).attr('disabled', true); - $('.' + oClasses.sPagePrevious, tableWrapper).attr('disabled', true); - } else { - $('.' + oClasses.sPageFirst, tableWrapper).removeAttr('disabled'); - $('.' + oClasses.sPagePrevious, tableWrapper).removeAttr('disabled'); - } - - if (oSettings._iTotalPages === 0 || oSettings._iCurrentPage === oSettings._iTotalPages) { - $('.' + oClasses.sPageNext, tableWrapper).attr('disabled', true); - $('.' + oClasses.sPageLast, tableWrapper).attr('disabled', true); - } else { - $('.' + oClasses.sPageNext, tableWrapper).removeAttr('disabled'); - $('.' + oClasses.sPageLast, tableWrapper).removeAttr('disabled'); - } - - var i, oNumber, oNumbers = $('.' + oClasses.sPageNumbers, tableWrapper); - - // Erase - oNumbers.html(''); - - for (i = oSettings._iFirstPage; i <= oSettings._iLastPage; i++) { - oNumber = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPageNumber + '">' + oSettings.fnFormatNumber(i) + '</a>'); - - if (oSettings._iCurrentPage === i) { - oNumber.attr('active', true).attr('disabled', true); - } else { - oNumber.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': i - 1 }, that.fnClickHandler); - } - - // Draw - oNumbers.append(oNumber); - } - - // Add ellipses - if (1 < oSettings._iFirstPage) { - oNumbers.prepend('<span class="' + oClasses.sPageEllipsis + '">...</span>'); - } - - if (oSettings._iLastPage < oSettings._iTotalPages) { - oNumbers.append('<span class="' + oClasses.sPageEllipsis + '">...</span>'); - } - }, - // fnUpdateState used to be part of fnUpdate - // The reason for moving is so we can access current state info before fnUpdate is called - 'fnUpdateState': function(oSettings) { - var iCurrentPage = Math.ceil((oSettings._iDisplayStart + 1) / oSettings._iDisplayLength), - iTotalPages = Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength), - iFirstPage = iCurrentPage - oSettings._iShowPagesHalf, - iLastPage = iCurrentPage + oSettings._iShowPagesHalf; - - if (iTotalPages < oSettings._iShowPages) { - iFirstPage = 1; - iLastPage = iTotalPages; - } else if (iFirstPage < 1) { - iFirstPage = 1; - iLastPage = oSettings._iShowPages; - } else if (iLastPage > iTotalPages) { - iFirstPage = (iTotalPages - oSettings._iShowPages) + 1; - iLastPage = iTotalPages; - } - - $.extend(oSettings, { - _iCurrentPage: iCurrentPage, - _iTotalPages: iTotalPages, - _iFirstPage: iFirstPage, - _iLastPage: iLastPage - }); - } -}; diff --git a/dashboard/lib/datatables-plugins/pagination/extjs.js b/dashboard/lib/datatables-plugins/pagination/extjs.js deleted file mode 100644 index 60634881..00000000 --- a/dashboard/lib/datatables-plugins/pagination/extjs.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * This pagination plug-in provides pagination controls for DataTables which - * match the style and interaction of the ExtJS library's grid component. - * - * @name ExtJS style - * @summary Pagination in the styling of ExtJS - * @author [Zach Curtis](http://zachariahtimothy.wordpress.com/) - * - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sPaginationType": "extStyle" - * } ); - * } ); - */ - -$.fn.dataTableExt.oApi.fnExtStylePagingInfo = function ( oSettings ) -{ - return { - "iStart": oSettings._iDisplayStart, - "iEnd": oSettings.fnDisplayEnd(), - "iLength": oSettings._iDisplayLength, - "iTotal": oSettings.fnRecordsTotal(), - "iFilteredTotal": oSettings.fnRecordsDisplay(), - "iPage": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ), - "iTotalPages": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength ) - }; -}; - -$.fn.dataTableExt.oPagination.extStyle = { - - - "fnInit": function (oSettings, nPaging, fnCallbackDraw) { - - var oPaging = oSettings.oInstance.fnExtStylePagingInfo(); - - nFirst = $('<span/>', { 'class': 'paginate_button first' , text : "<<" }); - nPrevious = $('<span/>', { 'class': 'paginate_button previous' , text : "<" }); - nNext = $('<span/>', { 'class': 'paginate_button next' , text : ">" }); - nLast = $('<span/>', { 'class': 'paginate_button last' , text : ">>" }); - nPageTxt = $("<span />", { text: 'Page' }); - nPageNumBox = $('<input />', { type: 'text', val: 1, 'class': 'pageinate_input_box' }); - nPageOf = $('<span />', { text: '/' }); - nTotalPages = $('<span />', { class : "paginate_total" , text : oPaging.iTotalPages }); - - - $(nPaging) - .append(nFirst) - .append(nPrevious) - .append(nPageTxt) - .append(nPageNumBox) - .append(nPageOf) - .append(nTotalPages) - .append(nNext) - .append(nLast); - - nFirst.click(function () { - if( $(this).hasClass("disabled") ) - return; - oSettings.oApi._fnPageChange(oSettings, "first"); - fnCallbackDraw(oSettings); - }).bind('selectstart', function () { return false; }); - - nPrevious.click(function () { - if( $(this).hasClass("disabled") ) - return; - oSettings.oApi._fnPageChange(oSettings, "previous"); - fnCallbackDraw(oSettings); - }).bind('selectstart', function () { return false; }); - - nNext.click(function () { - if( $(this).hasClass("disabled") ) - return; - oSettings.oApi._fnPageChange(oSettings, "next"); - fnCallbackDraw(oSettings); - }).bind('selectstart', function () { return false; }); - - nLast.click(function () { - if( $(this).hasClass("disabled") ) - return; - oSettings.oApi._fnPageChange(oSettings, "last"); - fnCallbackDraw(oSettings); - }).bind('selectstart', function () { return false; }); - - nPageNumBox.change(function () { - var pageValue = parseInt($(this).val(), 10) - 1 ; // -1 because pages are 0 indexed, but the UI is 1 - var oPaging = oSettings.oInstance.fnPagingInfo(); - - if(pageValue === NaN || pageValue<0 ){ - pageValue = 0; - }else if(pageValue >= oPaging.iTotalPages ){ - pageValue = oPaging.iTotalPages -1; - } - oSettings.oApi._fnPageChange(oSettings, pageValue); - fnCallbackDraw(oSettings); - }); - - }, - - - "fnUpdate": function (oSettings, fnCallbackDraw) { - if (!oSettings.aanFeatures.p) { - return; - } - - var oPaging = oSettings.oInstance.fnExtStylePagingInfo(); - - /* Loop over each instance of the pager */ - var an = oSettings.aanFeatures.p; - - $(an).find('span.paginate_total').html(oPaging.iTotalPages); - $(an).find('.pageinate_input_box').val(oPaging.iPage+1); - - $(an).each(function(index,item) { - - var $item = $(item); - - if (oPaging.iPage == 0) { - var prev = $item.find('span.paginate_button.first').add($item.find('span.paginate_button.previous')); - prev.addClass("disabled"); - }else { - var prev = $item.find('span.paginate_button.first').add($item.find('span.paginate_button.previous')); - prev.removeClass("disabled"); - } - - if (oPaging.iPage+1 == oPaging.iTotalPages) { - var next = $item.find('span.paginate_button.last').add($item.find('span.paginate_button.next')); - next.addClass("disabled"); - }else { - var next = $item.find('span.paginate_button.last').add($item.find('span.paginate_button.next')); - next.removeClass("disabled"); - } - }); - } -}; diff --git a/dashboard/lib/datatables-plugins/pagination/four_button.js b/dashboard/lib/datatables-plugins/pagination/four_button.js deleted file mode 100644 index 34b4f49d..00000000 --- a/dashboard/lib/datatables-plugins/pagination/four_button.js +++ /dev/null @@ -1,110 +0,0 @@ -/** - * The built-in pagination functions provide either two buttons (forward / back) - * or lots of buttons (forward, back, first, last and individual pages). This - * plug-in meets the two in the middle providing navigation controls for - * forward, back, first and last. - * - * DataTables has this ability built in using the `dt-string full` option of - * the `dt-init pagingType` initialisation option. As such, this plug-in is - * marked as deprecated. - * - * @name Four button navigation - * @summary Display forward, back, first and last buttons. - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sPaginationType": "four_button" - * } ); - * } ); - */ - -$.fn.dataTableExt.oPagination.four_button = { - "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) - { - var nFirst = document.createElement( 'span' ); - var nPrevious = document.createElement( 'span' ); - var nNext = document.createElement( 'span' ); - var nLast = document.createElement( 'span' ); - - nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) ); - nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) ); - nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) ); - nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) ); - - nFirst.className = "paginate_button first"; - nPrevious.className = "paginate_button previous"; - nNext.className="paginate_button next"; - nLast.className = "paginate_button last"; - - nPaging.appendChild( nFirst ); - nPaging.appendChild( nPrevious ); - nPaging.appendChild( nNext ); - nPaging.appendChild( nLast ); - - $(nFirst).click( function () { - oSettings.oApi._fnPageChange( oSettings, "first" ); - fnCallbackDraw( oSettings ); - } ); - - $(nPrevious).click( function() { - oSettings.oApi._fnPageChange( oSettings, "previous" ); - fnCallbackDraw( oSettings ); - } ); - - $(nNext).click( function() { - oSettings.oApi._fnPageChange( oSettings, "next" ); - fnCallbackDraw( oSettings ); - } ); - - $(nLast).click( function() { - oSettings.oApi._fnPageChange( oSettings, "last" ); - fnCallbackDraw( oSettings ); - } ); - - /* Disallow text selection */ - $(nFirst).bind( 'selectstart', function () { return false; } ); - $(nPrevious).bind( 'selectstart', function () { return false; } ); - $(nNext).bind( 'selectstart', function () { return false; } ); - $(nLast).bind( 'selectstart', function () { return false; } ); - }, - - - "fnUpdate": function ( oSettings, fnCallbackDraw ) - { - if ( !oSettings.aanFeatures.p ) - { - return; - } - - /* Loop over each instance of the pager */ - var an = oSettings.aanFeatures.p; - for ( var i=0, iLen=an.length ; i<iLen ; i++ ) - { - var buttons = an[i].getElementsByTagName('span'); - if ( oSettings._iDisplayStart === 0 ) - { - buttons[0].className = "paginate_disabled_previous"; - buttons[1].className = "paginate_disabled_previous"; - } - else - { - buttons[0].className = "paginate_enabled_previous"; - buttons[1].className = "paginate_enabled_previous"; - } - - if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) - { - buttons[2].className = "paginate_disabled_next"; - buttons[3].className = "paginate_disabled_next"; - } - else - { - buttons[2].className = "paginate_enabled_next"; - buttons[3].className = "paginate_enabled_next"; - } - } - } -}; diff --git a/dashboard/lib/datatables-plugins/pagination/index.html b/dashboard/lib/datatables-plugins/pagination/index.html deleted file mode 100644 index 3f23d44c..00000000 --- a/dashboard/lib/datatables-plugins/pagination/index.html +++ /dev/null @@ -1,33 +0,0 @@ - -<h2>Custom pagination types</h2> - -<p>The style of the pagination options that Datatables presents to the end-user can greatly effect the look and feel of your table, as well as, of course, the interaction behaviour. Through the plug-in options you can define your own paging function to create the interaction that you are looking for.</p> - -<ul> - <li><a href="#how_to">How to use DataTables plug-in pagination functions</a></li> - <li><a href="#functions">Plug-in pagination functions</a></li> -</ul> - - -<a name="how_to"></a> -<h3>How to use DataTables plug-in pagination functions</h3> - -<p>To use a pagination plug-in, you must include the pagination plug-in code from the plug-ins available below, after you load the DataTables library, but before you initialise the DataTable. When initialising the DataTable, you must also tell it to make use of this plug-in, rather than using the default built-in types, by setting the 'sPaginationType' to the value required by the plug-in. As an example the code below makes use of the <a href="#scrolling">scrolling pagination plug-in</a> saved into a file (<a href="/examples/plug-ins/paging_plugin.html">live example</a>):</p> - -<pre class="brush: html"><script type="text/javascript" src="jquery.dataTables.js"></script> -<script type="text/javascript" src="dataTables.scrollingPagination.js"></script> -<script type="text/javascript"> - $(document).ready(function() { - $('#example').dataTable( { - "sPaginationType": "scrolling" - } ); - } ); -</script> -</pre> - - -<a name="functions"></a> -<h3>Plug-in pagination functions</h3> - - -include(`build.1.inc') diff --git a/dashboard/lib/datatables-plugins/pagination/input.js b/dashboard/lib/datatables-plugins/pagination/input.js deleted file mode 100644 index c8bb1896..00000000 --- a/dashboard/lib/datatables-plugins/pagination/input.js +++ /dev/null @@ -1,220 +0,0 @@ -/** - * Sometimes for quick navigation, it can be useful to allow an end user to - * enter which page they wish to jump to manually. This paging control uses a - * text input box to accept new paging numbers (arrow keys are also allowed - * for), and four standard navigation buttons are also presented to the end - * user. - * - * @name Navigation with text input - * @summary Shows an input element into which the user can type a page number - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sPaginationType": "input" - * } ); - * } ); - */ - -$.fn.dataTableExt.oPagination.input = { - "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) - { - var nFirst = document.createElement( 'span' ); - var nPrevious = document.createElement( 'span' ); - var nNext = document.createElement( 'span' ); - var nLast = document.createElement( 'span' ); - var nInput = document.createElement( 'input' ); - var nPage = document.createElement( 'span' ); - var nOf = document.createElement( 'span' ); - - nFirst.innerHTML = oSettings.oLanguage.oPaginate.sFirst; - nPrevious.innerHTML = oSettings.oLanguage.oPaginate.sPrevious; - nNext.innerHTML = oSettings.oLanguage.oPaginate.sNext; - nLast.innerHTML = oSettings.oLanguage.oPaginate.sLast; - - nFirst.className = "paginate_button first disabled"; - nPrevious.className = "paginate_button previous disabled"; - nNext.className="paginate_button next"; - nLast.className = "paginate_button last"; - nOf.className = "paginate_of"; - nPage.className = "paginate_page"; - nInput.className = "paginate_input"; - - if ( oSettings.sTableId !== '' ) - { - nPaging.setAttribute( 'id', oSettings.sTableId+'_paginate' ); - nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' ); - nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' ); - nNext.setAttribute( 'id', oSettings.sTableId+'_next' ); - nLast.setAttribute( 'id', oSettings.sTableId+'_last' ); - } - - nInput.type = "text"; - nPage.innerHTML = "Page "; - - nPaging.appendChild( nFirst ); - nPaging.appendChild( nPrevious ); - nPaging.appendChild( nPage ); - nPaging.appendChild( nInput ); - nPaging.appendChild( nOf ); - nPaging.appendChild( nNext ); - nPaging.appendChild( nLast ); - - $(nFirst).click( function () - { - var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1; - if (iCurrentPage != 1) - { - oSettings.oApi._fnPageChange( oSettings, "first" ); - fnCallbackDraw( oSettings ); - $(nFirst).addClass('disabled'); - $(nPrevious).addClass('disabled'); - $(nNext).removeClass('disabled'); - $(nLast).removeClass('disabled'); - } - } ); - - $(nPrevious).click( function() - { - var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1; - if (iCurrentPage != 1) - { - oSettings.oApi._fnPageChange(oSettings, "previous"); - fnCallbackDraw(oSettings); - if (iCurrentPage == 2) - { - $(nFirst).addClass('disabled'); - $(nPrevious).addClass('disabled'); - } - $(nNext).removeClass('disabled'); - $(nLast).removeClass('disabled'); - } - } ); - - $(nNext).click( function() - { - var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1; - if (iCurrentPage != Math.ceil((oSettings.fnRecordsDisplay() / oSettings._iDisplayLength))) - { - oSettings.oApi._fnPageChange(oSettings, "next"); - fnCallbackDraw(oSettings); - if (iCurrentPage == (Math.ceil((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength) - 1)) - { - $(nNext).addClass('disabled'); - $(nLast).addClass('disabled'); - } - $(nFirst).removeClass('disabled'); - $(nPrevious).removeClass('disabled'); - } - } ); - - $(nLast).click( function() - { - var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1; - if (iCurrentPage != Math.ceil((oSettings.fnRecordsDisplay() / oSettings._iDisplayLength))) - { - oSettings.oApi._fnPageChange(oSettings, "last"); - fnCallbackDraw(oSettings); - $(nFirst).removeClass('disabled'); - $(nPrevious).removeClass('disabled'); - $(nNext).addClass('disabled'); - $(nLast).addClass('disabled'); - } - } ); - - $(nInput).keyup( function (e) { - // 38 = up arrow, 39 = right arrow - if ( e.which == 38 || e.which == 39 ) - { - this.value++; - } - // 37 = left arrow, 40 = down arrow - else if ( (e.which == 37 || e.which == 40) && this.value > 1 ) - { - this.value--; - } - - if ( this.value === "" || this.value.match(/[^0-9]/) ) - { - /* Nothing entered or non-numeric character */ - this.value = this.value.replace(/[^\d]/g, ''); // don't even allow anything but digits - return; - } - - var iNewStart = oSettings._iDisplayLength * (this.value - 1); - if (iNewStart < 0) - { - iNewStart = 0; - } - if (iNewStart > oSettings.fnRecordsDisplay()) - { - iNewStart = (Math.ceil((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength; - } - - if (iNewStart === 0) - { - $(nFirst).addClass('disabled'); - $(nPrevious).addClass('disabled'); - $(nNext).removeClass('disabled'); - $(nLast).removeClass('disabled'); - } - else if (iNewStart == ((Math.ceil((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength)) - { - $(nNext).addClass('disabled'); - $(nLast).addClass('disabled'); - $(nFirst).removeClass('disabled'); - $(nPrevious).removeClass('disabled'); - } - else - { - $(nFirst).removeClass('disabled'); - $(nPrevious).removeClass('disabled'); - $(nNext).removeClass('disabled'); - $(nLast).removeClass('disabled'); - } - - oSettings._iDisplayStart = iNewStart; - fnCallbackDraw( oSettings ); - } ); - - /* Take the brutal approach to cancelling text selection */ - $('span', nPaging).bind( 'mousedown', function () { return false; } ); - $('span', nPaging).bind( 'selectstart', function () { return false; } ); - - // If we can't page anyway, might as well not show it - var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength); - if(iPages <= 1) - { - $(nPaging).hide(); - } - }, - - - "fnUpdate": function ( oSettings, fnCallbackDraw ) - { - if ( !oSettings.aanFeatures.p ) - { - return; - } - var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength); - var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1; - - var an = oSettings.aanFeatures.p; - if (iPages <= 1) // hide paging when we can't page - { - $(an).hide(); - } - else - { - /* Loop over each instance of the pager */ - for (var i = 0, iLen = an.length ; i < iLen ; i++) - { - var spans = an[i].getElementsByTagName('span'); - var inputs = an[i].getElementsByTagName('input'); - spans[3].innerHTML = " of " + iPages; - inputs[0].value = iCurrentPage; - } - } - } -}; diff --git a/dashboard/lib/datatables-plugins/pagination/jPaginator/dataTables.jPaginator.js b/dashboard/lib/datatables-plugins/pagination/jPaginator/dataTables.jPaginator.js deleted file mode 100644 index 02d36851..00000000 --- a/dashboard/lib/datatables-plugins/pagination/jPaginator/dataTables.jPaginator.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * jQuery DataTables jPaginator plugin v1.0 - integration between DataTables and - * jPaginator - * by Ernani Azevedo <azevedo@intellinews.com.br> - * - * You'll need jQuery DataTables (http://datatables.net/) and jPaginator - * (http://remylab.github.com/jpaginator/) loaded before load this one. - * - * Full description is available here: - * http://www.intellinews.com.br/blog/2012/10/26/jquery-datatables-integration-with-jpaginator-4/ - * - * @license GPL v3.0. - * @example - * // Initialise DataTables with jPaginator paging - * $('#example').dataTable ( { - * 'sPaginationType': 'jPaginator' - * } ); - */ - -// API method to get paging information (Got idea from Twitter Bootstrap plugin): -$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings) -{ - if ( oSettings) - { - return { - "iStart": oSettings._iDisplayStart, - "iEnd": oSettings.fnDisplayEnd (), - "iLength": oSettings._iDisplayLength, - "iTotal": oSettings.fnRecordsTotal (), - "iFilteredTotal": oSettings.fnRecordsDisplay (), - "iPage": Math.ceil ( oSettings._iDisplayStart / oSettings._iDisplayLength), - "iTotalPages": Math.ceil ( oSettings.fnRecordsDisplay () / oSettings._iDisplayLength)}; - } else { - return { - "iStart": 0, - "iEnd": 0, - "iLength": 0, - "iTotal": 0, - "iFilteredTotal": 0, - "iPage": 0, - "iTotalPages": 0 - } - } -}; - -// Extends DataTable to support jPaginator pagination style: -$.fn.dataTableExt.oPagination.jPaginator = { - 'paginator': $('<span>').html ( '<nav id="m_left"></nav><nav id="o_left"></nav><div class="paginator_p_wrap"><div class="paginator_p_bloc"><!--<a class="paginator_p"></a>--></div></div><nav id="o_right"></nav><nav id="m_right"></nav><div class="paginator_slider ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all"><a class="ui-slider-handle ui-state-default ui-corner-all" href="#"></a></div>'), - 'fnInit': function ( oSettings, nPaging, fnCallbackDraw) { - $(nPaging).prepend ( this.paginator); - $(this.paginator).jPaginator ( { - selectedPage: 1, - nbPages: 1, - nbVisible: 6, - overBtnLeft: '#o_left', - overBtnRight: '#o_right', - maxBtnLeft: '#m_left', - maxBtnRight: '#m_right', - minSlidesForSlider: 2, - onPageClicked: function ( a, num) { - if ( num - 1 == Math.ceil ( oSettings._iDisplayStart / oSettings._iDisplayLength)) { - return; - } - oSettings._iDisplayStart = ( num - 1) * oSettings._iDisplayLength; - fnCallbackDraw ( oSettings); - } - }).addClass ( 'jPaginator'); - }, - 'fnUpdate': function ( oSettings, fnCallbackDraw) { - if ( ! oSettings.aanFeatures.p) { - return; - } - var oPaging = oSettings.oInstance.fnPagingInfo (); - $(this.paginator).trigger ( 'reset', { nbVisible: 6, selectedPage: oPaging.iPage + 1, nbPages: oPaging.iTotalPages}); - } -}; diff --git a/dashboard/lib/datatables-plugins/pagination/scrolling.js b/dashboard/lib/datatables-plugins/pagination/scrolling.js deleted file mode 100644 index d010d900..00000000 --- a/dashboard/lib/datatables-plugins/pagination/scrolling.js +++ /dev/null @@ -1,130 +0,0 @@ -/** - * This modification of DataTables' standard two button pagination controls - * adds a little animation effect to the paging action by redrawing the table - * multiple times for each event, each draw progressing by one row until the - * required point in the table is reached. - * - * @name Scrolling navigation - * @summary Show page changes as a redraw of the table, scrolling records. - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sPaginationType": "scrolling" - * } ); - * } ); - */ - - -/* Time between each scrolling frame */ -$.fn.dataTableExt.oPagination.iTweenTime = 100; - -$.fn.dataTableExt.oPagination.scrolling = { - "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) - { - var oLang = oSettings.oLanguage.oPaginate; - var oClasses = oSettings.oClasses; - var fnClickHandler = function ( e ) { - if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) ) - { - fnCallbackDraw( oSettings ); - } - }; - - var sAppend = (!oSettings.bJUI) ? - '<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sPrevious+'</a>'+ - '<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sNext+'</a>' - : - '<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUIPrev+'"></span></a>'+ - '<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUINext+'"></span></a>'; - $(nPaging).append( sAppend ); - - var els = $('a', nPaging); - var nPrevious = els[0], - nNext = els[1]; - - oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, function() { - /* Disallow paging event during a current paging event */ - if ( typeof oSettings.iPagingLoopStart != 'undefined' && oSettings.iPagingLoopStart != -1 ) - { - return; - } - - oSettings.iPagingLoopStart = oSettings._iDisplayStart; - oSettings.iPagingEnd = oSettings._iDisplayStart - oSettings._iDisplayLength; - - /* Correct for underrun */ - if ( oSettings.iPagingEnd < 0 ) - { - oSettings.iPagingEnd = 0; - } - - var iTween = $.fn.dataTableExt.oPagination.iTweenTime; - var innerLoop = function () { - if ( oSettings.iPagingLoopStart > oSettings.iPagingEnd ) { - oSettings.iPagingLoopStart--; - oSettings._iDisplayStart = oSettings.iPagingLoopStart; - fnCallbackDraw( oSettings ); - setTimeout( function() { innerLoop(); }, iTween ); - } else { - oSettings.iPagingLoopStart = -1; - } - }; - innerLoop(); - } ); - - oSettings.oApi._fnBindAction( nNext, {action: "next"}, function() { - /* Disallow paging event during a current paging event */ - if ( typeof oSettings.iPagingLoopStart != 'undefined' && oSettings.iPagingLoopStart != -1 ) - { - return; - } - - oSettings.iPagingLoopStart = oSettings._iDisplayStart; - - /* Make sure we are not over running the display array */ - if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() ) - { - oSettings.iPagingEnd = oSettings._iDisplayStart + oSettings._iDisplayLength; - } - - var iTween = $.fn.dataTableExt.oPagination.iTweenTime; - var innerLoop = function () { - if ( oSettings.iPagingLoopStart < oSettings.iPagingEnd ) { - oSettings.iPagingLoopStart++; - oSettings._iDisplayStart = oSettings.iPagingLoopStart; - fnCallbackDraw( oSettings ); - setTimeout( function() { innerLoop(); }, iTween ); - } else { - oSettings.iPagingLoopStart = -1; - } - }; - innerLoop(); - } ); - }, - - "fnUpdate": function ( oSettings, fnCallbackDraw ) - { - if ( !oSettings.aanFeatures.p ) - { - return; - } - - /* Loop over each instance of the pager */ - var an = oSettings.aanFeatures.p; - for ( var i=0, iLen=an.length ; i<iLen ; i++ ) - { - if ( an[i].childNodes.length !== 0 ) - { - an[i].childNodes[0].className = - ( oSettings._iDisplayStart === 0 ) ? - oSettings.oClasses.sPagePrevDisabled : oSettings.oClasses.sPagePrevEnabled; - - an[i].childNodes[1].className = - ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ? - oSettings.oClasses.sPageNextDisabled : oSettings.oClasses.sPageNextEnabled; - } - } - } -}; diff --git a/dashboard/lib/datatables-plugins/pagination/select.js b/dashboard/lib/datatables-plugins/pagination/select.js deleted file mode 100644 index ae810f90..00000000 --- a/dashboard/lib/datatables-plugins/pagination/select.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * This pagination plug-in provides a `dt-tag select` menu with the list of the page - * numbers that are available for viewing. - * - * @name Select list - * @summary Show a `dt-tag select` list of pages the user can pick from. - * @author _jneilliii_ - * - * @example - * $(document).ready(function() { - * $('#example').dataTable( { - * "sPaginationType": "listbox" - * } ); - * } ); - */ - -$.fn.dataTableExt.oPagination.listbox = { - /* - * Function: oPagination.listbox.fnInit - * Purpose: Initalise dom elements required for pagination with listbox input - * Returns: - - * Inputs: object:oSettings - dataTables settings object - * node:nPaging - the DIV which contains this pagination control - * function:fnCallbackDraw - draw function which must be called on update - */ - "fnInit": function (oSettings, nPaging, fnCallbackDraw) { - var nInput = document.createElement('select'); - var nPage = document.createElement('span'); - var nOf = document.createElement('span'); - nOf.className = "paginate_of"; - nPage.className = "paginate_page"; - if (oSettings.sTableId !== '') { - nPaging.setAttribute('id', oSettings.sTableId + '_paginate'); - } - nInput.style.display = "inline"; - nPage.innerHTML = "Page "; - nPaging.appendChild(nPage); - nPaging.appendChild(nInput); - nPaging.appendChild(nOf); - $(nInput).change(function (e) { // Set DataTables page property and redraw the grid on listbox change event. - window.scroll(0,0); //scroll to top of page - if (this.value === "" || this.value.match(/[^0-9]/)) { /* Nothing entered or non-numeric character */ - return; - } - var iNewStart = oSettings._iDisplayLength * (this.value - 1); - if (iNewStart > oSettings.fnRecordsDisplay()) { /* Display overrun */ - oSettings._iDisplayStart = (Math.ceil((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength; - fnCallbackDraw(oSettings); - return; - } - oSettings._iDisplayStart = iNewStart; - fnCallbackDraw(oSettings); - }); /* Take the brutal approach to cancelling text selection */ - $('span', nPaging).bind('mousedown', function () { - return false; - }); - $('span', nPaging).bind('selectstart', function () { - return false; - }); - }, - - /* - * Function: oPagination.listbox.fnUpdate - * Purpose: Update the listbox element - * Returns: - - * Inputs: object:oSettings - dataTables settings object - * function:fnCallbackDraw - draw function which must be called on update - */ - "fnUpdate": function (oSettings, fnCallbackDraw) { - if (!oSettings.aanFeatures.p) { - return; - } - var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength); - var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1; /* Loop over each instance of the pager */ - var an = oSettings.aanFeatures.p; - for (var i = 0, iLen = an.length; i < iLen; i++) { - var spans = an[i].getElementsByTagName('span'); - var inputs = an[i].getElementsByTagName('select'); - var elSel = inputs[0]; - if(elSel.options.length != iPages) { - elSel.options.length = 0; //clear the listbox contents - for (var j = 0; j < iPages; j++) { //add the pages - var oOption = document.createElement('option'); - oOption.text = j + 1; - oOption.value = j + 1; - try { - elSel.add(oOption, null); // standards compliant; doesn't work in IE - } catch (ex) { - elSel.add(oOption); // IE only - } - } - spans[1].innerHTML = " of " + iPages; - } - elSel.value = iCurrentPage; - } - } -}; diff --git a/dashboard/lib/datatables-plugins/sorting/alt-string.js b/dashboard/lib/datatables-plugins/sorting/alt-string.js deleted file mode 100644 index 88ba0852..00000000 --- a/dashboard/lib/datatables-plugins/sorting/alt-string.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Sort on the 'alt' tag of images in a column. This is particularly useful if - * you have a column of images (ticks and crosses for example) and you want to - * control the sorting using the alt tag. - * - * @name Alt string - * @summary Use the `alt` attribute of an image tag as the data to sort upon. - * @author _Jumpy_ - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'alt-string', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "alt-string-pre": function ( a ) { - return a.match(/alt="(.*?)"/)[1].toLowerCase(); - }, - - "alt-string-asc": function( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "alt-string-desc": function(a,b) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/anti-the.js b/dashboard/lib/datatables-plugins/sorting/anti-the.js deleted file mode 100644 index a6f24681..00000000 --- a/dashboard/lib/datatables-plugins/sorting/anti-the.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Often a list of data which has titles in it (books, albums etc) will have - * the word "the" at the start of some individual titles, which you don't want - * to include in your sorting order. This plug-in will strip the word "the" - * from the start of a string and sort on what is left. - * - * @name Anti-"the" - * @summary Sort with the prefixed word `dt-string The` removed, if present - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'anti-the', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "anti-the-pre": function ( a ) { - return a.replace(/^the /i, ""); - }, - - "anti-the-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "anti-the-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/chinese-string.js b/dashboard/lib/datatables-plugins/sorting/chinese-string.js deleted file mode 100644 index ee910282..00000000 --- a/dashboard/lib/datatables-plugins/sorting/chinese-string.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Sorting in Javascript for Chinese Character. The Chinese Characters are - * sorted on the radical and number of strokes. This plug-in performs sorting - * for Chinese characters using the Javascript [localeCompare](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/localeCompare) - * function. - * - * Please note that `localeCompare` is not implemented in the same way in all - * browsers, potentially leading to different results (particularly in IE). - * - * @name Chinese (string) - * @summary Sort Chinese characters - * @author [Patrik Lindström](http://www.lcube.se/sorting-chinese-characters-in-javascript/) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'chinese-string', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "chinese-string-asc" : function (s1, s2) { - return s1.localeCompare(s2); - }, - - "chinese-string-desc" : function (s1, s2) { - return s2.localeCompare(s1); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/currency.js b/dashboard/lib/datatables-plugins/sorting/currency.js deleted file mode 100644 index b99a6771..00000000 --- a/dashboard/lib/datatables-plugins/sorting/currency.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * This plug-in will provide numeric sorting for currency columns (either - * detected automatically with the currency type detection plug-in or set - * manually) while taking account of the currency symbol ($ or £ by default). - * - * DataTables 1.10+ has currency sorting abilities built-in and will be - * automatically detected. As such this plug-in is marked as deprecated, but - * might be useful when working with old versions of DataTables. - * - * @name Currency - * @summary Sort data numerically when it has a leading currency symbol. - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'currency', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "currency-pre": function ( a ) { - a = (a==="-") ? 0 : a.replace( /[^\d\-\.]/g, "" ); - return parseFloat( a ); - }, - - "currency-asc": function ( a, b ) { - return a - b; - }, - - "currency-desc": function ( a, b ) { - return b - a; - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-checkbox.js b/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-checkbox.js deleted file mode 100644 index 7d44d5c8..00000000 --- a/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-checkbox.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Read information from a column of checkboxes (input elements with type - * checkbox) and return an array to use as a basis for sorting. - * - * @summary Sort based on the checked state of checkboxes in a column - * @name Checkbox data source - * @author [Allan Jardine](http://sprymedia.co.uk) - */ - -$.fn.dataTable.ext.order['dom-checkbox'] = function ( settings, col ) -{ - return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { - return $('input', td).prop('checked') ? '1' : '0'; - } ); -}; diff --git a/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-select.js b/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-select.js deleted file mode 100644 index 22774e3b..00000000 --- a/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-select.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Read information from a column of select (drop down) menus and return an - * array to use as a basis for sorting. - * - * @summary Sort based on the value of the `dt-tag select` options in a column - * @name Select menu data source - * @requires DataTables 1.10+ - * @author [Allan Jardine](http://sprymedia.co.uk) - */ - -$.fn.dataTable.ext.order['dom-select'] = function ( settings, col ) -{ - return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { - return $('select', td).val(); - } ); -}; diff --git a/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-text.js b/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-text.js deleted file mode 100644 index fc0c4b51..00000000 --- a/dashboard/lib/datatables-plugins/sorting/custom-data-source/dom-text.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Read information from a column of input (type text) elements and return an - * array to use as a basis for sorting. - * - * @summary Sorting based on the values of `dt-tag input` elements in a column. - * @name Input element data source - * @requires DataTables 1.10+ - * @author [Allan Jardine](http://sprymedia.co.uk) - */ - -$.fn.dataTable.ext.order['dom-text'] = function ( settings, col ) -{ - return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { - return $('input', td).val(); - } ); -}; diff --git a/dashboard/lib/datatables-plugins/sorting/date-dd-MMM-yyyy.js b/dashboard/lib/datatables-plugins/sorting/date-dd-MMM-yyyy.js deleted file mode 100644 index d42a804d..00000000 --- a/dashboard/lib/datatables-plugins/sorting/date-dd-MMM-yyyy.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Adds a new sorting option to dataTables called `date-dd-mmm-yyyy`. Also - * includes a type detection plug-in. Matches and sorts date strings in - * the format: `dd/mmm/yyyy`. For example: - * - * * 02-FEB-1978 - * * 17-MAY-2013 - * * 31-JAN-2014 - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Date (dd-mmm-yyyy) - * @summary Sort dates in the format `dd-mmm-yyyy` - * @author [Jeromy French](http://www.appliedinter.net/jeromy_works/) - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'date-dd-mmm-yyyy', targets: 0 } - * ] - * } ); - */ - -(function () { - -var customDateDDMMMYYYYToOrd = function (date) { - "use strict"; //let's avoid tom-foolery in this function - // Convert to a number YYYYMMDD which we can use to order - var dateParts = date.split(/-/); - return (dateParts[2] * 10000) + ($.inArray(dateParts[1].toUpperCase(), ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"]) * 100) + (dateParts[0]*1); -}; - -// This will help DataTables magic detect the "dd-MMM-yyyy" format; Unshift -// so that it's the first data type (so it takes priority over existing) -jQuery.fn.dataTableExt.aTypes.unshift( - function (sData) { - "use strict"; //let's avoid tom-foolery in this function - if (/^([0-2]?\d|3[0-1])-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)-\d{4}/i.test(sData)) { - return 'date-dd-mmm-yyyy'; - } - return null; - } -); - -// define the sorts -jQuery.fn.dataTableExt.oSort['date-dd-mmm-yyyy-asc'] = function (a, b) { - "use strict"; //let's avoid tom-foolery in this function - var ordA = customDateDDMMMYYYYToOrd(a), - ordB = customDateDDMMMYYYYToOrd(b); - return (ordA < ordB) ? -1 : ((ordA > ordB) ? 1 : 0); -}; - -jQuery.fn.dataTableExt.oSort['date-dd-mmm-yyyy-desc'] = function (a, b) { - "use strict"; //let's avoid tom-foolery in this function - var ordA = customDateDDMMMYYYYToOrd(a), - ordB = customDateDDMMMYYYYToOrd(b); - return (ordA < ordB) ? 1 : ((ordA > ordB) ? -1 : 0); -}; - -})(); diff --git a/dashboard/lib/datatables-plugins/sorting/date-de.js b/dashboard/lib/datatables-plugins/sorting/date-de.js deleted file mode 100644 index 0a5a0967..00000000 --- a/dashboard/lib/datatables-plugins/sorting/date-de.js +++ /dev/null @@ -1,110 +0,0 @@ -/** - * This sorting plug-in for DataTables will correctly sort data in date time or date - * format typically used in Germany: - * date and time:`dd.mm.YYYY HH:mm` - * just date:`dd.mm.YYYY`. - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Date (dd.mm.YYYY) or date and time (dd.mm.YYYY HH:mm) - * @summary Sort date / time in the format `dd.mm.YYYY HH:mm` or `dd.mm.YYYY`. - * @author [Ronny Vedrilla](http://www.ambient-innovation.com) - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'de_datetime', targets: 0 }, - * { type: 'de_date', targets: 1 } - * ] - * } ); - */ - - jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "de_datetime-asc": function ( a, b ) { - var x, y; - if (jQuery.trim(a) !== '') { - var deDatea = jQuery.trim(a).split(' '); - var deTimea = deDatea[1].split(':'); - var deDatea2 = deDatea[0].split('.'); - x = (deDatea2[2] + deDatea2[1] + deDatea2[0] + deTimea[0] + deTimea[1]) * 1; - } else { - x = Infinity; // = l'an 1000 ... - } - - if (jQuery.trim(b) !== '') { - var deDateb = jQuery.trim(b).split(' '); - var deTimeb = deDateb[1].split(':'); - deDateb = deDateb[0].split('.'); - y = (deDateb[2] + deDateb[1] + deDateb[0] + deTimeb[0] + deTimeb[1]) * 1; - } else { - y = Infinity; - } - var z = ((x < y) ? -1 : ((x > y) ? 1 : 0)); - return z; - }, - - "de_datetime-desc": function ( a, b ) { - var x, y; - if (jQuery.trim(a) !== '') { - var deDatea = jQuery.trim(a).split(' '); - var deTimea = deDatea[1].split(':'); - var deDatea2 = deDatea[0].split('.'); - x = (deDatea2[2] + deDatea2[1] + deDatea2[0] + deTimea[0] + deTimea[1]) * 1; - } else { - x = Infinity; - } - - if (jQuery.trim(b) !== '') { - var deDateb = jQuery.trim(b).split(' '); - var deTimeb = deDateb[1].split(':'); - deDateb = deDateb[0].split('.'); - y = (deDateb[2] + deDateb[1] + deDateb[0] + deTimeb[0] + deTimeb[1]) * 1; - } else { - y = Infinity; - } - var z = ((x < y) ? 1 : ((x > y) ? -1 : 0)); - return z; - }, - - "de_date-asc": function ( a, b ) { - var x, y; - if (jQuery.trim(a) !== '') { - var deDatea = jQuery.trim(a).split('.'); - x = (deDatea[2] + deDatea[1] + deDatea[0]) * 1; - } else { - x = Infinity; // = l'an 1000 ... - } - - if (jQuery.trim(b) !== '') { - var deDateb = jQuery.trim(b).split('.'); - y = (deDateb[2] + deDateb[1] + deDateb[0]) * 1; - } else { - y = Infinity; - } - var z = ((x < y) ? -1 : ((x > y) ? 1 : 0)); - return z; - }, - - "de_date-desc": function ( a, b ) { - var x, y; - if (jQuery.trim(a) !== '') { - var deDatea = jQuery.trim(a).split('.'); - x = (deDatea[2] + deDatea[1] + deDatea[0]) * 1; - } else { - x = Infinity; - } - - if (jQuery.trim(b) !== '') { - var deDateb = jQuery.trim(b).split('.'); - y = (deDateb[2] + deDateb[1] + deDateb[0]) * 1; - } else { - y = Infinity; - } - var z = ((x < y) ? 1 : ((x > y) ? -1 : 0)); - return z; - } -} ); - diff --git a/dashboard/lib/datatables-plugins/sorting/date-eu.js b/dashboard/lib/datatables-plugins/sorting/date-eu.js deleted file mode 100644 index bd001e4a..00000000 --- a/dashboard/lib/datatables-plugins/sorting/date-eu.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Similar to the Date (dd/mm/YY) data sorting plug-in, this plug-in offers - * additional flexibility with support for spaces between the values and - * either . or / notation for the separators. - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Date (dd . mm[ . YYYY]) - * @summary Sort dates in the format `dd/mm/YY[YY]` (with optional spaces) - * @author [Robert Sedovšek](http://galjot.si/) - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'date-eu', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "date-eu-pre": function ( date ) { - date = date.replace(" ", ""); - - if ( ! date ) { - return 0; - } - - var year; - var eu_date = date.split(/[\.\-\/]/); - - /*year (optional)*/ - if ( eu_date[2] ) { - year = eu_date[2]; - } - else { - year = 0; - } - - /*month*/ - var month = eu_date[1]; - if ( month.length == 1 ) { - month = 0+month; - } - - /*day*/ - var day = eu_date[0]; - if ( day.length == 1 ) { - day = 0+day; - } - - return (year + month + day) * 1; - }, - - "date-eu-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "date-eu-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/date-euro.js b/dashboard/lib/datatables-plugins/sorting/date-euro.js deleted file mode 100644 index a2e0758d..00000000 --- a/dashboard/lib/datatables-plugins/sorting/date-euro.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * This plug-in will provide date sorting for the "dd/mm/YYY hh:ii:ss" - * formatting, which is common in France and other European countries. It can - * also be quickly adapted for other formatting as required. Furthermore, this - * date sorting plug-in allows for empty values in the column. - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Date (dd/mm/YYY hh:ii:ss) - * @summary Sort date / time in the format `dd/mm/YYY hh:ii:ss` - * @author [Ronan Guilloux](http://coolforest.net/) - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'date-euro', targets: 0 } - * ] - * } ); - */ - - jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "date-euro-pre": function ( a ) { - var x; - - if ( $.trim(a) !== '' ) { - var frDatea = $.trim(a).split(' '); - var frTimea = frDatea[1].split(':'); - var frDatea2 = frDatea[0].split('/'); - x = (frDatea2[2] + frDatea2[1] + frDatea2[0] + frTimea[0] + frTimea[1] + frTimea[2]) * 1; - } - else { - x = Infinity; - } - - return x; - }, - - "date-euro-asc": function ( a, b ) { - return a - b; - }, - - "date-euro-desc": function ( a, b ) { - return b - a; - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/date-uk.js b/dashboard/lib/datatables-plugins/sorting/date-uk.js deleted file mode 100644 index 527ea6c7..00000000 --- a/dashboard/lib/datatables-plugins/sorting/date-uk.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * DataTables internal date sorting replies on `Date.parse()` which is part of - * the Javascript language, but you may wish to sort on dates which is doesn't - * recognise. The following is a plug-in for sorting dates in the format - * `dd/mm/yy`. - * - * An automatic type detection plug-in is available for this sorting plug-in. - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Date (dd/mm/YY) - * @summary Sort dates in the format `dd/mm/YY` - * @author Andy McMaster - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'date-uk', targets: 0 } - * ] - * } ); - */ - - jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "date-uk-pre": function ( a ) { - if (a == null || a == "") { - return 0; - } - var ukDatea = a.split('/'); - return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1; - }, - - "date-uk-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "date-uk-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/datetime-moment.js b/dashboard/lib/datatables-plugins/sorting/datetime-moment.js deleted file mode 100644 index aae10d93..00000000 --- a/dashboard/lib/datatables-plugins/sorting/datetime-moment.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * This plug-in for DataTables represents the ultimate option in extensibility - * for sorting date / time strings correctly. It uses - * [Moment.js](http://momentjs.com) to create automatic type detection and - * sorting plug-ins for DataTables based on a given format. This way, DataTables - * will automatically detect your temporal information and sort it correctly. - * - * For usage instructions, please see the DataTables blog - * post that [introduces it](//datatables.net/blog/2014-12-18). - * - * @name Ultimate Date / Time sorting - * @summary Sort date and time in any format using Moment.js - * @author [Allan Jardine](//datatables.net) - * @depends DataTables 1.10+, Moment.js 1.7+ - * - * @example - * $.fn.dataTable.moment( 'HH:mm MMM D, YY' ); - * $.fn.dataTable.moment( 'dddd, MMMM Do, YYYY' ); - * - * $('#example').DataTable(); - */ - -(function($) { - -$.fn.dataTable.moment = function ( format, locale ) { - var types = $.fn.dataTable.ext.type; - - // Add type detection - types.detect.unshift( function ( d ) { - // Null and empty values are acceptable - if ( d === '' || d === null ) { - return 'moment-'+format; - } - - return moment( d.replace ? d.replace(/<.*?>/g, '') : d, format, locale, true ).isValid() ? - 'moment-'+format : - null; - } ); - - // Add sorting method - use an integer for the sorting - types.order[ 'moment-'+format+'-pre' ] = function ( d ) { - return d === '' || d === null ? - -Infinity : - parseInt( moment( d.replace ? d.replace(/<.*?>/g, '') : d, format, locale, true ).format( 'x' ), 10 ); - }; -}; - -}(jQuery)); diff --git a/dashboard/lib/datatables-plugins/sorting/datetime-us.js b/dashboard/lib/datatables-plugins/sorting/datetime-us.js deleted file mode 100644 index 3546ef72..00000000 --- a/dashboard/lib/datatables-plugins/sorting/datetime-us.js +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Adds a new sorting option to dataTables called `datetime-us`. - * - * Also included is a type detection plug-in. Matches and sorts date / time - * strings in the format: `(m)m/(d)d/(yy)yy (h)h/m(m) (am|pm)`. For example: - * - * * 1/1/13 1:4 pm - * * 01/01/2013 01:04 PM - * * 1/1/2013 1:04 Pm - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Date / time - US - * @summary Sort date / time in the format `m/d/yy h:m am|pm` - * @author [Kevin Gravier](http://mrkmg.com/) - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'datetime-us', targets: 0 } - * ] - * } ); -*/ -jQuery.extend(jQuery.fn.dataTableExt.oSort, { - "datetime-us-pre": function (a) { - var b = a.match(/(\d{1,2})\/(\d{1,2})\/(\d{2,4}) (\d{1,2}):(\d{1,2}) (am|pm|AM|PM|Am|Pm)/), - month = b[1], - day = b[2], - year = b[3], - hour = b[4], - min = b[5], - ap = b[6].toLowerCase(); - - if (hour == '12') { - hour = '0'; - if (ap == 'pm') { - hour = parseInt(hour, 10) + 12; - } - - if (year.length == 2) { - if (parseInt(year, 10) < 70) { - year = '20' + year; - } - else { - year = '19' + year; - } - } - if (month.length == 1) { - month = '0' + month; - } - if (day.length == 1) { - day = '0' + day; - } - if (hour.length == 1) { - hour = '0' + hour; - } - if (min.length == 1) { - min = '0' + min; - } - - var tt = year + month + day + hour + min; - return tt; - } - }, - - "datetime-us-asc": function (a, b) { - return a - b; - }, - - "datetime-us-desc": function (a, b) { - return b - a; - } -}); - -jQuery.fn.dataTableExt.aTypes.unshift( - function (sData) { - if (sData !== null && sData.match(/\d{1,2}\/\d{1,2}\/\d{2,4} \d{1,2}:\d{1,2} (am|pm|AM|PM|Am|Pm)/)) { - - return 'datetime-us'; - } - return null; - } -); diff --git a/dashboard/lib/datatables-plugins/sorting/enum.js b/dashboard/lib/datatables-plugins/sorting/enum.js deleted file mode 100644 index 11546168..00000000 --- a/dashboard/lib/datatables-plugins/sorting/enum.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Sort by priority through an enumerated list. In this case the words _High_, - * _Medium_ and _Low_ are used and thus sorted in priority order. This works - * by converting the works to a numerical value and then sorting based on that - * value. - * - * @name enum - * @summary Sort an enumerated list of options - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'enum', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "enum-pre": function ( a ) { - // Add / alter the switch statement below to match your enum list - switch( a ) { - case "High": return 1; - case "Medium": return 2; - case "Low": return 3; - default: return 4; - } - }, - - "enum-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "enum-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/file-size.js b/dashboard/lib/datatables-plugins/sorting/file-size.js deleted file mode 100644 index 5440fb1c..00000000 --- a/dashboard/lib/datatables-plugins/sorting/file-size.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * When dealing with computer file sizes, it is common to append a post fix - * such as B, KB, MB or GB to a string in order to easily denote the order of - * magnitude of the file size. This plug-in allows sorting to take these - * indicates of size into account. - * - * A counterpart type detection plug-in is also available. - * - * @name File size - * @summary Sort abbreviated file sizes correctly (8MB, 4KB, etc) - * @author Allan Jardine - datatables.net - * - * @example - * $('#example').DataTable( { - * columnDefs: [ - * { type: 'file-size', targets: 0 } - * ] - * } ); - */ - -jQuery.fn.dataTable.ext.type.order['file-size-pre'] = function ( data ) { - var units = data.replace( /[\d\.]/g, '' ).toLowerCase(); - var multiplier = 1; - - if ( units === 'kb' ) { - multiplier = 1000; - } - else if ( units === 'mb' ) { - multiplier = 1000000; - } - else if ( units === 'gb' ) { - multiplier = 1000000000; - } - - return parseFloat( data ) * multiplier; -}; diff --git a/dashboard/lib/datatables-plugins/sorting/formatted-numbers.js b/dashboard/lib/datatables-plugins/sorting/formatted-numbers.js deleted file mode 100644 index 86f218dd..00000000 --- a/dashboard/lib/datatables-plugins/sorting/formatted-numbers.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * This plug-in will provide numeric sorting for numeric columns which have - * extra formatting, such as thousands separators, currency symbols or any other - * non-numeric data. - * - * By default when a cell is found to have no numeric data its value is sorted - * numerically as if its value were 0. This could also be altered to be Inifnity - * or -Infinity as required. - * - * DataTables 1.10+ has formatted number detection and sorting abilities built- - * in. As such this plug-in is marked as deprecated, but might be useful when - * working with old versions of DataTables. - * - * @name Formatted numbers - * @summary Sort numbers which are displayed with thousand separators - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'formatted-num', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "formatted-num-pre": function ( a ) { - a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" ); - return parseFloat( a ); - }, - - "formatted-num-asc": function ( a, b ) { - return a - b; - }, - - "formatted-num-desc": function ( a, b ) { - return b - a; - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/ip-address.js b/dashboard/lib/datatables-plugins/sorting/ip-address.js deleted file mode 100644 index 7ea648ac..00000000 --- a/dashboard/lib/datatables-plugins/sorting/ip-address.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Sorts a column containing IP addresses in typical dot notation. This can - * be most useful when using DataTables for a networking application, and - * reporting information containing IP address. Also has a matching type - * detection plug-in for automatic type detection. - * - * @name IP addresses - * @summary Sort IP addresses numerically - * @author Brad Wasson - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'ip-address', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "ip-address-pre": function ( a ) { - var m = a.split("."), x = ""; - - for(var i = 0; i < m.length; i++) { - var item = m[i]; - if(item.length == 1) { - x += "00" + item; - } else if(item.length == 2) { - x += "0" + item; - } else { - x += item; - } - } - - return x; - }, - - "ip-address-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "ip-address-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/monthYear.js b/dashboard/lib/datatables-plugins/sorting/monthYear.js deleted file mode 100644 index 54d9d82a..00000000 --- a/dashboard/lib/datatables-plugins/sorting/monthYear.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * This sorting plug-in will sort, in calendar order, data which - * is in the format "MM YY". - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Date (MM YY) - * @anchor Sort dates in the format `MM YY` - * @author Michael Motek - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'monthYear', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "monthYear-pre": function ( s ) { - var a = s.split(' '); - // Date uses the American "MM DD YY" format - return new Date(a[0]+' 01 '+a[1]); - }, - - "monthYear-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "monthYear-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/natural.js b/dashboard/lib/datatables-plugins/sorting/natural.js deleted file mode 100644 index 1a26f324..00000000 --- a/dashboard/lib/datatables-plugins/sorting/natural.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Data can often be a complicated mix of numbers and letters (file names - * are a common example) and sorting them in a natural manner is quite a - * difficult problem. - * - * Fortunately a deal of work has already been done in this area by other - * authors - the following plug-in uses the [naturalSort() function by Jim - * Palmer](http://www.overset.com/2008/09/01/javascript-natural-sort-algorithm-with-unicode-support) to provide natural sorting in DataTables. - * - * @name Natural sorting - * @summary Sort data with a mix of numbers and letters _naturally_. - * @author [Jim Palmer](http://www.overset.com/2008/09/01/javascript-natural-sort-algorithm-with-unicode-support) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'natural', targets: 0 } - * ] - * } ); - */ - -(function() { - -/* - * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license - * Author: Jim Palmer (based on chunking idea from Dave Koelle) - * Contributors: Mike Grier (mgrier.com), Clint Priest, Kyle Adams, guillermo - * See: http://js-naturalsort.googlecode.com/svn/trunk/naturalSort.js - */ -function naturalSort (a, b) { - var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi, - sre = /(^[ ]*|[ ]*$)/g, - dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, - hre = /^0x[0-9a-f]+$/i, - ore = /^0/, - // convert all to strings and trim() - x = a.toString().replace(sre, '') || '', - y = b.toString().replace(sre, '') || '', - // chunk/tokenize - xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), - // numeric, hex or date detection - xD = parseInt(x.match(hre), 10) || (xN.length !== 1 && x.match(dre) && Date.parse(x)), - yD = parseInt(y.match(hre), 10) || xD && y.match(dre) && Date.parse(y) || null; - - // first try and sort Hex codes or Dates - if (yD) { - if ( xD < yD ) { - return -1; - } - else if ( xD > yD ) { - return 1; - } - } - - // natural sorting through split numeric strings and default strings - for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { - // find floats not starting with '0', string or 0 if not defined (Clint Priest) - var oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc], 10) || xN[cLoc] || 0; - var oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc], 10) || yN[cLoc] || 0; - // handle numeric vs string comparison - number < string - (Kyle Adams) - if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { - return (isNaN(oFxNcL)) ? 1 : -1; - } - // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' - else if (typeof oFxNcL !== typeof oFyNcL) { - oFxNcL += ''; - oFyNcL += ''; - } - if (oFxNcL < oFyNcL) { - return -1; - } - if (oFxNcL > oFyNcL) { - return 1; - } - } - return 0; -} - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "natural-asc": function ( a, b ) { - return naturalSort(a,b); - }, - - "natural-desc": function ( a, b ) { - return naturalSort(a,b) * -1; - } -} ); - -}()); diff --git a/dashboard/lib/datatables-plugins/sorting/num-html.js b/dashboard/lib/datatables-plugins/sorting/num-html.js deleted file mode 100644 index 7da35f67..00000000 --- a/dashboard/lib/datatables-plugins/sorting/num-html.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * This sorting plug-in allows for HTML tags with numeric data. With the 'html' - * type it will strip the HTML and then sorts by strings, with this type it - * strips the HTML and then sorts by numbers. Note also that this sorting - * plug-in has an equivalent type detection plug-in which can make integration - * easier. - * - * DataTables 1.10+ has HTML numeric data type detection and sorting abilities - * built-in. As such this plug-in is marked as deprecated, but might be useful - * when working with old versions of DataTables. - * - * @name Numbers with HTML - * @summary Sort data which is a mix of HTML and numeric data. - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'num-html', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "num-html-pre": function ( a ) { - var x = String(a).replace( /<[\s\S]*?>/g, "" ); - return parseFloat( x ); - }, - - "num-html-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "num-html-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/numeric-comma.js b/dashboard/lib/datatables-plugins/sorting/numeric-comma.js deleted file mode 100644 index 99ebd0a3..00000000 --- a/dashboard/lib/datatables-plugins/sorting/numeric-comma.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * It is not uncommon for non-English speaking countries to use a comma for a - * decimal place. This sorting plug-in shows how that can be taken account of in - * sorting by adding the type `numeric-comma` to DataTables. A type detection - * plug-in for this sorting method is provided below. - * - * Please note that the 'Formatted numbers' type detection and sorting plug-ins - * offer greater flexibility that this plug-in and should be used in preference - * to this method. - * - * @name Commas for decimal place - * @summary Sort numbers correctly which use a common as the decimal place. - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'numeric-comma', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "numeric-comma-pre": function ( a ) { - var x = (a == "-") ? 0 : a.replace( /,/, "." ); - return parseFloat( x ); - }, - - "numeric-comma-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "numeric-comma-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/percent.js b/dashboard/lib/datatables-plugins/sorting/percent.js deleted file mode 100644 index 07a1e16a..00000000 --- a/dashboard/lib/datatables-plugins/sorting/percent.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Sort numeric data which has a percent sign with it. - * - * DataTables 1.10+ has percentage data type detection and sorting abilities - * built-in. As such this plug-in is marked as deprecated, but might be useful - * when working with old versions of DataTables. - * - * @name Percentage - * @summary Sort numeric data with a postfixed percentage symbol - * @deprecated - * @author [Jonathan Romley](http://jonathanromley.org/) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'percent', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "percent-pre": function ( a ) { - var x = (a == "-") ? 0 : a.replace( /%/, "" ); - return parseFloat( x ); - }, - - "percent-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "percent-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/persian.js b/dashboard/lib/datatables-plugins/sorting/persian.js deleted file mode 100644 index a6ea68e8..00000000 --- a/dashboard/lib/datatables-plugins/sorting/persian.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * Sorting in Javascript can be difficult to get right with non-Roman - * characters - for which special consideration must be made. This plug-in - * performs correct sorting on Persian characters. - * - * @name Persian - * @summary Sort Persian strings alphabetically - * @author [Afshin Mehrabani](http://www.afshinblog.com/) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'pstring', targets: 0 } - * ] - * } ); - */ - -(function(){ - -var persianSort = [ 'آ', 'ا', 'ب', 'پ', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'ژ', - 'س', 'ش', 'ص', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'و', 'ه', 'ی', 'ي' ]; - -function GetUniCode(source) { - source = $.trim(source); - var result = ''; - var i, index; - for (i = 0; i < source.length; i++) { - //Check and fix IE indexOf bug - if (!Array.indexOf) { - index = jQuery.inArray(source.charAt(i), persianSort); - }else{ - index = persianSort.indexOf(source.charAt(i)); - } - if (index < 0) { - index = source.charCodeAt(i); - } - if (index < 10) { - index = '0' + index; - } - result += '00' + index; - } - return 'a' + result; -} - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "pstring-pre": function ( a ) { - return GetUniCode(a.toLowerCase()); - }, - - "pstring-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "pstring-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); - -}()); \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/sorting/scientific.js b/dashboard/lib/datatables-plugins/sorting/scientific.js deleted file mode 100644 index a94d246b..00000000 --- a/dashboard/lib/datatables-plugins/sorting/scientific.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * This plug-in will treat numbers which are in scientific notation (for - * example `1E-10`, `1.2E6` etc) and sort them numerically. - * - * @name Scientific notation sorting - * @summary Sort data which is written in exponential notation. - * @author [Nick Schurch](http://datatables.net/forums/profile/21757/nickschurch) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'scientific', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "scientific-pre": function ( a ) { - return parseFloat(a); - }, - - "scientific-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "scientific-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/signed-num.js b/dashboard/lib/datatables-plugins/sorting/signed-num.js deleted file mode 100644 index 441d3028..00000000 --- a/dashboard/lib/datatables-plugins/sorting/signed-num.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Although DataTables' internal numeric sorting works no problem on negative - * numbers, it does not accept positively signed numbers. This plug-in will - * sort just such data numerically. - * - * @name Fully signed numbers sorting - * @summary Sort data numerically with a leading `+` symbol (as well as `-`). - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'signed-num', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "signed-num-pre": function ( a ) { - return (a=="-" || a==="") ? 0 : a.replace('+','')*1; - }, - - "signed-num-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "signed-num-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/stringMonthYear.js b/dashboard/lib/datatables-plugins/sorting/stringMonthYear.js deleted file mode 100644 index ffcd3302..00000000 --- a/dashboard/lib/datatables-plugins/sorting/stringMonthYear.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * This sorting plug-in will sort, in calendar order, data which - * is in the format "MMM yyyy" or "MMMM yyyy". Inspired by forum discussion: - * http://datatables.net/forums/discussion/1242/sorting-dates-with-only-month-and-year - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Date (MMM yyyy) or (MMMM yyyy) - * @anchor Sort dates in the format `MMM yyyy` or `MMMM yyyy` - * @author Phil Hurwitz - * @deprecated - * - * @example - * $('#example').DataTable( { - * columnDefs: [ - * { type: 'stringMonthYear', targets: 0 } - * ] - * } ); - */ - -jQuery.extend(jQuery.fn.dataTableExt.oSort, { - "stringMonthYear-pre": function (s) { - var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - - var dateComponents = s.split(" "); - dateComponents[0] = dateComponents[0].replace(",", ""); - dateComponents[1] = jQuery.trim(dateComponents[1]); - - var year = dateComponents[1]; - - var month = 0; - for (var i = 0; i < months.length; i++) { - if (months[i].toLowerCase() == dateComponents[0].toLowerCase().substring(0,3)) { - month = i; - break; - } - } - - return new Date(year, month, 1); - }, - - "stringMonthYear-asc": function (a, b) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "stringMonthYear-desc": function (a, b) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -}); \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/sorting/time.js b/dashboard/lib/datatables-plugins/sorting/time.js deleted file mode 100644 index b0354b22..00000000 --- a/dashboard/lib/datatables-plugins/sorting/time.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * This plug-in provides the ability to sort columns that contains time - * information in the most common formats used. It will automatically detect - * those date types. - * - * Please note that this plug-in is **deprecated*. The - * [datetime](//datatables.net/blog/2014-12-18) plug-in provides enhanced - * functionality and flexibility. - * - * @name Time (dd/mm/YY) - * @summary Sort Times in the formats: `hh:mm, hh:mm:ss, hh:mm tt, hh:mm:ss tt` - * e.g. '22:50, 22:50:40, 10:50 pm, 10:50:40 pm' - * am and pm are not case sensitive. white space is not compulsory - * @author David Stoneham - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'time-uni', targets: 0 } - * ] - * } ); - */ - -jQuery.extend(jQuery.fn.dataTableExt.oSort, { - "time-uni-pre": function (a) { - var uniTime; - - if (a.toLowerCase().indexOf("am") > -1 || (a.toLowerCase().indexOf("pm") > -1 && Number(a.split(":")[0]) === 12)) { - uniTime = a.toLowerCase().split("pm")[0].split("am")[0]; - while (uniTime.indexOf(":") > -1) { - uniTime = uniTime.replace(":", ""); - } - } else if (a.toLowerCase().indexOf("pm") > -1 || (a.toLowerCase().indexOf("am") > -1 && Number(a.split(":")[0]) === 12)) { - uniTime = Number(a.split(":")[0]) + 12; - var leftTime = a.toLowerCase().split("pm")[0].split("am")[0].split(":"); - for (var i = 1; i < leftTime.length; i++) { - uniTime = uniTime + leftTime[i].trim().toString(); - } - } else { - uniTime = a.replace(":", ""); - while (uniTime.indexOf(":") > -1) { - uniTime = uniTime.replace(":", ""); - } - } - return Number(uniTime); - }, - - "time-uni-asc": function (a, b) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "time-uni-desc": function (a, b) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -}); \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/sorting/title-numeric.js b/dashboard/lib/datatables-plugins/sorting/title-numeric.js deleted file mode 100644 index fd076ce0..00000000 --- a/dashboard/lib/datatables-plugins/sorting/title-numeric.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * An alternative to the formatted number sorting function above (particularly - * useful when considering localisation which uses dots / periods for 10^3 - * separation rather than decimal places). Another method of overcoming it - * difficulties of sorting formatted numbers is to have the data to be sorted - * upon separate from the visual data. This sorting function pair will use the - * 'title' attribute of en empty span element (or anything else) to sort - * numerically (for example `<span title="1000000"><span>1'000'000`). - * - * Note that the HTML5 `data-sort` attribute can be [used to supply sorting data - * to DataTables](//datatables.net/manual/orthogonal-data) and is preferable to - * using this method, which is therefore marked as deprecated. - * - * @name Hidden title numeric sorting - * @summary Sort data numerically based on an attribute on an empty element. - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'title-numeric', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "title-numeric-pre": function ( a ) { - var x = a.match(/title="*(-?[0-9\.]+)/)[1]; - return parseFloat( x ); - }, - - "title-numeric-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "title-numeric-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/title-string.js b/dashboard/lib/datatables-plugins/sorting/title-string.js deleted file mode 100644 index 2f2f35d7..00000000 --- a/dashboard/lib/datatables-plugins/sorting/title-string.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Just like the _hidden title numeric sorting_ plug-in, this sorting plug-in - * will take the information to be sorted on from the title attribute of a span - * element. The only difference is that it is string based sorting rather than - * numeric. - * - * Note that the HTML5 `data-sort` attribute can be [used to supply sorting data - * to DataTables](//datatables.net/manual/orthogonal-data) and is preferable to - * using this method, which is therefore marked as deprecated. - * - * @name Hidden title string sorting - * @summary Sort data as a string based on an attribute on an empty element. - * @author [Allan Jardine](http://sprymedia.co.uk) - * @deprecated - * - * @example - * $('#example').dataTable( { - * columnDefs: [ - * { type: 'title-string', targets: 0 } - * ] - * } ); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "title-string-pre": function ( a ) { - return a.match(/title="(.*?)"/)[1].toLowerCase(); - }, - - "title-string-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "title-string-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/sorting/turkish-string.js b/dashboard/lib/datatables-plugins/sorting/turkish-string.js deleted file mode 100644 index 0c1ee5ff..00000000 --- a/dashboard/lib/datatables-plugins/sorting/turkish-string.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Sorting in Javascript for Turkish Characters. This plug-in will replace the special - * turkish letters (non english characters) and replace in English. - * - * - * @name Turkish - * @summary Sort Turkish characters - * @author [Yuksel Beyti](http://yukselbeyti.com) - * - * @example - * $('#example').dataTable({ - * 'aoColumns' : [ - * {'sType' : 'turkish'} - * ] - * }); - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "turkish-pre": function ( a ) { - var special_letters = { "İ": "ib", "I": "ia", "Ş": "sa", "Ğ": "ga", "Ü": "ua", "Ö": "oa", "Ç": "ca", "i": "ia", "ı": "ia", "ş": "sa", "ğ": "ga", "ü": "ua", "ö": "oa", "ç": "ca" }; - for (var val in special_letters) - a = a.split(val).join(special_letters[val]).toLowerCase(); - return a; - }, - - "turkish-asc": function ( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "turkish-desc": function ( a, b ) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -} ); diff --git a/dashboard/lib/datatables-plugins/type-detection/currency.js b/dashboard/lib/datatables-plugins/type-detection/currency.js deleted file mode 100644 index 9a098851..00000000 --- a/dashboard/lib/datatables-plugins/type-detection/currency.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * This plug-in will add automatic detection for currency columns to - * DataTables. Note that only $, £ and € symbols are detected with this code, - * but it is trivial to add more or change the current ones. This is best used - * in conjunction with the currency sorting plug-in. - * - * DataTables 1.10+ has currency sorting abilities built-in and will be - * automatically detected. As such this plug-in is marked as deprecated, but - * might be useful when working with old versions of DataTables. - * - * @name Currency - * @summary Detect data of numeric type with a leading currency symbol. - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk), Nuno Gomes - */ - -(function(){ - -// Change this list to the valid characters you want -var validChars = "$£€c" + "0123456789" + ".-,'"; - -// Init the regex just once for speed - it is "closure locked" -var - str = jQuery.fn.dataTableExt.oApi._fnEscapeRegex( validChars ), - re = new RegExp('[^'+str+']'); - - -jQuery.fn.dataTableExt.aTypes.unshift( - function ( data ) - { - if ( typeof data !== 'string' || re.test(data) ) { - return null; - } - - return 'currency'; - } -); - -}()); - diff --git a/dashboard/lib/datatables-plugins/type-detection/date-uk.js b/dashboard/lib/datatables-plugins/type-detection/date-uk.js deleted file mode 100644 index d4a86210..00000000 --- a/dashboard/lib/datatables-plugins/type-detection/date-uk.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Automatically detect British (`dd/mm/yyyy`) date types. Goes with the UK - * date sorting plug-in. - * - * @name Date (`dd/mm/yyyy`) - * @summary Detect data which is in the date format `dd/mm/yyyy` - * @author Andy McMaster - */ - -jQuery.fn.dataTableExt.aTypes.unshift( - function ( sData ) - { - if (sData !== null && sData.match(/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20|21)\d\d$/)) - { - return 'date-uk'; - } - return null; - } -); diff --git a/dashboard/lib/datatables-plugins/type-detection/file-size.js b/dashboard/lib/datatables-plugins/type-detection/file-size.js deleted file mode 100644 index 1ab4dab1..00000000 --- a/dashboard/lib/datatables-plugins/type-detection/file-size.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Detect file size type columns automatically. Commonly used for computer - * file sizes, this can allow sorting to take the order of magnitude indicated - * by the label (GB etc) into account. - * - * @name File size - * @summary Detect abbreviated file size data (8MB, 4KB, 3B, etc) - * @author Allan Jardine - datatables.net - */ - -jQuery.fn.dataTable.ext.type.detect.unshift( function ( data ) { - if ( typeof data !== 'string' ) { - return null; - } - - var units = data.replace( /[\d\.]/g, '' ).toLowerCase(); - if ( units !== '' && units !== 'b' && units !== 'kb' && units !== 'mb' && units !== 'gb' ) { - return null; - } - - return isNaN( parseFloat( data ) ) ? - null : - 'file-size'; -} ); \ No newline at end of file diff --git a/dashboard/lib/datatables-plugins/type-detection/formatted-num.js b/dashboard/lib/datatables-plugins/type-detection/formatted-num.js deleted file mode 100644 index 24d73494..00000000 --- a/dashboard/lib/datatables-plugins/type-detection/formatted-num.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * This plug-in will strip out non-numeric formatting characters such that a - * formatted number (for example 1,000,000) can be detected automatically and - * sorted numerically. Note that characters a-z are not automatically removed, - * otherwise there is a risk of detecting columns as numeric which should not - * be. - * - * DataTables 1.10+ has formatted number type detection and sorting abilities - * built-in. As such this plug-in is marked as deprecated, but might be useful - * when working with old versions of DataTables. - * - * @name Formatted numbers - * @summary formatted_numbers - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - */ - -jQuery.fn.dataTableExt.aTypes.unshift( - function ( sData ) - { - var deformatted = sData.replace(/[^\d\-\.\/a-zA-Z]/g,''); - if ( $.isNumeric( deformatted ) || deformatted === "-" ) { - return 'formatted-num'; - } - return null; - } -); diff --git a/dashboard/lib/datatables-plugins/type-detection/ip-address.js b/dashboard/lib/datatables-plugins/type-detection/ip-address.js deleted file mode 100644 index f2c23ab8..00000000 --- a/dashboard/lib/datatables-plugins/type-detection/ip-address.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Automatically detect IP addresses in dot notation. Goes perfectly with the - * IP address sorting function. - * - * @name IP address detection - * @summary Detect data which is in IP address notation - * @author Brad Wasson - */ - -jQuery.fn.dataTableExt.aTypes.unshift( - function ( sData ) - { - if (/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(sData)) { - return 'ip-address'; - } - return null; - } -); diff --git a/dashboard/lib/datatables-plugins/type-detection/num-html.js b/dashboard/lib/datatables-plugins/type-detection/num-html.js deleted file mode 100644 index 077557d6..00000000 --- a/dashboard/lib/datatables-plugins/type-detection/num-html.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * This type-detection plug-in will look at an HTML string from a data cell, - * strip the HTML tags and then check to see if the remaining data is numeric. - * If it is, then the data can be sorted numerically with the Numbers with HTML - * sorting plug-in. - * - * DataTables 1.10+ has numeric HTML data type and sorting abilities built-in. - * As such this plug-in is marked as deprecated, but might be useful when - * working with old versions of DataTables. - * - * @name Numbers with HTML - * @summary Detect data which is a mix of HTML and numeric data. - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - */ - -jQuery.fn.dataTableExt.aTypes.unshift( function ( sData ) -{ - sData = typeof sData.replace == 'function' ? - sData.replace( /<[\s\S]*?>/g, "" ) : sData; - sData = $.trim(sData); - - var sValidFirstChars = "0123456789-"; - var sValidChars = "0123456789."; - var Char; - var bDecimal = false; - - /* Check for a valid first char (no period and allow negatives) */ - Char = sData.charAt(0); - if (sValidFirstChars.indexOf(Char) == -1) - { - return null; - } - - /* Check all the other characters are valid */ - for ( var i=1 ; i<sData.length ; i++ ) - { - Char = sData.charAt(i); - if (sValidChars.indexOf(Char) == -1) - { - return null; - } - - /* Only allowed one decimal place... */ - if ( Char == "." ) - { - if ( bDecimal ) - { - return null; - } - bDecimal = true; - } - } - - return 'num-html'; -} ); diff --git a/dashboard/lib/datatables-plugins/type-detection/numeric-comma.js b/dashboard/lib/datatables-plugins/type-detection/numeric-comma.js deleted file mode 100644 index adfeae6e..00000000 --- a/dashboard/lib/datatables-plugins/type-detection/numeric-comma.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Automatically detect numbers which use a comma in the place of a decimal - * point to allow them to be sorted numerically. - * - * Please note that the 'Formatted numbers' type detection and sorting plug-ins - * offer greater flexibility that this plug-in and should be used in preference - * to this method. - * - * @name Commas for decimal place - * @summary Detect numeric data which uses a comma as the decimal place. - * @deprecated - * @author [Allan Jardine](http://sprymedia.co.uk) - */ - -jQuery.fn.dataTableExt.aTypes.unshift( - function ( sData ) - { - var sValidChars = "0123456789,."; - var Char; - var bDecimal = false; - var iStart=0; - - /* Negative sign is valid - shift the number check start point */ - if ( sData.charAt(0) === '-' ) { - iStart = 1; - } - - /* Check the numeric part */ - for ( var i=iStart ; i<sData.length ; i++ ) - { - Char = sData.charAt(i); - if (sValidChars.indexOf(Char) == -1) - { - return null; - } - } - - return 'numeric-comma'; - } -); diff --git a/dashboard/lib/datatables/jquery.dataTables.css b/dashboard/lib/datatables/jquery.dataTables.css deleted file mode 100644 index eec02ef5..00000000 --- a/dashboard/lib/datatables/jquery.dataTables.css +++ /dev/null @@ -1,455 +0,0 @@ -/* - * Table styles - */ -table.dataTable { - width: 100%; - margin: 0 auto; - clear: both; - border-collapse: separate; - border-spacing: 0; - /* - * Header and footer styles - */ - /* - * Body styles - */ -} -table.dataTable thead th, -table.dataTable tfoot th { - font-weight: bold; -} -table.dataTable thead th, -table.dataTable thead td { - padding: 10px 18px; - border-bottom: 1px solid #111; -} -table.dataTable thead th:active, -table.dataTable thead td:active { - outline: none; -} -table.dataTable tfoot th, -table.dataTable tfoot td { - padding: 10px 18px 6px 18px; - border-top: 1px solid #111; -} -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc { - cursor: pointer; - *cursor: hand; -} -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - background-repeat: no-repeat; - background-position: center right; -} -table.dataTable thead .sorting { - background-image: url("../images/sort_both.png"); -} -table.dataTable thead .sorting_asc { - background-image: url("../images/sort_asc.png"); -} -table.dataTable thead .sorting_desc { - background-image: url("../images/sort_desc.png"); -} -table.dataTable thead .sorting_asc_disabled { - background-image: url("../images/sort_asc_disabled.png"); -} -table.dataTable thead .sorting_desc_disabled { - background-image: url("../images/sort_desc_disabled.png"); -} -table.dataTable tbody tr { - background-color: #ffffff; -} -table.dataTable tbody tr.selected { - background-color: #B0BED9; -} -table.dataTable tbody th, -table.dataTable tbody td { - padding: 8px 10px; -} -table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { - border-top: 1px solid #ddd; -} -table.dataTable.row-border tbody tr:first-child th, -table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, -table.dataTable.display tbody tr:first-child td { - border-top: none; -} -table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { - border-top: 1px solid #ddd; - border-right: 1px solid #ddd; -} -table.dataTable.cell-border tbody tr th:first-child, -table.dataTable.cell-border tbody tr td:first-child { - border-left: 1px solid #ddd; -} -table.dataTable.cell-border tbody tr:first-child th, -table.dataTable.cell-border tbody tr:first-child td { - border-top: none; -} -table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { - background-color: #f9f9f9; -} -table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { - background-color: #abb9d3; -} -table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { - background-color: whitesmoke; -} -table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { - background-color: #a9b7d1; -} -table.dataTable.order-column tbody tr > .sorting_1, -table.dataTable.order-column tbody tr > .sorting_2, -table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, -table.dataTable.display tbody tr > .sorting_2, -table.dataTable.display tbody tr > .sorting_3 { - background-color: #f9f9f9; -} -table.dataTable.order-column tbody tr.selected > .sorting_1, -table.dataTable.order-column tbody tr.selected > .sorting_2, -table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, -table.dataTable.display tbody tr.selected > .sorting_2, -table.dataTable.display tbody tr.selected > .sorting_3 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { - background-color: #f1f1f1; -} -table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { - background-color: #f3f3f3; -} -table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { - background-color: whitesmoke; -} -table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { - background-color: #a6b3cd; -} -table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { - background-color: #a7b5ce; -} -table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { - background-color: #a9b6d0; -} -table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { - background-color: #f9f9f9; -} -table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { - background-color: #fbfbfb; -} -table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { - background-color: #fdfdfd; -} -table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { - background-color: #adbbd6; -} -table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { - background-color: #afbdd8; -} -table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { - background-color: #eaeaea; -} -table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { - background-color: #ebebeb; -} -table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { - background-color: #eeeeee; -} -table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { - background-color: #a1aec7; -} -table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { - background-color: #a2afc8; -} -table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { - background-color: #a4b2cb; -} -table.dataTable.no-footer { - border-bottom: 1px solid #111; -} -table.dataTable.nowrap th, table.dataTable.nowrap td { - white-space: nowrap; -} -table.dataTable.compact thead th, -table.dataTable.compact thead td { - padding: 4px 17px 4px 4px; -} -table.dataTable.compact tfoot th, -table.dataTable.compact tfoot td { - padding: 4px; -} -table.dataTable.compact tbody th, -table.dataTable.compact tbody td { - padding: 4px; -} -table.dataTable th.dt-left, -table.dataTable td.dt-left { - text-align: left; -} -table.dataTable th.dt-center, -table.dataTable td.dt-center, -table.dataTable td.dataTables_empty { - text-align: center; -} -table.dataTable th.dt-right, -table.dataTable td.dt-right { - text-align: right; -} -table.dataTable th.dt-justify, -table.dataTable td.dt-justify { - text-align: justify; -} -table.dataTable th.dt-nowrap, -table.dataTable td.dt-nowrap { - white-space: nowrap; -} -table.dataTable thead th.dt-head-left, -table.dataTable thead td.dt-head-left, -table.dataTable tfoot th.dt-head-left, -table.dataTable tfoot td.dt-head-left { - text-align: left; -} -table.dataTable thead th.dt-head-center, -table.dataTable thead td.dt-head-center, -table.dataTable tfoot th.dt-head-center, -table.dataTable tfoot td.dt-head-center { - text-align: center; -} -table.dataTable thead th.dt-head-right, -table.dataTable thead td.dt-head-right, -table.dataTable tfoot th.dt-head-right, -table.dataTable tfoot td.dt-head-right { - text-align: right; -} -table.dataTable thead th.dt-head-justify, -table.dataTable thead td.dt-head-justify, -table.dataTable tfoot th.dt-head-justify, -table.dataTable tfoot td.dt-head-justify { - text-align: justify; -} -table.dataTable thead th.dt-head-nowrap, -table.dataTable thead td.dt-head-nowrap, -table.dataTable tfoot th.dt-head-nowrap, -table.dataTable tfoot td.dt-head-nowrap { - white-space: nowrap; -} -table.dataTable tbody th.dt-body-left, -table.dataTable tbody td.dt-body-left { - text-align: left; -} -table.dataTable tbody th.dt-body-center, -table.dataTable tbody td.dt-body-center { - text-align: center; -} -table.dataTable tbody th.dt-body-right, -table.dataTable tbody td.dt-body-right { - text-align: right; -} -table.dataTable tbody th.dt-body-justify, -table.dataTable tbody td.dt-body-justify { - text-align: justify; -} -table.dataTable tbody th.dt-body-nowrap, -table.dataTable tbody td.dt-body-nowrap { - white-space: nowrap; -} - -table.dataTable, -table.dataTable th, -table.dataTable td { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* - * Control feature layout - */ -.dataTables_wrapper { - position: relative; - clear: both; - *zoom: 1; - zoom: 1; -} -.dataTables_wrapper .dataTables_length { - float: left; -} -.dataTables_wrapper .dataTables_filter { - float: right; - text-align: right; -} -.dataTables_wrapper .dataTables_filter input { - margin-left: 0.5em; -} -.dataTables_wrapper .dataTables_info { - clear: both; - float: left; - padding-top: 0.755em; -} -.dataTables_wrapper .dataTables_paginate { - float: right; - text-align: right; - padding-top: 0.25em; -} -.dataTables_wrapper .dataTables_paginate .paginate_button { - box-sizing: border-box; - display: inline-block; - min-width: 1.5em; - padding: 0.5em 1em; - margin-left: 2px; - text-align: center; - text-decoration: none !important; - cursor: pointer; - *cursor: hand; - color: #333 !important; - border: 1px solid transparent; -} -.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { - color: #333 !important; - border: 1px solid #cacaca; - background-color: white; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); - /* IE10+ */ - background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { - cursor: default; - color: #666 !important; - border: 1px solid transparent; - background: transparent; - box-shadow: none; -} -.dataTables_wrapper .dataTables_paginate .paginate_button:hover { - color: white !important; - border: 1px solid #111; - background-color: #585858; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #585858 0%, #111 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #585858 0%, #111 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, #585858 0%, #111 100%); - /* IE10+ */ - background: -o-linear-gradient(top, #585858 0%, #111 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, #585858 0%, #111 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_paginate .paginate_button:active { - outline: none; - background-color: #2b2b2b; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* IE10+ */ - background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); - /* W3C */ - box-shadow: inset 0 0 3px #111; -} -.dataTables_wrapper .dataTables_paginate .ellipsis { - padding: 0 1em; -} -.dataTables_wrapper .dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 40px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - text-align: center; - font-size: 1.2em; - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* IE10+ */ - background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Opera 11.10+ */ - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_length, -.dataTables_wrapper .dataTables_filter, -.dataTables_wrapper .dataTables_info, -.dataTables_wrapper .dataTables_processing, -.dataTables_wrapper .dataTables_paginate { - color: #333; -} -.dataTables_wrapper .dataTables_scroll { - clear: both; -} -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { - *margin-top: -1px; - -webkit-overflow-scrolling: touch; -} -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing, -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing { - height: 0; - overflow: hidden; - margin: 0 !important; - padding: 0 !important; -} -.dataTables_wrapper.no-footer .dataTables_scrollBody { - border-bottom: 1px solid #111; -} -.dataTables_wrapper.no-footer div.dataTables_scrollHead table, -.dataTables_wrapper.no-footer div.dataTables_scrollBody table { - border-bottom: none; -} -.dataTables_wrapper:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; -} - -@media screen and (max-width: 767px) { - .dataTables_wrapper .dataTables_info, - .dataTables_wrapper .dataTables_paginate { - float: none; - text-align: center; - } - .dataTables_wrapper .dataTables_paginate { - margin-top: 0.5em; - } -} -@media screen and (max-width: 640px) { - .dataTables_wrapper .dataTables_length, - .dataTables_wrapper .dataTables_filter { - float: none; - text-align: center; - } - .dataTables_wrapper .dataTables_filter { - margin-top: 0.5em; - } -} diff --git a/dashboard/lib/datatables/jquery.dataTables.js b/dashboard/lib/datatables/jquery.dataTables.js deleted file mode 100644 index 89f5d7c0..00000000 --- a/dashboard/lib/datatables/jquery.dataTables.js +++ /dev/null @@ -1,14951 +0,0 @@ -/*! DataTables 1.10.7 - * ©2008-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * @summary DataTables - * @description Paginate, search and order HTML tables - * @version 1.10.7 - * @file jquery.dataTables.js - * @author SpryMedia Ltd (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2008-2014 SpryMedia Ltd. - * - * This source file is free software, available under the following license: - * MIT license - http://datatables.net/license - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -/*jslint evil: true, undef: true, browser: true */ -/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/ - -(/** @lends <global> */function( window, document, undefined ) { - -(function( factory ) { - "use strict"; - - if ( typeof define === 'function' && define.amd ) { - // Define as an AMD module if possible - define( 'datatables', ['jquery'], factory ); - } - else if ( typeof exports === 'object' ) { - // Node/CommonJS - module.exports = factory( require( 'jquery' ) ); - } - else if ( jQuery && !jQuery.fn.dataTable ) { - // Define using browser globals otherwise - // Prevent multiple instantiations if the script is loaded twice - factory( jQuery ); - } -} -(/** @lends <global> */function( $ ) { - "use strict"; - - /** - * DataTables is a plug-in for the jQuery Javascript library. It is a highly - * flexible tool, based upon the foundations of progressive enhancement, - * which will add advanced interaction controls to any HTML table. For a - * full list of features please refer to - * [DataTables.net](href="http://datatables.net). - * - * Note that the `DataTable` object is not a global variable but is aliased - * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may - * be accessed. - * - * @class - * @param {object} [init={}] Configuration object for DataTables. Options - * are defined by {@link DataTable.defaults} - * @requires jQuery 1.7+ - * - * @example - * // Basic initialisation - * $(document).ready( function { - * $('#example').dataTable(); - * } ); - * - * @example - * // Initialisation with configuration options - in this case, disable - * // pagination and sorting. - * $(document).ready( function { - * $('#example').dataTable( { - * "paginate": false, - * "sort": false - * } ); - * } ); - */ - var DataTable; - - - /* - * It is useful to have variables which are scoped locally so only the - * DataTables functions can access them and they don't leak into global space. - * At the same time these functions are often useful over multiple files in the - * core and API, so we list, or at least document, all variables which are used - * by DataTables as private variables here. This also ensures that there is no - * clashing of variable names and that they can easily referenced for reuse. - */ - - - // Defined else where - // _selector_run - // _selector_opts - // _selector_first - // _selector_row_indexes - - var _ext; // DataTable.ext - var _Api; // DataTable.Api - var _api_register; // DataTable.Api.register - var _api_registerPlural; // DataTable.Api.registerPlural - - var _re_dic = {}; - var _re_new_lines = /[\r\n]/g; - var _re_html = /<.*?>/g; - var _re_date_start = /^[\w\+\-]/; - var _re_date_end = /[\w\+\-]$/; - - // Escape regular expression special characters - var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); - - // http://en.wikipedia.org/wiki/Foreign_exchange_market - // - \u20BD - Russian ruble. - // - \u20a9 - South Korean Won - // - \u20BA - Turkish Lira - // - \u20B9 - Indian Rupee - // - R - Brazil (R$) and South Africa - // - fr - Swiss Franc - // - kr - Swedish krona, Norwegian krone and Danish krone - // - \u2009 is thin space and \u202F is narrow no-break space, both used in many - // standards as thousands separators. - var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi; - - - var _empty = function ( d ) { - return !d || d === true || d === '-' ? true : false; - }; - - - var _intVal = function ( s ) { - var integer = parseInt( s, 10 ); - return !isNaN(integer) && isFinite(s) ? integer : null; - }; - - // Convert from a formatted number with characters other than `.` as the - // decimal place, to a Javascript number - var _numToDecimal = function ( num, decimalPoint ) { - // Cache created regular expressions for speed as this function is called often - if ( ! _re_dic[ decimalPoint ] ) { - _re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' ); - } - return typeof num === 'string' && decimalPoint !== '.' ? - num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) : - num; - }; - - - var _isNumber = function ( d, decimalPoint, formatted ) { - var strType = typeof d === 'string'; - - // If empty return immediately so there must be a number if it is a - // formatted string (this stops the string "k", or "kr", etc being detected - // as a formatted number for currency - if ( _empty( d ) ) { - return true; - } - - if ( decimalPoint && strType ) { - d = _numToDecimal( d, decimalPoint ); - } - - if ( formatted && strType ) { - d = d.replace( _re_formatted_numeric, '' ); - } - - return !isNaN( parseFloat(d) ) && isFinite( d ); - }; - - - // A string without HTML in it can be considered to be HTML still - var _isHtml = function ( d ) { - return _empty( d ) || typeof d === 'string'; - }; - - - var _htmlNumeric = function ( d, decimalPoint, formatted ) { - if ( _empty( d ) ) { - return true; - } - - var html = _isHtml( d ); - return ! html ? - null : - _isNumber( _stripHtml( d ), decimalPoint, formatted ) ? - true : - null; - }; - - - var _pluck = function ( a, prop, prop2 ) { - var out = []; - var i=0, ien=a.length; - - // Could have the test in the loop for slightly smaller code, but speed - // is essential here - if ( prop2 !== undefined ) { - for ( ; i<ien ; i++ ) { - if ( a[i] && a[i][ prop ] ) { - out.push( a[i][ prop ][ prop2 ] ); - } - } - } - else { - for ( ; i<ien ; i++ ) { - if ( a[i] ) { - out.push( a[i][ prop ] ); - } - } - } - - return out; - }; - - - // Basically the same as _pluck, but rather than looping over `a` we use `order` - // as the indexes to pick from `a` - var _pluck_order = function ( a, order, prop, prop2 ) - { - var out = []; - var i=0, ien=order.length; - - // Could have the test in the loop for slightly smaller code, but speed - // is essential here - if ( prop2 !== undefined ) { - for ( ; i<ien ; i++ ) { - if ( a[ order[i] ][ prop ] ) { - out.push( a[ order[i] ][ prop ][ prop2 ] ); - } - } - } - else { - for ( ; i<ien ; i++ ) { - out.push( a[ order[i] ][ prop ] ); - } - } - - return out; - }; - - - var _range = function ( len, start ) - { - var out = []; - var end; - - if ( start === undefined ) { - start = 0; - end = len; - } - else { - end = start; - start = len; - } - - for ( var i=start ; i<end ; i++ ) { - out.push( i ); - } - - return out; - }; - - - var _removeEmpty = function ( a ) - { - var out = []; - - for ( var i=0, ien=a.length ; i<ien ; i++ ) { - if ( a[i] ) { // careful - will remove all falsy values! - out.push( a[i] ); - } - } - - return out; - }; - - - var _stripHtml = function ( d ) { - return d.replace( _re_html, '' ); - }; - - - /** - * Find the unique elements in a source array. - * - * @param {array} src Source array - * @return {array} Array of unique items - * @ignore - */ - var _unique = function ( src ) - { - // A faster unique method is to use object keys to identify used values, - // but this doesn't work with arrays or objects, which we must also - // consider. See jsperf.com/compare-array-unique-versions/4 for more - // information. - var - out = [], - val, - i, ien=src.length, - j, k=0; - - again: for ( i=0 ; i<ien ; i++ ) { - val = src[i]; - - for ( j=0 ; j<k ; j++ ) { - if ( out[j] === val ) { - continue again; - } - } - - out.push( val ); - k++; - } - - return out; - }; - - - - /** - * Create a mapping object that allows camel case parameters to be looked up - * for their Hungarian counterparts. The mapping is stored in a private - * parameter called `_hungarianMap` which can be accessed on the source object. - * @param {object} o - * @memberof DataTable#oApi - */ - function _fnHungarianMap ( o ) - { - var - hungarian = 'a aa ai ao as b fn i m o s ', - match, - newKey, - map = {}; - - $.each( o, function (key, val) { - match = key.match(/^([^A-Z]+?)([A-Z])/); - - if ( match && hungarian.indexOf(match[1]+' ') !== -1 ) - { - newKey = key.replace( match[0], match[2].toLowerCase() ); - map[ newKey ] = key; - - if ( match[1] === 'o' ) - { - _fnHungarianMap( o[key] ); - } - } - } ); - - o._hungarianMap = map; - } - - - /** - * Convert from camel case parameters to Hungarian, based on a Hungarian map - * created by _fnHungarianMap. - * @param {object} src The model object which holds all parameters that can be - * mapped. - * @param {object} user The object to convert from camel case to Hungarian. - * @param {boolean} force When set to `true`, properties which already have a - * Hungarian value in the `user` object will be overwritten. Otherwise they - * won't be. - * @memberof DataTable#oApi - */ - function _fnCamelToHungarian ( src, user, force ) - { - if ( ! src._hungarianMap ) { - _fnHungarianMap( src ); - } - - var hungarianKey; - - $.each( user, function (key, val) { - hungarianKey = src._hungarianMap[ key ]; - - if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) ) - { - // For objects, we need to buzz down into the object to copy parameters - if ( hungarianKey.charAt(0) === 'o' ) - { - // Copy the camelCase options over to the hungarian - if ( ! user[ hungarianKey ] ) { - user[ hungarianKey ] = {}; - } - $.extend( true, user[hungarianKey], user[key] ); - - _fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force ); - } - else { - user[hungarianKey] = user[ key ]; - } - } - } ); - } - - - /** - * Language compatibility - when certain options are given, and others aren't, we - * need to duplicate the values over, in order to provide backwards compatibility - * with older language files. - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnLanguageCompat( lang ) - { - var defaults = DataTable.defaults.oLanguage; - var zeroRecords = lang.sZeroRecords; - - /* Backwards compatibility - if there is no sEmptyTable given, then use the same as - * sZeroRecords - assuming that is given. - */ - if ( ! lang.sEmptyTable && zeroRecords && - defaults.sEmptyTable === "No data available in table" ) - { - _fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' ); - } - - /* Likewise with loading records */ - if ( ! lang.sLoadingRecords && zeroRecords && - defaults.sLoadingRecords === "Loading..." ) - { - _fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' ); - } - - // Old parameter name of the thousands separator mapped onto the new - if ( lang.sInfoThousands ) { - lang.sThousands = lang.sInfoThousands; - } - - var decimal = lang.sDecimal; - if ( decimal ) { - _addNumericSort( decimal ); - } - } - - - /** - * Map one parameter onto another - * @param {object} o Object to map - * @param {*} knew The new parameter name - * @param {*} old The old parameter name - */ - var _fnCompatMap = function ( o, knew, old ) { - if ( o[ knew ] !== undefined ) { - o[ old ] = o[ knew ]; - } - }; - - - /** - * Provide backwards compatibility for the main DT options. Note that the new - * options are mapped onto the old parameters, so this is an external interface - * change only. - * @param {object} init Object to map - */ - function _fnCompatOpts ( init ) - { - _fnCompatMap( init, 'ordering', 'bSort' ); - _fnCompatMap( init, 'orderMulti', 'bSortMulti' ); - _fnCompatMap( init, 'orderClasses', 'bSortClasses' ); - _fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' ); - _fnCompatMap( init, 'order', 'aaSorting' ); - _fnCompatMap( init, 'orderFixed', 'aaSortingFixed' ); - _fnCompatMap( init, 'paging', 'bPaginate' ); - _fnCompatMap( init, 'pagingType', 'sPaginationType' ); - _fnCompatMap( init, 'pageLength', 'iDisplayLength' ); - _fnCompatMap( init, 'searching', 'bFilter' ); - - // Column search objects are in an array, so it needs to be converted - // element by element - var searchCols = init.aoSearchCols; - - if ( searchCols ) { - for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) { - if ( searchCols[i] ) { - _fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] ); - } - } - } - } - - - /** - * Provide backwards compatibility for column options. Note that the new options - * are mapped onto the old parameters, so this is an external interface change - * only. - * @param {object} init Object to map - */ - function _fnCompatCols ( init ) - { - _fnCompatMap( init, 'orderable', 'bSortable' ); - _fnCompatMap( init, 'orderData', 'aDataSort' ); - _fnCompatMap( init, 'orderSequence', 'asSorting' ); - _fnCompatMap( init, 'orderDataType', 'sortDataType' ); - - // orderData can be given as an integer - var dataSort = init.aDataSort; - if ( dataSort && ! $.isArray( dataSort ) ) { - init.aDataSort = [ dataSort ]; - } - } - - - /** - * Browser feature detection for capabilities, quirks - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnBrowserDetect( settings ) - { - var browser = settings.oBrowser; - - // Scrolling feature / quirks detection - var n = $('<div/>') - .css( { - position: 'absolute', - top: 0, - left: 0, - height: 1, - width: 1, - overflow: 'hidden' - } ) - .append( - $('<div/>') - .css( { - position: 'absolute', - top: 1, - left: 1, - width: 100, - overflow: 'scroll' - } ) - .append( - $('<div class="test"/>') - .css( { - width: '100%', - height: 10 - } ) - ) - ) - .appendTo( 'body' ); - - var test = n.find('.test'); - - // IE6/7 will oversize a width 100% element inside a scrolling element, to - // include the width of the scrollbar, while other browsers ensure the inner - // element is contained without forcing scrolling - browser.bScrollOversize = test[0].offsetWidth === 100; - - // In rtl text layout, some browsers (most, but not all) will place the - // scrollbar on the left, rather than the right. - browser.bScrollbarLeft = Math.round( test.offset().left ) !== 1; - - n.remove(); - } - - - /** - * Array.prototype reduce[Right] method, used for browsers which don't support - * JS 1.6. Done this way to reduce code size, since we iterate either way - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnReduce ( that, fn, init, start, end, inc ) - { - var - i = start, - value, - isSet = false; - - if ( init !== undefined ) { - value = init; - isSet = true; - } - - while ( i !== end ) { - if ( ! that.hasOwnProperty(i) ) { - continue; - } - - value = isSet ? - fn( value, that[i], i, that ) : - that[i]; - - isSet = true; - i += inc; - } - - return value; - } - - /** - * Add a column to the list used for the table with default values - * @param {object} oSettings dataTables settings object - * @param {node} nTh The th element for this column - * @memberof DataTable#oApi - */ - function _fnAddColumn( oSettings, nTh ) - { - // Add column to aoColumns array - var oDefaults = DataTable.defaults.column; - var iCol = oSettings.aoColumns.length; - var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { - "nTh": nTh ? nTh : document.createElement('th'), - "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', - "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], - "mData": oDefaults.mData ? oDefaults.mData : iCol, - idx: iCol - } ); - oSettings.aoColumns.push( oCol ); - - // Add search object for column specific search. Note that the `searchCols[ iCol ]` - // passed into extend can be undefined. This allows the user to give a default - // with only some of the parameters defined, and also not give a default - var searchCols = oSettings.aoPreSearchCols; - searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); - - // Use the default column options function to initialise classes etc - _fnColumnOptions( oSettings, iCol, $(nTh).data() ); - } - - - /** - * Apply options for a column - * @param {object} oSettings dataTables settings object - * @param {int} iCol column index to consider - * @param {object} oOptions object with sType, bVisible and bSearchable etc - * @memberof DataTable#oApi - */ - function _fnColumnOptions( oSettings, iCol, oOptions ) - { - var oCol = oSettings.aoColumns[ iCol ]; - var oClasses = oSettings.oClasses; - var th = $(oCol.nTh); - - // Try to get width information from the DOM. We can't get it from CSS - // as we'd need to parse the CSS stylesheet. `width` option can override - if ( ! oCol.sWidthOrig ) { - // Width attribute - oCol.sWidthOrig = th.attr('width') || null; - - // Style attribute - var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/); - if ( t ) { - oCol.sWidthOrig = t[1]; - } - } - - /* User specified column options */ - if ( oOptions !== undefined && oOptions !== null ) - { - // Backwards compatibility - _fnCompatCols( oOptions ); - - // Map camel case parameters to their Hungarian counterparts - _fnCamelToHungarian( DataTable.defaults.column, oOptions ); - - /* Backwards compatibility for mDataProp */ - if ( oOptions.mDataProp !== undefined && !oOptions.mData ) - { - oOptions.mData = oOptions.mDataProp; - } - - if ( oOptions.sType ) - { - oCol._sManualType = oOptions.sType; - } - - // `class` is a reserved word in Javascript, so we need to provide - // the ability to use a valid name for the camel case input - if ( oOptions.className && ! oOptions.sClass ) - { - oOptions.sClass = oOptions.className; - } - - $.extend( oCol, oOptions ); - _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); - - /* iDataSort to be applied (backwards compatibility), but aDataSort will take - * priority if defined - */ - if ( oOptions.iDataSort !== undefined ) - { - oCol.aDataSort = [ oOptions.iDataSort ]; - } - _fnMap( oCol, oOptions, "aDataSort" ); - } - - /* Cache the data get and set functions for speed */ - var mDataSrc = oCol.mData; - var mData = _fnGetObjectDataFn( mDataSrc ); - var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; - - var attrTest = function( src ) { - return typeof src === 'string' && src.indexOf('@') !== -1; - }; - oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && ( - attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter) - ); - - oCol.fnGetData = function (rowData, type, meta) { - var innerData = mData( rowData, type, undefined, meta ); - - return mRender && type ? - mRender( innerData, type, rowData, meta ) : - innerData; - }; - oCol.fnSetData = function ( rowData, val, meta ) { - return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta ); - }; - - // Indicate if DataTables should read DOM data as an object or array - // Used in _fnGetRowElements - if ( typeof mDataSrc !== 'number' ) { - oSettings._rowReadObject = true; - } - - /* Feature sorting overrides column specific when off */ - if ( !oSettings.oFeatures.bSort ) - { - oCol.bSortable = false; - th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called - } - - /* Check that the class assignment is correct for sorting */ - var bAsc = $.inArray('asc', oCol.asSorting) !== -1; - var bDesc = $.inArray('desc', oCol.asSorting) !== -1; - if ( !oCol.bSortable || (!bAsc && !bDesc) ) - { - oCol.sSortingClass = oClasses.sSortableNone; - oCol.sSortingClassJUI = ""; - } - else if ( bAsc && !bDesc ) - { - oCol.sSortingClass = oClasses.sSortableAsc; - oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed; - } - else if ( !bAsc && bDesc ) - { - oCol.sSortingClass = oClasses.sSortableDesc; - oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed; - } - else - { - oCol.sSortingClass = oClasses.sSortable; - oCol.sSortingClassJUI = oClasses.sSortJUI; - } - } - - - /** - * Adjust the table column widths for new data. Note: you would probably want to - * do a redraw after calling this function! - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnAdjustColumnSizing ( settings ) - { - /* Not interested in doing column width calculation if auto-width is disabled */ - if ( settings.oFeatures.bAutoWidth !== false ) - { - var columns = settings.aoColumns; - - _fnCalculateColumnWidths( settings ); - for ( var i=0 , iLen=columns.length ; i<iLen ; i++ ) - { - columns[i].nTh.style.width = columns[i].sWidth; - } - } - - var scroll = settings.oScroll; - if ( scroll.sY !== '' || scroll.sX !== '') - { - _fnScrollDraw( settings ); - } - - _fnCallbackFire( settings, null, 'column-sizing', [settings] ); - } - - - /** - * Covert the index of a visible column to the index in the data array (take account - * of hidden columns) - * @param {object} oSettings dataTables settings object - * @param {int} iMatch Visible column index to lookup - * @returns {int} i the data index - * @memberof DataTable#oApi - */ - function _fnVisibleToColumnIndex( oSettings, iMatch ) - { - var aiVis = _fnGetColumns( oSettings, 'bVisible' ); - - return typeof aiVis[iMatch] === 'number' ? - aiVis[iMatch] : - null; - } - - - /** - * Covert the index of an index in the data array and convert it to the visible - * column index (take account of hidden columns) - * @param {int} iMatch Column index to lookup - * @param {object} oSettings dataTables settings object - * @returns {int} i the data index - * @memberof DataTable#oApi - */ - function _fnColumnIndexToVisible( oSettings, iMatch ) - { - var aiVis = _fnGetColumns( oSettings, 'bVisible' ); - var iPos = $.inArray( iMatch, aiVis ); - - return iPos !== -1 ? iPos : null; - } - - - /** - * Get the number of visible columns - * @param {object} oSettings dataTables settings object - * @returns {int} i the number of visible columns - * @memberof DataTable#oApi - */ - function _fnVisbleColumns( oSettings ) - { - return _fnGetColumns( oSettings, 'bVisible' ).length; - } - - - /** - * Get an array of column indexes that match a given property - * @param {object} oSettings dataTables settings object - * @param {string} sParam Parameter in aoColumns to look for - typically - * bVisible or bSearchable - * @returns {array} Array of indexes with matched properties - * @memberof DataTable#oApi - */ - function _fnGetColumns( oSettings, sParam ) - { - var a = []; - - $.map( oSettings.aoColumns, function(val, i) { - if ( val[sParam] ) { - a.push( i ); - } - } ); - - return a; - } - - - /** - * Calculate the 'type' of a column - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnColumnTypes ( settings ) - { - var columns = settings.aoColumns; - var data = settings.aoData; - var types = DataTable.ext.type.detect; - var i, ien, j, jen, k, ken; - var col, cell, detectedType, cache; - - // For each column, spin over the - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - col = columns[i]; - cache = []; - - if ( ! col.sType && col._sManualType ) { - col.sType = col._sManualType; - } - else if ( ! col.sType ) { - for ( j=0, jen=types.length ; j<jen ; j++ ) { - for ( k=0, ken=data.length ; k<ken ; k++ ) { - // Use a cache array so we only need to get the type data - // from the formatter once (when using multiple detectors) - if ( cache[k] === undefined ) { - cache[k] = _fnGetCellData( settings, k, i, 'type' ); - } - - detectedType = types[j]( cache[k], settings ); - - // If null, then this type can't apply to this column, so - // rather than testing all cells, break out. There is an - // exception for the last type which is `html`. We need to - // scan all rows since it is possible to mix string and HTML - // types - if ( ! detectedType && j !== types.length-1 ) { - break; - } - - // Only a single match is needed for html type since it is - // bottom of the pile and very similar to string - if ( detectedType === 'html' ) { - break; - } - } - - // Type is valid for all data points in the column - use this - // type - if ( detectedType ) { - col.sType = detectedType; - break; - } - } - - // Fall back - if no type was detected, always use string - if ( ! col.sType ) { - col.sType = 'string'; - } - } - } - } - - - /** - * Take the column definitions and static columns arrays and calculate how - * they relate to column indexes. The callback function will then apply the - * definition found for a column to a suitable configuration object. - * @param {object} oSettings dataTables settings object - * @param {array} aoColDefs The aoColumnDefs array that is to be applied - * @param {array} aoCols The aoColumns array that defines columns individually - * @param {function} fn Callback function - takes two parameters, the calculated - * column index and the definition for that column. - * @memberof DataTable#oApi - */ - function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn ) - { - var i, iLen, j, jLen, k, kLen, def; - var columns = oSettings.aoColumns; - - // Column definitions with aTargets - if ( aoColDefs ) - { - /* Loop over the definitions array - loop in reverse so first instance has priority */ - for ( i=aoColDefs.length-1 ; i>=0 ; i-- ) - { - def = aoColDefs[i]; - - /* Each definition can target multiple columns, as it is an array */ - var aTargets = def.targets !== undefined ? - def.targets : - def.aTargets; - - if ( ! $.isArray( aTargets ) ) - { - aTargets = [ aTargets ]; - } - - for ( j=0, jLen=aTargets.length ; j<jLen ; j++ ) - { - if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 ) - { - /* Add columns that we don't yet know about */ - while( columns.length <= aTargets[j] ) - { - _fnAddColumn( oSettings ); - } - - /* Integer, basic index */ - fn( aTargets[j], def ); - } - else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 ) - { - /* Negative integer, right to left column counting */ - fn( columns.length+aTargets[j], def ); - } - else if ( typeof aTargets[j] === 'string' ) - { - /* Class name matching on TH element */ - for ( k=0, kLen=columns.length ; k<kLen ; k++ ) - { - if ( aTargets[j] == "_all" || - $(columns[k].nTh).hasClass( aTargets[j] ) ) - { - fn( k, def ); - } - } - } - } - } - } - - // Statically defined columns array - if ( aoCols ) - { - for ( i=0, iLen=aoCols.length ; i<iLen ; i++ ) - { - fn( i, aoCols[i] ); - } - } - } - - /** - * Add a data array to the table, creating DOM node etc. This is the parallel to - * _fnGatherData, but for adding rows from a Javascript source, rather than a - * DOM source. - * @param {object} oSettings dataTables settings object - * @param {array} aData data array to be added - * @param {node} [nTr] TR element to add to the table - optional. If not given, - * DataTables will create a row automatically - * @param {array} [anTds] Array of TD|TH elements for the row - must be given - * if nTr is. - * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed - * @memberof DataTable#oApi - */ - function _fnAddData ( oSettings, aDataIn, nTr, anTds ) - { - /* Create the object for storing information about this new row */ - var iRow = oSettings.aoData.length; - var oData = $.extend( true, {}, DataTable.models.oRow, { - src: nTr ? 'dom' : 'data' - } ); - - oData._aData = aDataIn; - oSettings.aoData.push( oData ); - - /* Create the cells */ - var nTd, sThisType; - var columns = oSettings.aoColumns; - for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) - { - // When working with a row, the data source object must be populated. In - // all other cases, the data source object is already populated, so we - // don't overwrite it, which might break bindings etc - if ( nTr ) { - _fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) ); - } - columns[i].sType = null; - } - - /* Add to the display array */ - oSettings.aiDisplayMaster.push( iRow ); - - /* Create the DOM information, or register it if already present */ - if ( nTr || ! oSettings.oFeatures.bDeferRender ) - { - _fnCreateTr( oSettings, iRow, nTr, anTds ); - } - - return iRow; - } - - - /** - * Add one or more TR elements to the table. Generally we'd expect to - * use this for reading data from a DOM sourced table, but it could be - * used for an TR element. Note that if a TR is given, it is used (i.e. - * it is not cloned). - * @param {object} settings dataTables settings object - * @param {array|node|jQuery} trs The TR element(s) to add to the table - * @returns {array} Array of indexes for the added rows - * @memberof DataTable#oApi - */ - function _fnAddTr( settings, trs ) - { - var row; - - // Allow an individual node to be passed in - if ( ! (trs instanceof $) ) { - trs = $(trs); - } - - return trs.map( function (i, el) { - row = _fnGetRowElements( settings, el ); - return _fnAddData( settings, row.data, el, row.cells ); - } ); - } - - - /** - * Take a TR element and convert it to an index in aoData - * @param {object} oSettings dataTables settings object - * @param {node} n the TR element to find - * @returns {int} index if the node is found, null if not - * @memberof DataTable#oApi - */ - function _fnNodeToDataIndex( oSettings, n ) - { - return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null; - } - - - /** - * Take a TD element and convert it into a column data index (not the visible index) - * @param {object} oSettings dataTables settings object - * @param {int} iRow The row number the TD/TH can be found in - * @param {node} n The TD/TH element to find - * @returns {int} index if the node is found, -1 if not - * @memberof DataTable#oApi - */ - function _fnNodeToColumnIndex( oSettings, iRow, n ) - { - return $.inArray( n, oSettings.aoData[ iRow ].anCells ); - } - - - /** - * Get the data for a given cell from the internal cache, taking into account data mapping - * @param {object} settings dataTables settings object - * @param {int} rowIdx aoData row id - * @param {int} colIdx Column index - * @param {string} type data get type ('display', 'type' 'filter' 'sort') - * @returns {*} Cell data - * @memberof DataTable#oApi - */ - function _fnGetCellData( settings, rowIdx, colIdx, type ) - { - var draw = settings.iDraw; - var col = settings.aoColumns[colIdx]; - var rowData = settings.aoData[rowIdx]._aData; - var defaultContent = col.sDefaultContent; - var cellData = col.fnGetData( rowData, type, { - settings: settings, - row: rowIdx, - col: colIdx - } ); - - if ( cellData === undefined ) { - if ( settings.iDrawError != draw && defaultContent === null ) { - _fnLog( settings, 0, "Requested unknown parameter "+ - (typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+ - " for row "+rowIdx, 4 ); - settings.iDrawError = draw; - } - return defaultContent; - } - - /* When the data source is null, we can use default column data */ - if ( (cellData === rowData || cellData === null) && defaultContent !== null ) { - cellData = defaultContent; - } - else if ( typeof cellData === 'function' ) { - // If the data source is a function, then we run it and use the return, - // executing in the scope of the data object (for instances) - return cellData.call( rowData ); - } - - if ( cellData === null && type == 'display' ) { - return ''; - } - return cellData; - } - - - /** - * Set the value for a specific cell, into the internal data cache - * @param {object} settings dataTables settings object - * @param {int} rowIdx aoData row id - * @param {int} colIdx Column index - * @param {*} val Value to set - * @memberof DataTable#oApi - */ - function _fnSetCellData( settings, rowIdx, colIdx, val ) - { - var col = settings.aoColumns[colIdx]; - var rowData = settings.aoData[rowIdx]._aData; - - col.fnSetData( rowData, val, { - settings: settings, - row: rowIdx, - col: colIdx - } ); - } - - - // Private variable that is used to match action syntax in the data property object - var __reArray = /\[.*?\]$/; - var __reFn = /\(\)$/; - - /** - * Split string on periods, taking into account escaped periods - * @param {string} str String to split - * @return {array} Split string - */ - function _fnSplitObjNotation( str ) - { - return $.map( str.match(/(\\.|[^\.])+/g), function ( s ) { - return s.replace(/\\./g, '.'); - } ); - } - - - /** - * Return a function that can be used to get data from a source object, taking - * into account the ability to use nested objects as a source - * @param {string|int|function} mSource The data source for the object - * @returns {function} Data get function - * @memberof DataTable#oApi - */ - function _fnGetObjectDataFn( mSource ) - { - if ( $.isPlainObject( mSource ) ) - { - /* Build an object of get functions, and wrap them in a single call */ - var o = {}; - $.each( mSource, function (key, val) { - if ( val ) { - o[key] = _fnGetObjectDataFn( val ); - } - } ); - - return function (data, type, row, meta) { - var t = o[type] || o._; - return t !== undefined ? - t(data, type, row, meta) : - data; - }; - } - else if ( mSource === null ) - { - /* Give an empty string for rendering / sorting etc */ - return function (data) { // type, row and meta also passed, but not used - return data; - }; - } - else if ( typeof mSource === 'function' ) - { - return function (data, type, row, meta) { - return mSource( data, type, row, meta ); - }; - } - else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || - mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) - { - /* If there is a . in the source string then the data source is in a - * nested object so we loop over the data for each level to get the next - * level down. On each loop we test for undefined, and if found immediately - * return. This allows entire objects to be missing and sDefaultContent to - * be used if defined, rather than throwing an error - */ - var fetchData = function (data, type, src) { - var arrayNotation, funcNotation, out, innerSrc; - - if ( src !== "" ) - { - var a = _fnSplitObjNotation( src ); - - for ( var i=0, iLen=a.length ; i<iLen ; i++ ) - { - // Check if we are dealing with special notation - arrayNotation = a[i].match(__reArray); - funcNotation = a[i].match(__reFn); - - if ( arrayNotation ) - { - // Array notation - a[i] = a[i].replace(__reArray, ''); - - // Condition allows simply [] to be passed in - if ( a[i] !== "" ) { - data = data[ a[i] ]; - } - out = []; - - // Get the remainder of the nested object to get - a.splice( 0, i+1 ); - innerSrc = a.join('.'); - - // Traverse each entry in the array getting the properties requested - for ( var j=0, jLen=data.length ; j<jLen ; j++ ) { - out.push( fetchData( data[j], type, innerSrc ) ); - } - - // If a string is given in between the array notation indicators, that - // is used to join the strings together, otherwise an array is returned - var join = arrayNotation[0].substring(1, arrayNotation[0].length-1); - data = (join==="") ? out : out.join(join); - - // The inner call to fetchData has already traversed through the remainder - // of the source requested, so we exit from the loop - break; - } - else if ( funcNotation ) - { - // Function call - a[i] = a[i].replace(__reFn, ''); - data = data[ a[i] ](); - continue; - } - - if ( data === null || data[ a[i] ] === undefined ) - { - return undefined; - } - data = data[ a[i] ]; - } - } - - return data; - }; - - return function (data, type) { // row and meta also passed, but not used - return fetchData( data, type, mSource ); - }; - } - else - { - /* Array or flat object mapping */ - return function (data, type) { // row and meta also passed, but not used - return data[mSource]; - }; - } - } - - - /** - * Return a function that can be used to set data from a source object, taking - * into account the ability to use nested objects as a source - * @param {string|int|function} mSource The data source for the object - * @returns {function} Data set function - * @memberof DataTable#oApi - */ - function _fnSetObjectDataFn( mSource ) - { - if ( $.isPlainObject( mSource ) ) - { - /* Unlike get, only the underscore (global) option is used for for - * setting data since we don't know the type here. This is why an object - * option is not documented for `mData` (which is read/write), but it is - * for `mRender` which is read only. - */ - return _fnSetObjectDataFn( mSource._ ); - } - else if ( mSource === null ) - { - /* Nothing to do when the data source is null */ - return function () {}; - } - else if ( typeof mSource === 'function' ) - { - return function (data, val, meta) { - mSource( data, 'set', val, meta ); - }; - } - else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || - mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) - { - /* Like the get, we need to get data from a nested object */ - var setData = function (data, val, src) { - var a = _fnSplitObjNotation( src ), b; - var aLast = a[a.length-1]; - var arrayNotation, funcNotation, o, innerSrc; - - for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) - { - // Check if we are dealing with an array notation request - arrayNotation = a[i].match(__reArray); - funcNotation = a[i].match(__reFn); - - if ( arrayNotation ) - { - a[i] = a[i].replace(__reArray, ''); - data[ a[i] ] = []; - - // Get the remainder of the nested object to set so we can recurse - b = a.slice(); - b.splice( 0, i+1 ); - innerSrc = b.join('.'); - - // Traverse each entry in the array setting the properties requested - for ( var j=0, jLen=val.length ; j<jLen ; j++ ) - { - o = {}; - setData( o, val[j], innerSrc ); - data[ a[i] ].push( o ); - } - - // The inner call to setData has already traversed through the remainder - // of the source and has set the data, thus we can exit here - return; - } - else if ( funcNotation ) - { - // Function call - a[i] = a[i].replace(__reFn, ''); - data = data[ a[i] ]( val ); - } - - // If the nested object doesn't currently exist - since we are - // trying to set the value - create it - if ( data[ a[i] ] === null || data[ a[i] ] === undefined ) - { - data[ a[i] ] = {}; - } - data = data[ a[i] ]; - } - - // Last item in the input - i.e, the actual set - if ( aLast.match(__reFn ) ) - { - // Function call - data = data[ aLast.replace(__reFn, '') ]( val ); - } - else - { - // If array notation is used, we just want to strip it and use the property name - // and assign the value. If it isn't used, then we get the result we want anyway - data[ aLast.replace(__reArray, '') ] = val; - } - }; - - return function (data, val) { // meta is also passed in, but not used - return setData( data, val, mSource ); - }; - } - else - { - /* Array or flat object mapping */ - return function (data, val) { // meta is also passed in, but not used - data[mSource] = val; - }; - } - } - - - /** - * Return an array with the full table data - * @param {object} oSettings dataTables settings object - * @returns array {array} aData Master data array - * @memberof DataTable#oApi - */ - function _fnGetDataMaster ( settings ) - { - return _pluck( settings.aoData, '_aData' ); - } - - - /** - * Nuke the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnClearTable( settings ) - { - settings.aoData.length = 0; - settings.aiDisplayMaster.length = 0; - settings.aiDisplay.length = 0; - } - - - /** - * Take an array of integers (index array) and remove a target integer (value - not - * the key!) - * @param {array} a Index array to target - * @param {int} iTarget value to find - * @memberof DataTable#oApi - */ - function _fnDeleteIndex( a, iTarget, splice ) - { - var iTargetIndex = -1; - - for ( var i=0, iLen=a.length ; i<iLen ; i++ ) - { - if ( a[i] == iTarget ) - { - iTargetIndex = i; - } - else if ( a[i] > iTarget ) - { - a[i]--; - } - } - - if ( iTargetIndex != -1 && splice === undefined ) - { - a.splice( iTargetIndex, 1 ); - } - } - - - /** - * Mark cached data as invalid such that a re-read of the data will occur when - * the cached data is next requested. Also update from the data source object. - * - * @param {object} settings DataTables settings object - * @param {int} rowIdx Row index to invalidate - * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom' - * or 'data' - * @param {int} [colIdx] Column index to invalidate. If undefined the whole - * row will be invalidated - * @memberof DataTable#oApi - * - * @todo For the modularisation of v1.11 this will need to become a callback, so - * the sort and filter methods can subscribe to it. That will required - * initialisation options for sorting, which is why it is not already baked in - */ - function _fnInvalidate( settings, rowIdx, src, colIdx ) - { - var row = settings.aoData[ rowIdx ]; - var i, ien; - var cellWrite = function ( cell, col ) { - // This is very frustrating, but in IE if you just write directly - // to innerHTML, and elements that are overwritten are GC'ed, - // even if there is a reference to them elsewhere - while ( cell.childNodes.length ) { - cell.removeChild( cell.firstChild ); - } - - cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' ); - }; - - // Are we reading last data from DOM or the data object? - if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) { - // Read the data from the DOM - row._aData = _fnGetRowElements( - settings, row, colIdx, colIdx === undefined ? undefined : row._aData - ) - .data; - } - else { - // Reading from data object, update the DOM - var cells = row.anCells; - - if ( cells ) { - if ( colIdx !== undefined ) { - cellWrite( cells[colIdx], colIdx ); - } - else { - for ( i=0, ien=cells.length ; i<ien ; i++ ) { - cellWrite( cells[i], i ); - } - } - } - } - - // For both row and cell invalidation, the cached data for sorting and - // filtering is nulled out - row._aSortData = null; - row._aFilterData = null; - - // Invalidate the type for a specific column (if given) or all columns since - // the data might have changed - var cols = settings.aoColumns; - if ( colIdx !== undefined ) { - cols[ colIdx ].sType = null; - } - else { - for ( i=0, ien=cols.length ; i<ien ; i++ ) { - cols[i].sType = null; - } - - // Update DataTables special `DT_*` attributes for the row - _fnRowAttributes( row ); - } - } - - - /** - * Build a data source object from an HTML row, reading the contents of the - * cells that are in the row. - * - * @param {object} settings DataTables settings object - * @param {node|object} TR element from which to read data or existing row - * object from which to re-read the data from the cells - * @param {int} [colIdx] Optional column index - * @param {array|object} [d] Data source object. If `colIdx` is given then this - * parameter should also be given and will be used to write the data into. - * Only the column in question will be written - * @returns {object} Object with two parameters: `data` the data read, in - * document order, and `cells` and array of nodes (they can be useful to the - * caller, so rather than needing a second traversal to get them, just return - * them from here). - * @memberof DataTable#oApi - */ - function _fnGetRowElements( settings, row, colIdx, d ) - { - var - tds = [], - td = row.firstChild, - name, col, o, i=0, contents, - columns = settings.aoColumns, - objectRead = settings._rowReadObject; - - // Allow the data object to be passed in, or construct - d = d || objectRead ? {} : []; - - var attr = function ( str, td ) { - if ( typeof str === 'string' ) { - var idx = str.indexOf('@'); - - if ( idx !== -1 ) { - var attr = str.substring( idx+1 ); - var setter = _fnSetObjectDataFn( str ); - setter( d, td.getAttribute( attr ) ); - } - } - }; - - // Read data from a cell and store into the data object - var cellProcess = function ( cell ) { - if ( colIdx === undefined || colIdx === i ) { - col = columns[i]; - contents = $.trim(cell.innerHTML); - - if ( col && col._bAttrSrc ) { - var setter = _fnSetObjectDataFn( col.mData._ ); - setter( d, contents ); - - attr( col.mData.sort, cell ); - attr( col.mData.type, cell ); - attr( col.mData.filter, cell ); - } - else { - // Depending on the `data` option for the columns the data can - // be read to either an object or an array. - if ( objectRead ) { - if ( ! col._setter ) { - // Cache the setter function - col._setter = _fnSetObjectDataFn( col.mData ); - } - col._setter( d, contents ); - } - else { - d[i] = contents; - } - } - } - - i++; - }; - - if ( td ) { - // `tr` element was passed in - while ( td ) { - name = td.nodeName.toUpperCase(); - - if ( name == "TD" || name == "TH" ) { - cellProcess( td ); - tds.push( td ); - } - - td = td.nextSibling; - } - } - else { - // Existing row object passed in - tds = row.anCells; - - for ( var j=0, jen=tds.length ; j<jen ; j++ ) { - cellProcess( tds[j] ); - } - } - - return { - data: d, - cells: tds - }; - } - /** - * Create a new TR element (and it's TD children) for a row - * @param {object} oSettings dataTables settings object - * @param {int} iRow Row to consider - * @param {node} [nTrIn] TR element to add to the table - optional. If not given, - * DataTables will create a row automatically - * @param {array} [anTds] Array of TD|TH elements for the row - must be given - * if nTr is. - * @memberof DataTable#oApi - */ - function _fnCreateTr ( oSettings, iRow, nTrIn, anTds ) - { - var - row = oSettings.aoData[iRow], - rowData = row._aData, - cells = [], - nTr, nTd, oCol, - i, iLen; - - if ( row.nTr === null ) - { - nTr = nTrIn || document.createElement('tr'); - - row.nTr = nTr; - row.anCells = cells; - - /* Use a private property on the node to allow reserve mapping from the node - * to the aoData array for fast look up - */ - nTr._DT_RowIndex = iRow; - - /* Special parameters can be given by the data source to be used on the row */ - _fnRowAttributes( row ); - - /* Process each column */ - for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ ) - { - oCol = oSettings.aoColumns[i]; - - nTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType ); - cells.push( nTd ); - - // Need to create the HTML if new, or if a rendering function is defined - if ( !nTrIn || oCol.mRender || oCol.mData !== i ) - { - nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' ); - } - - /* Add user defined class */ - if ( oCol.sClass ) - { - nTd.className += ' '+oCol.sClass; - } - - // Visibility - add or remove as required - if ( oCol.bVisible && ! nTrIn ) - { - nTr.appendChild( nTd ); - } - else if ( ! oCol.bVisible && nTrIn ) - { - nTd.parentNode.removeChild( nTd ); - } - - if ( oCol.fnCreatedCell ) - { - oCol.fnCreatedCell.call( oSettings.oInstance, - nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i - ); - } - } - - _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] ); - } - - // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved - // and deployed - row.nTr.setAttribute( 'role', 'row' ); - } - - - /** - * Add attributes to a row based on the special `DT_*` parameters in a data - * source object. - * @param {object} DataTables row object for the row to be modified - * @memberof DataTable#oApi - */ - function _fnRowAttributes( row ) - { - var tr = row.nTr; - var data = row._aData; - - if ( tr ) { - if ( data.DT_RowId ) { - tr.id = data.DT_RowId; - } - - if ( data.DT_RowClass ) { - // Remove any classes added by DT_RowClass before - var a = data.DT_RowClass.split(' '); - row.__rowc = row.__rowc ? - _unique( row.__rowc.concat( a ) ) : - a; - - $(tr) - .removeClass( row.__rowc.join(' ') ) - .addClass( data.DT_RowClass ); - } - - if ( data.DT_RowAttr ) { - $(tr).attr( data.DT_RowAttr ); - } - - if ( data.DT_RowData ) { - $(tr).data( data.DT_RowData ); - } - } - } - - - /** - * Create the HTML header for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnBuildHead( oSettings ) - { - var i, ien, cell, row, column; - var thead = oSettings.nTHead; - var tfoot = oSettings.nTFoot; - var createHeader = $('th, td', thead).length === 0; - var classes = oSettings.oClasses; - var columns = oSettings.aoColumns; - - if ( createHeader ) { - row = $('<tr/>').appendTo( thead ); - } - - for ( i=0, ien=columns.length ; i<ien ; i++ ) { - column = columns[i]; - cell = $( column.nTh ).addClass( column.sClass ); - - if ( createHeader ) { - cell.appendTo( row ); - } - - // 1.11 move into sorting - if ( oSettings.oFeatures.bSort ) { - cell.addClass( column.sSortingClass ); - - if ( column.bSortable !== false ) { - cell - .attr( 'tabindex', oSettings.iTabIndex ) - .attr( 'aria-controls', oSettings.sTableId ); - - _fnSortAttachListener( oSettings, column.nTh, i ); - } - } - - if ( column.sTitle != cell.html() ) { - cell.html( column.sTitle ); - } - - _fnRenderer( oSettings, 'header' )( - oSettings, cell, column, classes - ); - } - - if ( createHeader ) { - _fnDetectHeader( oSettings.aoHeader, thead ); - } - - /* ARIA role for the rows */ - $(thead).find('>tr').attr('role', 'row'); - - /* Deal with the footer - add classes if required */ - $(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH ); - $(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH ); - - // Cache the footer cells. Note that we only take the cells from the first - // row in the footer. If there is more than one row the user wants to - // interact with, they need to use the table().foot() method. Note also this - // allows cells to be used for multiple columns using colspan - if ( tfoot !== null ) { - var cells = oSettings.aoFooter[0]; - - for ( i=0, ien=cells.length ; i<ien ; i++ ) { - column = columns[i]; - column.nTf = cells[i].cell; - - if ( column.sClass ) { - $(column.nTf).addClass( column.sClass ); - } - } - } - } - - - /** - * Draw the header (or footer) element based on the column visibility states. The - * methodology here is to use the layout array from _fnDetectHeader, modified for - * the instantaneous column visibility, to construct the new layout. The grid is - * traversed over cell at a time in a rows x columns grid fashion, although each - * cell insert can cover multiple elements in the grid - which is tracks using the - * aApplied array. Cell inserts in the grid will only occur where there isn't - * already a cell in that position. - * @param {object} oSettings dataTables settings object - * @param array {objects} aoSource Layout array from _fnDetectHeader - * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, - * @memberof DataTable#oApi - */ - function _fnDrawHead( oSettings, aoSource, bIncludeHidden ) - { - var i, iLen, j, jLen, k, kLen, n, nLocalTr; - var aoLocal = []; - var aApplied = []; - var iColumns = oSettings.aoColumns.length; - var iRowspan, iColspan; - - if ( ! aoSource ) - { - return; - } - - if ( bIncludeHidden === undefined ) - { - bIncludeHidden = false; - } - - /* Make a copy of the master layout array, but without the visible columns in it */ - for ( i=0, iLen=aoSource.length ; i<iLen ; i++ ) - { - aoLocal[i] = aoSource[i].slice(); - aoLocal[i].nTr = aoSource[i].nTr; - - /* Remove any columns which are currently hidden */ - for ( j=iColumns-1 ; j>=0 ; j-- ) - { - if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden ) - { - aoLocal[i].splice( j, 1 ); - } - } - - /* Prep the applied array - it needs an element for each row */ - aApplied.push( [] ); - } - - for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ ) - { - nLocalTr = aoLocal[i].nTr; - - /* All cells are going to be replaced, so empty out the row */ - if ( nLocalTr ) - { - while( (n = nLocalTr.firstChild) ) - { - nLocalTr.removeChild( n ); - } - } - - for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ ) - { - iRowspan = 1; - iColspan = 1; - - /* Check to see if there is already a cell (row/colspan) covering our target - * insert point. If there is, then there is nothing to do. - */ - if ( aApplied[i][j] === undefined ) - { - nLocalTr.appendChild( aoLocal[i][j].cell ); - aApplied[i][j] = 1; - - /* Expand the cell to cover as many rows as needed */ - while ( aoLocal[i+iRowspan] !== undefined && - aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell ) - { - aApplied[i+iRowspan][j] = 1; - iRowspan++; - } - - /* Expand the cell to cover as many columns as needed */ - while ( aoLocal[i][j+iColspan] !== undefined && - aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell ) - { - /* Must update the applied array over the rows for the columns */ - for ( k=0 ; k<iRowspan ; k++ ) - { - aApplied[i+k][j+iColspan] = 1; - } - iColspan++; - } - - /* Do the actual expansion in the DOM */ - $(aoLocal[i][j].cell) - .attr('rowspan', iRowspan) - .attr('colspan', iColspan); - } - } - } - } - - - /** - * Insert the required TR nodes into the table for display - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnDraw( oSettings ) - { - /* Provide a pre-callback function which can be used to cancel the draw is false is returned */ - var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] ); - if ( $.inArray( false, aPreDraw ) !== -1 ) - { - _fnProcessingDisplay( oSettings, false ); - return; - } - - var i, iLen, n; - var anRows = []; - var iRowCount = 0; - var asStripeClasses = oSettings.asStripeClasses; - var iStripes = asStripeClasses.length; - var iOpenRows = oSettings.aoOpenRows.length; - var oLang = oSettings.oLanguage; - var iInitDisplayStart = oSettings.iInitDisplayStart; - var bServerSide = _fnDataSource( oSettings ) == 'ssp'; - var aiDisplay = oSettings.aiDisplay; - - oSettings.bDrawing = true; - - /* Check and see if we have an initial draw position from state saving */ - if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 ) - { - oSettings._iDisplayStart = bServerSide ? - iInitDisplayStart : - iInitDisplayStart >= oSettings.fnRecordsDisplay() ? - 0 : - iInitDisplayStart; - - oSettings.iInitDisplayStart = -1; - } - - var iDisplayStart = oSettings._iDisplayStart; - var iDisplayEnd = oSettings.fnDisplayEnd(); - - /* Server-side processing draw intercept */ - if ( oSettings.bDeferLoading ) - { - oSettings.bDeferLoading = false; - oSettings.iDraw++; - _fnProcessingDisplay( oSettings, false ); - } - else if ( !bServerSide ) - { - oSettings.iDraw++; - } - else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) ) - { - return; - } - - if ( aiDisplay.length !== 0 ) - { - var iStart = bServerSide ? 0 : iDisplayStart; - var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd; - - for ( var j=iStart ; j<iEnd ; j++ ) - { - var iDataIndex = aiDisplay[j]; - var aoData = oSettings.aoData[ iDataIndex ]; - if ( aoData.nTr === null ) - { - _fnCreateTr( oSettings, iDataIndex ); - } - - var nRow = aoData.nTr; - - /* Remove the old striping classes and then add the new one */ - if ( iStripes !== 0 ) - { - var sStripe = asStripeClasses[ iRowCount % iStripes ]; - if ( aoData._sRowStripe != sStripe ) - { - $(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe ); - aoData._sRowStripe = sStripe; - } - } - - // Row callback functions - might want to manipulate the row - // iRowCount and j are not currently documented. Are they at all - // useful? - _fnCallbackFire( oSettings, 'aoRowCallback', null, - [nRow, aoData._aData, iRowCount, j] ); - - anRows.push( nRow ); - iRowCount++; - } - } - else - { - /* Table is empty - create a row with an empty message in it */ - var sZero = oLang.sZeroRecords; - if ( oSettings.iDraw == 1 && _fnDataSource( oSettings ) == 'ajax' ) - { - sZero = oLang.sLoadingRecords; - } - else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 ) - { - sZero = oLang.sEmptyTable; - } - - anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } ) - .append( $('<td />', { - 'valign': 'top', - 'colSpan': _fnVisbleColumns( oSettings ), - 'class': oSettings.oClasses.sRowEmpty - } ).html( sZero ) )[0]; - } - - /* Header and footer callbacks */ - _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], - _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); - - _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], - _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); - - var body = $(oSettings.nTBody); - - body.children().detach(); - body.append( $(anRows) ); - - /* Call all required callback functions for the end of a draw */ - _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] ); - - /* Draw is complete, sorting and filtering must be as well */ - oSettings.bSorted = false; - oSettings.bFiltered = false; - oSettings.bDrawing = false; - } - - - /** - * Redraw the table - taking account of the various features which are enabled - * @param {object} oSettings dataTables settings object - * @param {boolean} [holdPosition] Keep the current paging position. By default - * the paging is reset to the first page - * @memberof DataTable#oApi - */ - function _fnReDraw( settings, holdPosition ) - { - var - features = settings.oFeatures, - sort = features.bSort, - filter = features.bFilter; - - if ( sort ) { - _fnSort( settings ); - } - - if ( filter ) { - _fnFilterComplete( settings, settings.oPreviousSearch ); - } - else { - // No filtering, so we want to just use the display master - settings.aiDisplay = settings.aiDisplayMaster.slice(); - } - - if ( holdPosition !== true ) { - settings._iDisplayStart = 0; - } - - // Let any modules know about the draw hold position state (used by - // scrolling internally) - settings._drawHold = holdPosition; - - _fnDraw( settings ); - - settings._drawHold = false; - } - - - /** - * Add the options to the page HTML for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnAddOptionsHtml ( oSettings ) - { - var classes = oSettings.oClasses; - var table = $(oSettings.nTable); - var holding = $('<div/>').insertBefore( table ); // Holding element for speed - var features = oSettings.oFeatures; - - // All DataTables are wrapped in a div - var insert = $('<div/>', { - id: oSettings.sTableId+'_wrapper', - 'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter) - } ); - - oSettings.nHolding = holding[0]; - oSettings.nTableWrapper = insert[0]; - oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling; - - /* Loop over the user set positioning and place the elements as needed */ - var aDom = oSettings.sDom.split(''); - var featureNode, cOption, nNewNode, cNext, sAttr, j; - for ( var i=0 ; i<aDom.length ; i++ ) - { - featureNode = null; - cOption = aDom[i]; - - if ( cOption == '<' ) - { - /* New container div */ - nNewNode = $('<div/>')[0]; - - /* Check to see if we should append an id and/or a class name to the container */ - cNext = aDom[i+1]; - if ( cNext == "'" || cNext == '"' ) - { - sAttr = ""; - j = 2; - while ( aDom[i+j] != cNext ) - { - sAttr += aDom[i+j]; - j++; - } - - /* Replace jQuery UI constants @todo depreciated */ - if ( sAttr == "H" ) - { - sAttr = classes.sJUIHeader; - } - else if ( sAttr == "F" ) - { - sAttr = classes.sJUIFooter; - } - - /* The attribute can be in the format of "#id.class", "#id" or "class" This logic - * breaks the string into parts and applies them as needed - */ - if ( sAttr.indexOf('.') != -1 ) - { - var aSplit = sAttr.split('.'); - nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1); - nNewNode.className = aSplit[1]; - } - else if ( sAttr.charAt(0) == "#" ) - { - nNewNode.id = sAttr.substr(1, sAttr.length-1); - } - else - { - nNewNode.className = sAttr; - } - - i += j; /* Move along the position array */ - } - - insert.append( nNewNode ); - insert = $(nNewNode); - } - else if ( cOption == '>' ) - { - /* End container div */ - insert = insert.parent(); - } - // @todo Move options into their own plugins? - else if ( cOption == 'l' && features.bPaginate && features.bLengthChange ) - { - /* Length */ - featureNode = _fnFeatureHtmlLength( oSettings ); - } - else if ( cOption == 'f' && features.bFilter ) - { - /* Filter */ - featureNode = _fnFeatureHtmlFilter( oSettings ); - } - else if ( cOption == 'r' && features.bProcessing ) - { - /* pRocessing */ - featureNode = _fnFeatureHtmlProcessing( oSettings ); - } - else if ( cOption == 't' ) - { - /* Table */ - featureNode = _fnFeatureHtmlTable( oSettings ); - } - else if ( cOption == 'i' && features.bInfo ) - { - /* Info */ - featureNode = _fnFeatureHtmlInfo( oSettings ); - } - else if ( cOption == 'p' && features.bPaginate ) - { - /* Pagination */ - featureNode = _fnFeatureHtmlPaginate( oSettings ); - } - else if ( DataTable.ext.feature.length !== 0 ) - { - /* Plug-in features */ - var aoFeatures = DataTable.ext.feature; - for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ ) - { - if ( cOption == aoFeatures[k].cFeature ) - { - featureNode = aoFeatures[k].fnInit( oSettings ); - break; - } - } - } - - /* Add to the 2D features array */ - if ( featureNode ) - { - var aanFeatures = oSettings.aanFeatures; - - if ( ! aanFeatures[cOption] ) - { - aanFeatures[cOption] = []; - } - - aanFeatures[cOption].push( featureNode ); - insert.append( featureNode ); - } - } - - /* Built our DOM structure - replace the holding div with what we want */ - holding.replaceWith( insert ); - } - - - /** - * Use the DOM source to create up an array of header cells. The idea here is to - * create a layout grid (array) of rows x columns, which contains a reference - * to the cell that that point in the grid (regardless of col/rowspan), such that - * any column / row could be removed and the new grid constructed - * @param array {object} aLayout Array to store the calculated layout in - * @param {node} nThead The header/footer element for the table - * @memberof DataTable#oApi - */ - function _fnDetectHeader ( aLayout, nThead ) - { - var nTrs = $(nThead).children('tr'); - var nTr, nCell; - var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan; - var bUnique; - var fnShiftCol = function ( a, i, j ) { - var k = a[i]; - while ( k[j] ) { - j++; - } - return j; - }; - - aLayout.splice( 0, aLayout.length ); - - /* We know how many rows there are in the layout - so prep it */ - for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) - { - aLayout.push( [] ); - } - - /* Calculate a layout array */ - for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) - { - nTr = nTrs[i]; - iColumn = 0; - - /* For every cell in the row... */ - nCell = nTr.firstChild; - while ( nCell ) { - if ( nCell.nodeName.toUpperCase() == "TD" || - nCell.nodeName.toUpperCase() == "TH" ) - { - /* Get the col and rowspan attributes from the DOM and sanitise them */ - iColspan = nCell.getAttribute('colspan') * 1; - iRowspan = nCell.getAttribute('rowspan') * 1; - iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan; - iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan; - - /* There might be colspan cells already in this row, so shift our target - * accordingly - */ - iColShifted = fnShiftCol( aLayout, i, iColumn ); - - /* Cache calculation for unique columns */ - bUnique = iColspan === 1 ? true : false; - - /* If there is col / rowspan, copy the information into the layout grid */ - for ( l=0 ; l<iColspan ; l++ ) - { - for ( k=0 ; k<iRowspan ; k++ ) - { - aLayout[i+k][iColShifted+l] = { - "cell": nCell, - "unique": bUnique - }; - aLayout[i+k].nTr = nTr; - } - } - } - nCell = nCell.nextSibling; - } - } - } - - - /** - * Get an array of unique th elements, one for each column - * @param {object} oSettings dataTables settings object - * @param {node} nHeader automatically detect the layout from this node - optional - * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional - * @returns array {node} aReturn list of unique th's - * @memberof DataTable#oApi - */ - function _fnGetUniqueThs ( oSettings, nHeader, aLayout ) - { - var aReturn = []; - if ( !aLayout ) - { - aLayout = oSettings.aoHeader; - if ( nHeader ) - { - aLayout = []; - _fnDetectHeader( aLayout, nHeader ); - } - } - - for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ ) - { - for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ ) - { - if ( aLayout[i][j].unique && - (!aReturn[j] || !oSettings.bSortCellsTop) ) - { - aReturn[j] = aLayout[i][j].cell; - } - } - } - - return aReturn; - } - - /** - * Create an Ajax call based on the table's settings, taking into account that - * parameters can have multiple forms, and backwards compatibility. - * - * @param {object} oSettings dataTables settings object - * @param {array} data Data to send to the server, required by - * DataTables - may be augmented by developer callbacks - * @param {function} fn Callback function to run when data is obtained - */ - function _fnBuildAjax( oSettings, data, fn ) - { - // Compatibility with 1.9-, allow fnServerData and event to manipulate - _fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] ); - - // Convert to object based for 1.10+ if using the old array scheme which can - // come from server-side processing or serverParams - if ( data && $.isArray(data) ) { - var tmp = {}; - var rbracket = /(.*?)\[\]$/; - - $.each( data, function (key, val) { - var match = val.name.match(rbracket); - - if ( match ) { - // Support for arrays - var name = match[0]; - - if ( ! tmp[ name ] ) { - tmp[ name ] = []; - } - tmp[ name ].push( val.value ); - } - else { - tmp[val.name] = val.value; - } - } ); - data = tmp; - } - - var ajaxData; - var ajax = oSettings.ajax; - var instance = oSettings.oInstance; - var callback = function ( json ) { - _fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] ); - fn( json ); - }; - - if ( $.isPlainObject( ajax ) && ajax.data ) - { - ajaxData = ajax.data; - - var newData = $.isFunction( ajaxData ) ? - ajaxData( data, oSettings ) : // fn can manipulate data or return - ajaxData; // an object object or array to merge - - // If the function returned something, use that alone - data = $.isFunction( ajaxData ) && newData ? - newData : - $.extend( true, data, newData ); - - // Remove the data property as we've resolved it already and don't want - // jQuery to do it again (it is restored at the end of the function) - delete ajax.data; - } - - var baseAjax = { - "data": data, - "success": function (json) { - var error = json.error || json.sError; - if ( error ) { - _fnLog( oSettings, 0, error ); - } - - oSettings.json = json; - callback( json ); - }, - "dataType": "json", - "cache": false, - "type": oSettings.sServerMethod, - "error": function (xhr, error, thrown) { - var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] ); - - if ( $.inArray( true, ret ) === -1 ) { - if ( error == "parsererror" ) { - _fnLog( oSettings, 0, 'Invalid JSON response', 1 ); - } - else if ( xhr.readyState === 4 ) { - _fnLog( oSettings, 0, 'Ajax error', 7 ); - } - } - - _fnProcessingDisplay( oSettings, false ); - } - }; - - // Store the data submitted for the API - oSettings.oAjaxData = data; - - // Allow plug-ins and external processes to modify the data - _fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] ); - - if ( oSettings.fnServerData ) - { - // DataTables 1.9- compatibility - oSettings.fnServerData.call( instance, - oSettings.sAjaxSource, - $.map( data, function (val, key) { // Need to convert back to 1.9 trad format - return { name: key, value: val }; - } ), - callback, - oSettings - ); - } - else if ( oSettings.sAjaxSource || typeof ajax === 'string' ) - { - // DataTables 1.9- compatibility - oSettings.jqXHR = $.ajax( $.extend( baseAjax, { - url: ajax || oSettings.sAjaxSource - } ) ); - } - else if ( $.isFunction( ajax ) ) - { - // Is a function - let the caller define what needs to be done - oSettings.jqXHR = ajax.call( instance, data, callback, oSettings ); - } - else - { - // Object to extend the base settings - oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) ); - - // Restore for next time around - ajax.data = ajaxData; - } - } - - - /** - * Update the table using an Ajax call - * @param {object} settings dataTables settings object - * @returns {boolean} Block the table drawing or not - * @memberof DataTable#oApi - */ - function _fnAjaxUpdate( settings ) - { - if ( settings.bAjaxDataGet ) { - settings.iDraw++; - _fnProcessingDisplay( settings, true ); - - _fnBuildAjax( - settings, - _fnAjaxParameters( settings ), - function(json) { - _fnAjaxUpdateDraw( settings, json ); - } - ); - - return false; - } - return true; - } - - - /** - * Build up the parameters in an object needed for a server-side processing - * request. Note that this is basically done twice, is different ways - a modern - * method which is used by default in DataTables 1.10 which uses objects and - * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if - * the sAjaxSource option is used in the initialisation, or the legacyAjax - * option is set. - * @param {object} oSettings dataTables settings object - * @returns {bool} block the table drawing or not - * @memberof DataTable#oApi - */ - function _fnAjaxParameters( settings ) - { - var - columns = settings.aoColumns, - columnCount = columns.length, - features = settings.oFeatures, - preSearch = settings.oPreviousSearch, - preColSearch = settings.aoPreSearchCols, - i, data = [], dataProp, column, columnSearch, - sort = _fnSortFlatten( settings ), - displayStart = settings._iDisplayStart, - displayLength = features.bPaginate !== false ? - settings._iDisplayLength : - -1; - - var param = function ( name, value ) { - data.push( { 'name': name, 'value': value } ); - }; - - // DataTables 1.9- compatible method - param( 'sEcho', settings.iDraw ); - param( 'iColumns', columnCount ); - param( 'sColumns', _pluck( columns, 'sName' ).join(',') ); - param( 'iDisplayStart', displayStart ); - param( 'iDisplayLength', displayLength ); - - // DataTables 1.10+ method - var d = { - draw: settings.iDraw, - columns: [], - order: [], - start: displayStart, - length: displayLength, - search: { - value: preSearch.sSearch, - regex: preSearch.bRegex - } - }; - - for ( i=0 ; i<columnCount ; i++ ) { - column = columns[i]; - columnSearch = preColSearch[i]; - dataProp = typeof column.mData=="function" ? 'function' : column.mData ; - - d.columns.push( { - data: dataProp, - name: column.sName, - searchable: column.bSearchable, - orderable: column.bSortable, - search: { - value: columnSearch.sSearch, - regex: columnSearch.bRegex - } - } ); - - param( "mDataProp_"+i, dataProp ); - - if ( features.bFilter ) { - param( 'sSearch_'+i, columnSearch.sSearch ); - param( 'bRegex_'+i, columnSearch.bRegex ); - param( 'bSearchable_'+i, column.bSearchable ); - } - - if ( features.bSort ) { - param( 'bSortable_'+i, column.bSortable ); - } - } - - if ( features.bFilter ) { - param( 'sSearch', preSearch.sSearch ); - param( 'bRegex', preSearch.bRegex ); - } - - if ( features.bSort ) { - $.each( sort, function ( i, val ) { - d.order.push( { column: val.col, dir: val.dir } ); - - param( 'iSortCol_'+i, val.col ); - param( 'sSortDir_'+i, val.dir ); - } ); - - param( 'iSortingCols', sort.length ); - } - - // If the legacy.ajax parameter is null, then we automatically decide which - // form to use, based on sAjaxSource - var legacy = DataTable.ext.legacy.ajax; - if ( legacy === null ) { - return settings.sAjaxSource ? data : d; - } - - // Otherwise, if legacy has been specified then we use that to decide on the - // form - return legacy ? data : d; - } - - - /** - * Data the data from the server (nuking the old) and redraw the table - * @param {object} oSettings dataTables settings object - * @param {object} json json data return from the server. - * @param {string} json.sEcho Tracking flag for DataTables to match requests - * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering - * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering - * @param {array} json.aaData The data to display on this page - * @param {string} [json.sColumns] Column ordering (sName, comma separated) - * @memberof DataTable#oApi - */ - function _fnAjaxUpdateDraw ( settings, json ) - { - // v1.10 uses camelCase variables, while 1.9 uses Hungarian notation. - // Support both - var compat = function ( old, modern ) { - return json[old] !== undefined ? json[old] : json[modern]; - }; - - var data = _fnAjaxDataSrc( settings, json ); - var draw = compat( 'sEcho', 'draw' ); - var recordsTotal = compat( 'iTotalRecords', 'recordsTotal' ); - var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' ); - - if ( draw ) { - // Protect against out of sequence returns - if ( draw*1 < settings.iDraw ) { - return; - } - settings.iDraw = draw * 1; - } - - _fnClearTable( settings ); - settings._iRecordsTotal = parseInt(recordsTotal, 10); - settings._iRecordsDisplay = parseInt(recordsFiltered, 10); - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - _fnAddData( settings, data[i] ); - } - settings.aiDisplay = settings.aiDisplayMaster.slice(); - - settings.bAjaxDataGet = false; - _fnDraw( settings ); - - if ( ! settings._bInitComplete ) { - _fnInitComplete( settings, json ); - } - - settings.bAjaxDataGet = true; - _fnProcessingDisplay( settings, false ); - } - - - /** - * Get the data from the JSON data source to use for drawing a table. Using - * `_fnGetObjectDataFn` allows the data to be sourced from a property of the - * source object, or from a processing function. - * @param {object} oSettings dataTables settings object - * @param {object} json Data source object / array from the server - * @return {array} Array of data to use - */ - function _fnAjaxDataSrc ( oSettings, json ) - { - var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ? - oSettings.ajax.dataSrc : - oSettings.sAjaxDataProp; // Compatibility with 1.9-. - - // Compatibility with 1.9-. In order to read from aaData, check if the - // default has been changed, if not, check for aaData - if ( dataSrc === 'data' ) { - return json.aaData || json[dataSrc]; - } - - return dataSrc !== "" ? - _fnGetObjectDataFn( dataSrc )( json ) : - json; - } - - /** - * Generate the node required for filtering text - * @returns {node} Filter control element - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlFilter ( settings ) - { - var classes = settings.oClasses; - var tableId = settings.sTableId; - var language = settings.oLanguage; - var previousSearch = settings.oPreviousSearch; - var features = settings.aanFeatures; - var input = '<input type="search" class="'+classes.sFilterInput+'"/>'; - - var str = language.sSearch; - str = str.match(/_INPUT_/) ? - str.replace('_INPUT_', input) : - str+input; - - var filter = $('<div/>', { - 'id': ! features.f ? tableId+'_filter' : null, - 'class': classes.sFilter - } ) - .append( $('<label/>' ).append( str ) ); - - var searchFn = function() { - /* Update all other filter input elements for the new display */ - var n = features.f; - var val = !this.value ? "" : this.value; // mental IE8 fix :-( - - /* Now do the filter */ - if ( val != previousSearch.sSearch ) { - _fnFilterComplete( settings, { - "sSearch": val, - "bRegex": previousSearch.bRegex, - "bSmart": previousSearch.bSmart , - "bCaseInsensitive": previousSearch.bCaseInsensitive - } ); - - // Need to redraw, without resorting - settings._iDisplayStart = 0; - _fnDraw( settings ); - } - }; - - var searchDelay = settings.searchDelay !== null ? - settings.searchDelay : - _fnDataSource( settings ) === 'ssp' ? - 400 : - 0; - - var jqFilter = $('input', filter) - .val( previousSearch.sSearch ) - .attr( 'placeholder', language.sSearchPlaceholder ) - .bind( - 'keyup.DT search.DT input.DT paste.DT cut.DT', - searchDelay ? - _fnThrottle( searchFn, searchDelay ) : - searchFn - ) - .bind( 'keypress.DT', function(e) { - /* Prevent form submission */ - if ( e.keyCode == 13 ) { - return false; - } - } ) - .attr('aria-controls', tableId); - - // Update the input elements whenever the table is filtered - $(settings.nTable).on( 'search.dt.DT', function ( ev, s ) { - if ( settings === s ) { - // IE9 throws an 'unknown error' if document.activeElement is used - // inside an iframe or frame... - try { - if ( jqFilter[0] !== document.activeElement ) { - jqFilter.val( previousSearch.sSearch ); - } - } - catch ( e ) {} - } - } ); - - return filter[0]; - } - - - /** - * Filter the table using both the global filter and column based filtering - * @param {object} oSettings dataTables settings object - * @param {object} oSearch search information - * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0) - * @memberof DataTable#oApi - */ - function _fnFilterComplete ( oSettings, oInput, iForce ) - { - var oPrevSearch = oSettings.oPreviousSearch; - var aoPrevSearch = oSettings.aoPreSearchCols; - var fnSaveFilter = function ( oFilter ) { - /* Save the filtering values */ - oPrevSearch.sSearch = oFilter.sSearch; - oPrevSearch.bRegex = oFilter.bRegex; - oPrevSearch.bSmart = oFilter.bSmart; - oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive; - }; - var fnRegex = function ( o ) { - // Backwards compatibility with the bEscapeRegex option - return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex; - }; - - // Resolve any column types that are unknown due to addition or invalidation - // @todo As per sort - can this be moved into an event handler? - _fnColumnTypes( oSettings ); - - /* In server-side processing all filtering is done by the server, so no point hanging around here */ - if ( _fnDataSource( oSettings ) != 'ssp' ) - { - /* Global filter */ - _fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive ); - fnSaveFilter( oInput ); - - /* Now do the individual column filter */ - for ( var i=0 ; i<aoPrevSearch.length ; i++ ) - { - _fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]), - aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive ); - } - - /* Custom filtering */ - _fnFilterCustom( oSettings ); - } - else - { - fnSaveFilter( oInput ); - } - - /* Tell the draw function we have been filtering */ - oSettings.bFiltered = true; - _fnCallbackFire( oSettings, null, 'search', [oSettings] ); - } - - - /** - * Apply custom filtering functions - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnFilterCustom( settings ) - { - var filters = DataTable.ext.search; - var displayRows = settings.aiDisplay; - var row, rowIdx; - - for ( var i=0, ien=filters.length ; i<ien ; i++ ) { - var rows = []; - - // Loop over each row and see if it should be included - for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) { - rowIdx = displayRows[ j ]; - row = settings.aoData[ rowIdx ]; - - if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) { - rows.push( rowIdx ); - } - } - - // So the array reference doesn't break set the results into the - // existing array - displayRows.length = 0; - displayRows.push.apply( displayRows, rows ); - } - } - - - /** - * Filter the table on a per-column basis - * @param {object} oSettings dataTables settings object - * @param {string} sInput string to filter on - * @param {int} iColumn column to filter - * @param {bool} bRegex treat search string as a regular expression or not - * @param {bool} bSmart use smart filtering or not - * @param {bool} bCaseInsensitive Do case insenstive matching or not - * @memberof DataTable#oApi - */ - function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive ) - { - if ( searchStr === '' ) { - return; - } - - var data; - var display = settings.aiDisplay; - var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive ); - - for ( var i=display.length-1 ; i>=0 ; i-- ) { - data = settings.aoData[ display[i] ]._aFilterData[ colIdx ]; - - if ( ! rpSearch.test( data ) ) { - display.splice( i, 1 ); - } - } - } - - - /** - * Filter the data table based on user input and draw the table - * @param {object} settings dataTables settings object - * @param {string} input string to filter on - * @param {int} force optional - force a research of the master array (1) or not (undefined or 0) - * @param {bool} regex treat as a regular expression or not - * @param {bool} smart perform smart filtering or not - * @param {bool} caseInsensitive Do case insenstive matching or not - * @memberof DataTable#oApi - */ - function _fnFilter( settings, input, force, regex, smart, caseInsensitive ) - { - var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive ); - var prevSearch = settings.oPreviousSearch.sSearch; - var displayMaster = settings.aiDisplayMaster; - var display, invalidated, i; - - // Need to take account of custom filtering functions - always filter - if ( DataTable.ext.search.length !== 0 ) { - force = true; - } - - // Check if any of the rows were invalidated - invalidated = _fnFilterData( settings ); - - // If the input is blank - we just want the full data set - if ( input.length <= 0 ) { - settings.aiDisplay = displayMaster.slice(); - } - else { - // New search - start from the master array - if ( invalidated || - force || - prevSearch.length > input.length || - input.indexOf(prevSearch) !== 0 || - settings.bSorted // On resort, the display master needs to be - // re-filtered since indexes will have changed - ) { - settings.aiDisplay = displayMaster.slice(); - } - - // Search the display array - display = settings.aiDisplay; - - for ( i=display.length-1 ; i>=0 ; i-- ) { - if ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) { - display.splice( i, 1 ); - } - } - } - } - - - /** - * Build a regular expression object suitable for searching a table - * @param {string} sSearch string to search for - * @param {bool} bRegex treat as a regular expression or not - * @param {bool} bSmart perform smart filtering or not - * @param {bool} bCaseInsensitive Do case insensitive matching or not - * @returns {RegExp} constructed object - * @memberof DataTable#oApi - */ - function _fnFilterCreateSearch( search, regex, smart, caseInsensitive ) - { - search = regex ? - search : - _fnEscapeRegex( search ); - - if ( smart ) { - /* For smart filtering we want to allow the search to work regardless of - * word order. We also want double quoted text to be preserved, so word - * order is important - a la google. So this is what we want to - * generate: - * - * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$ - */ - var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) { - if ( word.charAt(0) === '"' ) { - var m = word.match( /^"(.*)"$/ ); - word = m ? m[1] : word; - } - - return word.replace('"', ''); - } ); - - search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$'; - } - - return new RegExp( search, caseInsensitive ? 'i' : '' ); - } - - - /** - * Escape a string such that it can be used in a regular expression - * @param {string} sVal string to escape - * @returns {string} escaped string - * @memberof DataTable#oApi - */ - function _fnEscapeRegex ( sVal ) - { - return sVal.replace( _re_escape_regex, '\\$1' ); - } - - - - var __filter_div = $('<div>')[0]; - var __filter_div_textContent = __filter_div.textContent !== undefined; - - // Update the filtering data for each row if needed (by invalidation or first run) - function _fnFilterData ( settings ) - { - var columns = settings.aoColumns; - var column; - var i, j, ien, jen, filterData, cellData, row; - var fomatters = DataTable.ext.type.search; - var wasInvalidated = false; - - for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - row = settings.aoData[i]; - - if ( ! row._aFilterData ) { - filterData = []; - - for ( j=0, jen=columns.length ; j<jen ; j++ ) { - column = columns[j]; - - if ( column.bSearchable ) { - cellData = _fnGetCellData( settings, i, j, 'filter' ); - - if ( fomatters[ column.sType ] ) { - cellData = fomatters[ column.sType ]( cellData ); - } - - // Search in DataTables 1.10 is string based. In 1.11 this - // should be altered to also allow strict type checking. - if ( cellData === null ) { - cellData = ''; - } - - if ( typeof cellData !== 'string' && cellData.toString ) { - cellData = cellData.toString(); - } - } - else { - cellData = ''; - } - - // If it looks like there is an HTML entity in the string, - // attempt to decode it so sorting works as expected. Note that - // we could use a single line of jQuery to do this, but the DOM - // method used here is much faster http://jsperf.com/html-decode - if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) { - __filter_div.innerHTML = cellData; - cellData = __filter_div_textContent ? - __filter_div.textContent : - __filter_div.innerText; - } - - if ( cellData.replace ) { - cellData = cellData.replace(/[\r\n]/g, ''); - } - - filterData.push( cellData ); - } - - row._aFilterData = filterData; - row._sFilterRow = filterData.join(' '); - wasInvalidated = true; - } - } - - return wasInvalidated; - } - - - /** - * Convert from the internal Hungarian notation to camelCase for external - * interaction - * @param {object} obj Object to convert - * @returns {object} Inverted object - * @memberof DataTable#oApi - */ - function _fnSearchToCamel ( obj ) - { - return { - search: obj.sSearch, - smart: obj.bSmart, - regex: obj.bRegex, - caseInsensitive: obj.bCaseInsensitive - }; - } - - - - /** - * Convert from camelCase notation to the internal Hungarian. We could use the - * Hungarian convert function here, but this is cleaner - * @param {object} obj Object to convert - * @returns {object} Inverted object - * @memberof DataTable#oApi - */ - function _fnSearchToHung ( obj ) - { - return { - sSearch: obj.search, - bSmart: obj.smart, - bRegex: obj.regex, - bCaseInsensitive: obj.caseInsensitive - }; - } - - /** - * Generate the node required for the info display - * @param {object} oSettings dataTables settings object - * @returns {node} Information element - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlInfo ( settings ) - { - var - tid = settings.sTableId, - nodes = settings.aanFeatures.i, - n = $('<div/>', { - 'class': settings.oClasses.sInfo, - 'id': ! nodes ? tid+'_info' : null - } ); - - if ( ! nodes ) { - // Update display on each draw - settings.aoDrawCallback.push( { - "fn": _fnUpdateInfo, - "sName": "information" - } ); - - n - .attr( 'role', 'status' ) - .attr( 'aria-live', 'polite' ); - - // Table is described by our info div - $(settings.nTable).attr( 'aria-describedby', tid+'_info' ); - } - - return n[0]; - } - - - /** - * Update the information elements in the display - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnUpdateInfo ( settings ) - { - /* Show information about the table */ - var nodes = settings.aanFeatures.i; - if ( nodes.length === 0 ) { - return; - } - - var - lang = settings.oLanguage, - start = settings._iDisplayStart+1, - end = settings.fnDisplayEnd(), - max = settings.fnRecordsTotal(), - total = settings.fnRecordsDisplay(), - out = total ? - lang.sInfo : - lang.sInfoEmpty; - - if ( total !== max ) { - /* Record set after filtering */ - out += ' ' + lang.sInfoFiltered; - } - - // Convert the macros - out += lang.sInfoPostFix; - out = _fnInfoMacros( settings, out ); - - var callback = lang.fnInfoCallback; - if ( callback !== null ) { - out = callback.call( settings.oInstance, - settings, start, end, max, total, out - ); - } - - $(nodes).html( out ); - } - - - function _fnInfoMacros ( settings, str ) - { - // When infinite scrolling, we are always starting at 1. _iDisplayStart is used only - // internally - var - formatter = settings.fnFormatNumber, - start = settings._iDisplayStart+1, - len = settings._iDisplayLength, - vis = settings.fnRecordsDisplay(), - all = len === -1; - - return str. - replace(/_START_/g, formatter.call( settings, start ) ). - replace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ). - replace(/_MAX_/g, formatter.call( settings, settings.fnRecordsTotal() ) ). - replace(/_TOTAL_/g, formatter.call( settings, vis ) ). - replace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ). - replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) ); - } - - - - /** - * Draw the table for the first time, adding all required features - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnInitialise ( settings ) - { - var i, iLen, iAjaxStart=settings.iInitDisplayStart; - var columns = settings.aoColumns, column; - var features = settings.oFeatures; - - /* Ensure that the table data is fully initialised */ - if ( ! settings.bInitialised ) { - setTimeout( function(){ _fnInitialise( settings ); }, 200 ); - return; - } - - /* Show the display HTML options */ - _fnAddOptionsHtml( settings ); - - /* Build and draw the header / footer for the table */ - _fnBuildHead( settings ); - _fnDrawHead( settings, settings.aoHeader ); - _fnDrawHead( settings, settings.aoFooter ); - - /* Okay to show that something is going on now */ - _fnProcessingDisplay( settings, true ); - - /* Calculate sizes for columns */ - if ( features.bAutoWidth ) { - _fnCalculateColumnWidths( settings ); - } - - for ( i=0, iLen=columns.length ; i<iLen ; i++ ) { - column = columns[i]; - - if ( column.sWidth ) { - column.nTh.style.width = _fnStringToCss( column.sWidth ); - } - } - - // If there is default sorting required - let's do it. The sort function - // will do the drawing for us. Otherwise we draw the table regardless of the - // Ajax source - this allows the table to look initialised for Ajax sourcing - // data (show 'loading' message possibly) - _fnReDraw( settings ); - - // Server-side processing init complete is done by _fnAjaxUpdateDraw - var dataSrc = _fnDataSource( settings ); - if ( dataSrc != 'ssp' ) { - // if there is an ajax source load the data - if ( dataSrc == 'ajax' ) { - _fnBuildAjax( settings, [], function(json) { - var aData = _fnAjaxDataSrc( settings, json ); - - // Got the data - add it to the table - for ( i=0 ; i<aData.length ; i++ ) { - _fnAddData( settings, aData[i] ); - } - - // Reset the init display for cookie saving. We've already done - // a filter, and therefore cleared it before. So we need to make - // it appear 'fresh' - settings.iInitDisplayStart = iAjaxStart; - - _fnReDraw( settings ); - - _fnProcessingDisplay( settings, false ); - _fnInitComplete( settings, json ); - }, settings ); - } - else { - _fnProcessingDisplay( settings, false ); - _fnInitComplete( settings ); - } - } - } - - - /** - * Draw the table for the first time, adding all required features - * @param {object} oSettings dataTables settings object - * @param {object} [json] JSON from the server that completed the table, if using Ajax source - * with client-side processing (optional) - * @memberof DataTable#oApi - */ - function _fnInitComplete ( settings, json ) - { - settings._bInitComplete = true; - - // On an Ajax load we now have data and therefore want to apply the column - // sizing - if ( json ) { - _fnAdjustColumnSizing( settings ); - } - - _fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] ); - } - - - function _fnLengthChange ( settings, val ) - { - var len = parseInt( val, 10 ); - settings._iDisplayLength = len; - - _fnLengthOverflow( settings ); - - // Fire length change event - _fnCallbackFire( settings, null, 'length', [settings, len] ); - } - - - /** - * Generate the node required for user display length changing - * @param {object} settings dataTables settings object - * @returns {node} Display length feature node - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlLength ( settings ) - { - var - classes = settings.oClasses, - tableId = settings.sTableId, - menu = settings.aLengthMenu, - d2 = $.isArray( menu[0] ), - lengths = d2 ? menu[0] : menu, - language = d2 ? menu[1] : menu; - - var select = $('<select/>', { - 'name': tableId+'_length', - 'aria-controls': tableId, - 'class': classes.sLengthSelect - } ); - - for ( var i=0, ien=lengths.length ; i<ien ; i++ ) { - select[0][ i ] = new Option( language[i], lengths[i] ); - } - - var div = $('<div><label/></div>').addClass( classes.sLength ); - if ( ! settings.aanFeatures.l ) { - div[0].id = tableId+'_length'; - } - - div.children().append( - settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML ) - ); - - // Can't use `select` variable as user might provide their own and the - // reference is broken by the use of outerHTML - $('select', div) - .val( settings._iDisplayLength ) - .bind( 'change.DT', function(e) { - _fnLengthChange( settings, $(this).val() ); - _fnDraw( settings ); - } ); - - // Update node value whenever anything changes the table's length - $(settings.nTable).bind( 'length.dt.DT', function (e, s, len) { - if ( settings === s ) { - $('select', div).val( len ); - } - } ); - - return div[0]; - } - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Note that most of the paging logic is done in - * DataTable.ext.pager - */ - - /** - * Generate the node required for default pagination - * @param {object} oSettings dataTables settings object - * @returns {node} Pagination feature node - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlPaginate ( settings ) - { - var - type = settings.sPaginationType, - plugin = DataTable.ext.pager[ type ], - modern = typeof plugin === 'function', - redraw = function( settings ) { - _fnDraw( settings ); - }, - node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0], - features = settings.aanFeatures; - - if ( ! modern ) { - plugin.fnInit( settings, node, redraw ); - } - - /* Add a draw callback for the pagination on first instance, to update the paging display */ - if ( ! features.p ) - { - node.id = settings.sTableId+'_paginate'; - - settings.aoDrawCallback.push( { - "fn": function( settings ) { - if ( modern ) { - var - start = settings._iDisplayStart, - len = settings._iDisplayLength, - visRecords = settings.fnRecordsDisplay(), - all = len === -1, - page = all ? 0 : Math.ceil( start / len ), - pages = all ? 1 : Math.ceil( visRecords / len ), - buttons = plugin(page, pages), - i, ien; - - for ( i=0, ien=features.p.length ; i<ien ; i++ ) { - _fnRenderer( settings, 'pageButton' )( - settings, features.p[i], i, buttons, page, pages - ); - } - } - else { - plugin.fnUpdate( settings, redraw ); - } - }, - "sName": "pagination" - } ); - } - - return node; - } - - - /** - * Alter the display settings to change the page - * @param {object} settings DataTables settings object - * @param {string|int} action Paging action to take: "first", "previous", - * "next" or "last" or page number to jump to (integer) - * @param [bool] redraw Automatically draw the update or not - * @returns {bool} true page has changed, false - no change - * @memberof DataTable#oApi - */ - function _fnPageChange ( settings, action, redraw ) - { - var - start = settings._iDisplayStart, - len = settings._iDisplayLength, - records = settings.fnRecordsDisplay(); - - if ( records === 0 || len === -1 ) - { - start = 0; - } - else if ( typeof action === "number" ) - { - start = action * len; - - if ( start > records ) - { - start = 0; - } - } - else if ( action == "first" ) - { - start = 0; - } - else if ( action == "previous" ) - { - start = len >= 0 ? - start - len : - 0; - - if ( start < 0 ) - { - start = 0; - } - } - else if ( action == "next" ) - { - if ( start + len < records ) - { - start += len; - } - } - else if ( action == "last" ) - { - start = Math.floor( (records-1) / len) * len; - } - else - { - _fnLog( settings, 0, "Unknown paging action: "+action, 5 ); - } - - var changed = settings._iDisplayStart !== start; - settings._iDisplayStart = start; - - if ( changed ) { - _fnCallbackFire( settings, null, 'page', [settings] ); - - if ( redraw ) { - _fnDraw( settings ); - } - } - - return changed; - } - - - - /** - * Generate the node required for the processing node - * @param {object} settings dataTables settings object - * @returns {node} Processing element - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlProcessing ( settings ) - { - return $('<div/>', { - 'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null, - 'class': settings.oClasses.sProcessing - } ) - .html( settings.oLanguage.sProcessing ) - .insertBefore( settings.nTable )[0]; - } - - - /** - * Display or hide the processing indicator - * @param {object} settings dataTables settings object - * @param {bool} show Show the processing indicator (true) or not (false) - * @memberof DataTable#oApi - */ - function _fnProcessingDisplay ( settings, show ) - { - if ( settings.oFeatures.bProcessing ) { - $(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' ); - } - - _fnCallbackFire( settings, null, 'processing', [settings, show] ); - } - - /** - * Add any control elements for the table - specifically scrolling - * @param {object} settings dataTables settings object - * @returns {node} Node to add to the DOM - * @memberof DataTable#oApi - */ - function _fnFeatureHtmlTable ( settings ) - { - var table = $(settings.nTable); - - // Add the ARIA grid role to the table - table.attr( 'role', 'grid' ); - - // Scrolling from here on in - var scroll = settings.oScroll; - - if ( scroll.sX === '' && scroll.sY === '' ) { - return settings.nTable; - } - - var scrollX = scroll.sX; - var scrollY = scroll.sY; - var classes = settings.oClasses; - var caption = table.children('caption'); - var captionSide = caption.length ? caption[0]._captionSide : null; - var headerClone = $( table[0].cloneNode(false) ); - var footerClone = $( table[0].cloneNode(false) ); - var footer = table.children('tfoot'); - var _div = '<div/>'; - var size = function ( s ) { - return !s ? null : _fnStringToCss( s ); - }; - - // This is fairly messy, but with x scrolling enabled, if the table has a - // width attribute, regardless of any width applied using the column width - // options, the browser will shrink or grow the table as needed to fit into - // that 100%. That would make the width options useless. So we remove it. - // This is okay, under the assumption that width:100% is applied to the - // table in CSS (it is in the default stylesheet) which will set the table - // width as appropriate (the attribute and css behave differently...) - if ( scroll.sX && table.attr('width') === '100%' ) { - table.removeAttr('width'); - } - - if ( ! footer.length ) { - footer = null; - } - - /* - * The HTML structure that we want to generate in this function is: - * div - scroller - * div - scroll head - * div - scroll head inner - * table - scroll head table - * thead - thead - * div - scroll body - * table - table (master table) - * thead - thead clone for sizing - * tbody - tbody - * div - scroll foot - * div - scroll foot inner - * table - scroll foot table - * tfoot - tfoot - */ - var scroller = $( _div, { 'class': classes.sScrollWrapper } ) - .append( - $(_div, { 'class': classes.sScrollHead } ) - .css( { - overflow: 'hidden', - position: 'relative', - border: 0, - width: scrollX ? size(scrollX) : '100%' - } ) - .append( - $(_div, { 'class': classes.sScrollHeadInner } ) - .css( { - 'box-sizing': 'content-box', - width: scroll.sXInner || '100%' - } ) - .append( - headerClone - .removeAttr('id') - .css( 'margin-left', 0 ) - .append( captionSide === 'top' ? caption : null ) - .append( - table.children('thead') - ) - ) - ) - ) - .append( - $(_div, { 'class': classes.sScrollBody } ) - .css( { - overflow: 'auto', - height: size( scrollY ), - width: size( scrollX ) - } ) - .append( table ) - ); - - if ( footer ) { - scroller.append( - $(_div, { 'class': classes.sScrollFoot } ) - .css( { - overflow: 'hidden', - border: 0, - width: scrollX ? size(scrollX) : '100%' - } ) - .append( - $(_div, { 'class': classes.sScrollFootInner } ) - .append( - footerClone - .removeAttr('id') - .css( 'margin-left', 0 ) - .append( captionSide === 'bottom' ? caption : null ) - .append( - table.children('tfoot') - ) - ) - ) - ); - } - - var children = scroller.children(); - var scrollHead = children[0]; - var scrollBody = children[1]; - var scrollFoot = footer ? children[2] : null; - - // When the body is scrolled, then we also want to scroll the headers - if ( scrollX ) { - $(scrollBody).on( 'scroll.DT', function (e) { - var scrollLeft = this.scrollLeft; - - scrollHead.scrollLeft = scrollLeft; - - if ( footer ) { - scrollFoot.scrollLeft = scrollLeft; - } - } ); - } - - settings.nScrollHead = scrollHead; - settings.nScrollBody = scrollBody; - settings.nScrollFoot = scrollFoot; - - // On redraw - align columns - settings.aoDrawCallback.push( { - "fn": _fnScrollDraw, - "sName": "scrolling" - } ); - - return scroller[0]; - } - - - - /** - * Update the header, footer and body tables for resizing - i.e. column - * alignment. - * - * Welcome to the most horrible function DataTables. The process that this - * function follows is basically: - * 1. Re-create the table inside the scrolling div - * 2. Take live measurements from the DOM - * 3. Apply the measurements to align the columns - * 4. Clean up - * - * @param {object} settings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnScrollDraw ( settings ) - { - // Given that this is such a monster function, a lot of variables are use - // to try and keep the minimised size as small as possible - var - scroll = settings.oScroll, - scrollX = scroll.sX, - scrollXInner = scroll.sXInner, - scrollY = scroll.sY, - barWidth = scroll.iBarWidth, - divHeader = $(settings.nScrollHead), - divHeaderStyle = divHeader[0].style, - divHeaderInner = divHeader.children('div'), - divHeaderInnerStyle = divHeaderInner[0].style, - divHeaderTable = divHeaderInner.children('table'), - divBodyEl = settings.nScrollBody, - divBody = $(divBodyEl), - divBodyStyle = divBodyEl.style, - divFooter = $(settings.nScrollFoot), - divFooterInner = divFooter.children('div'), - divFooterTable = divFooterInner.children('table'), - header = $(settings.nTHead), - table = $(settings.nTable), - tableEl = table[0], - tableStyle = tableEl.style, - footer = settings.nTFoot ? $(settings.nTFoot) : null, - browser = settings.oBrowser, - ie67 = browser.bScrollOversize, - headerTrgEls, footerTrgEls, - headerSrcEls, footerSrcEls, - headerCopy, footerCopy, - headerWidths=[], footerWidths=[], - headerContent=[], - idx, correction, sanityWidth, - zeroOut = function(nSizer) { - var style = nSizer.style; - style.paddingTop = "0"; - style.paddingBottom = "0"; - style.borderTopWidth = "0"; - style.borderBottomWidth = "0"; - style.height = 0; - }; - - /* - * 1. Re-create the table inside the scrolling div - */ - - // Remove the old minimised thead and tfoot elements in the inner table - table.children('thead, tfoot').remove(); - - // Clone the current header and footer elements and then place it into the inner table - headerCopy = header.clone().prependTo( table ); - headerTrgEls = header.find('tr'); // original header is in its own table - headerSrcEls = headerCopy.find('tr'); - headerCopy.find('th, td').removeAttr('tabindex'); - - if ( footer ) { - footerCopy = footer.clone().prependTo( table ); - footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized - footerSrcEls = footerCopy.find('tr'); - } - - - /* - * 2. Take live measurements from the DOM - do not alter the DOM itself! - */ - - // Remove old sizing and apply the calculated column widths - // Get the unique column headers in the newly created (cloned) header. We want to apply the - // calculated sizes to this header - if ( ! scrollX ) - { - divBodyStyle.width = '100%'; - divHeader[0].style.width = '100%'; - } - - $.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) { - idx = _fnVisibleToColumnIndex( settings, i ); - el.style.width = settings.aoColumns[idx].sWidth; - } ); - - if ( footer ) { - _fnApplyToChildren( function(n) { - n.style.width = ""; - }, footerSrcEls ); - } - - // If scroll collapse is enabled, when we put the headers back into the body for sizing, we - // will end up forcing the scrollbar to appear, making our measurements wrong for when we - // then hide it (end of this function), so add the header height to the body scroller. - if ( scroll.bCollapse && scrollY !== "" ) { - divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px"; - } - - // Size the table as a whole - sanityWidth = table.outerWidth(); - if ( scrollX === "" ) { - // No x scrolling - tableStyle.width = "100%"; - - // IE7 will make the width of the table when 100% include the scrollbar - // - which is shouldn't. When there is a scrollbar we need to take this - // into account. - if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight || - divBody.css('overflow-y') == "scroll") - ) { - tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth); - } - } - else - { - // x scrolling - if ( scrollXInner !== "" ) { - // x scroll inner has been given - use it - tableStyle.width = _fnStringToCss(scrollXInner); - } - else if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) { - // There is y-scrolling - try to take account of the y scroll bar - tableStyle.width = _fnStringToCss( sanityWidth-barWidth ); - if ( table.outerWidth() > sanityWidth-barWidth ) { - // Not possible to take account of it - tableStyle.width = _fnStringToCss( sanityWidth ); - } - } - else { - // When all else fails - tableStyle.width = _fnStringToCss( sanityWidth ); - } - } - - // Recalculate the sanity width - now that we've applied the required width, - // before it was a temporary variable. This is required because the column - // width calculation is done before this table DOM is created. - sanityWidth = table.outerWidth(); - - // Hidden header should have zero height, so remove padding and borders. Then - // set the width based on the real headers - - // Apply all styles in one pass - _fnApplyToChildren( zeroOut, headerSrcEls ); - - // Read all widths in next pass - _fnApplyToChildren( function(nSizer) { - headerContent.push( nSizer.innerHTML ); - headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); - }, headerSrcEls ); - - // Apply all widths in final pass - _fnApplyToChildren( function(nToSize, i) { - nToSize.style.width = headerWidths[i]; - }, headerTrgEls ); - - $(headerSrcEls).height(0); - - /* Same again with the footer if we have one */ - if ( footer ) - { - _fnApplyToChildren( zeroOut, footerSrcEls ); - - _fnApplyToChildren( function(nSizer) { - footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); - }, footerSrcEls ); - - _fnApplyToChildren( function(nToSize, i) { - nToSize.style.width = footerWidths[i]; - }, footerTrgEls ); - - $(footerSrcEls).height(0); - } - - - /* - * 3. Apply the measurements - */ - - // "Hide" the header and footer that we used for the sizing. We need to keep - // the content of the cell so that the width applied to the header and body - // both match, but we want to hide it completely. We want to also fix their - // width to what they currently are - _fnApplyToChildren( function(nSizer, i) { - nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>'; - nSizer.style.width = headerWidths[i]; - }, headerSrcEls ); - - if ( footer ) - { - _fnApplyToChildren( function(nSizer, i) { - nSizer.innerHTML = ""; - nSizer.style.width = footerWidths[i]; - }, footerSrcEls ); - } - - // Sanity check that the table is of a sensible width. If not then we are going to get - // misalignment - try to prevent this by not allowing the table to shrink below its min width - if ( table.outerWidth() < sanityWidth ) - { - // The min width depends upon if we have a vertical scrollbar visible or not */ - correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight || - divBody.css('overflow-y') == "scroll")) ? - sanityWidth+barWidth : - sanityWidth; - - // IE6/7 are a law unto themselves... - if ( ie67 && (divBodyEl.scrollHeight > - divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll") - ) { - tableStyle.width = _fnStringToCss( correction-barWidth ); - } - - // And give the user a warning that we've stopped the table getting too small - if ( scrollX === "" || scrollXInner !== "" ) { - _fnLog( settings, 1, 'Possible column misalignment', 6 ); - } - } - else - { - correction = '100%'; - } - - // Apply to the container elements - divBodyStyle.width = _fnStringToCss( correction ); - divHeaderStyle.width = _fnStringToCss( correction ); - - if ( footer ) { - settings.nScrollFoot.style.width = _fnStringToCss( correction ); - } - - - /* - * 4. Clean up - */ - if ( ! scrollY ) { - /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting - * the scrollbar height from the visible display, rather than adding it on. We need to - * set the height in order to sort this. Don't want to do it in any other browsers. - */ - if ( ie67 ) { - divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth ); - } - } - - if ( scrollY && scroll.bCollapse ) { - divBodyStyle.height = _fnStringToCss( scrollY ); - - var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ? - barWidth : - 0; - - if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) { - divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra ); - } - } - - /* Finally set the width's of the header and footer tables */ - var iOuterWidth = table.outerWidth(); - divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth ); - divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth ); - - // Figure out if there are scrollbar present - if so then we need a the header and footer to - // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar) - var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll"; - var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' ); - divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px"; - - if ( footer ) { - divFooterTable[0].style.width = _fnStringToCss( iOuterWidth ); - divFooterInner[0].style.width = _fnStringToCss( iOuterWidth ); - divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px"; - } - - /* Adjust the position of the header in case we loose the y-scrollbar */ - divBody.scroll(); - - // If sorting or filtering has occurred, jump the scrolling back to the top - // only if we aren't holding the position - if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) { - divBodyEl.scrollTop = 0; - } - } - - - - /** - * Apply a given function to the display child nodes of an element array (typically - * TD children of TR rows - * @param {function} fn Method to apply to the objects - * @param array {nodes} an1 List of elements to look through for display children - * @param array {nodes} an2 Another list (identical structure to the first) - optional - * @memberof DataTable#oApi - */ - function _fnApplyToChildren( fn, an1, an2 ) - { - var index=0, i=0, iLen=an1.length; - var nNode1, nNode2; - - while ( i < iLen ) { - nNode1 = an1[i].firstChild; - nNode2 = an2 ? an2[i].firstChild : null; - - while ( nNode1 ) { - if ( nNode1.nodeType === 1 ) { - if ( an2 ) { - fn( nNode1, nNode2, index ); - } - else { - fn( nNode1, index ); - } - - index++; - } - - nNode1 = nNode1.nextSibling; - nNode2 = an2 ? nNode2.nextSibling : null; - } - - i++; - } - } - - - - var __re_html_remove = /<.*?>/g; - - - /** - * Calculate the width of columns for the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnCalculateColumnWidths ( oSettings ) - { - var - table = oSettings.nTable, - columns = oSettings.aoColumns, - scroll = oSettings.oScroll, - scrollY = scroll.sY, - scrollX = scroll.sX, - scrollXInner = scroll.sXInner, - columnCount = columns.length, - visibleColumns = _fnGetColumns( oSettings, 'bVisible' ), - headerCells = $('th', oSettings.nTHead), - tableWidthAttr = table.getAttribute('width'), // from DOM element - tableContainer = table.parentNode, - userInputs = false, - i, column, columnIdx, width, outerWidth; - - var styleWidth = table.style.width; - if ( styleWidth && styleWidth.indexOf('%') !== -1 ) { - tableWidthAttr = styleWidth; - } - - /* Convert any user input sizes into pixel sizes */ - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - - if ( column.sWidth !== null ) { - column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer ); - - userInputs = true; - } - } - - /* If the number of columns in the DOM equals the number that we have to - * process in DataTables, then we can use the offsets that are created by - * the web- browser. No custom sizes can be set in order for this to happen, - * nor scrolling used - */ - if ( ! userInputs && ! scrollX && ! scrollY && - columnCount == _fnVisbleColumns( oSettings ) && - columnCount == headerCells.length - ) { - for ( i=0 ; i<columnCount ; i++ ) { - columns[i].sWidth = _fnStringToCss( headerCells.eq(i).width() ); - } - } - else - { - // Otherwise construct a single row, worst case, table with the widest - // node in the data, assign any user defined widths, then insert it into - // the DOM and allow the browser to do all the hard work of calculating - // table widths - var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table - .css( 'visibility', 'hidden' ) - .removeAttr( 'id' ); - - // Clean up the table body - tmpTable.find('tbody tr').remove(); - var tr = $('<tr/>').appendTo( tmpTable.find('tbody') ); - - // Remove any assigned widths from the footer (from scrolling) - tmpTable.find('tfoot th, tfoot td').css('width', ''); - - // Apply custom sizing to the cloned header - headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] ); - - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - - headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ? - _fnStringToCss( column.sWidthOrig ) : - ''; - } - - // Find the widest cell for each column and put it into the table - if ( oSettings.aoData.length ) { - for ( i=0 ; i<visibleColumns.length ; i++ ) { - columnIdx = visibleColumns[i]; - column = columns[ columnIdx ]; - - $( _fnGetWidestNode( oSettings, columnIdx ) ) - .clone( false ) - .append( column.sContentPadding ) - .appendTo( tr ); - } - } - - // Table has been built, attach to the document so we can work with it - tmpTable.appendTo( tableContainer ); - - // When scrolling (X or Y) we want to set the width of the table as - // appropriate. However, when not scrolling leave the table width as it - // is. This results in slightly different, but I think correct behaviour - if ( scrollX && scrollXInner ) { - tmpTable.width( scrollXInner ); - } - else if ( scrollX ) { - tmpTable.css( 'width', 'auto' ); - - if ( tmpTable.width() < tableContainer.offsetWidth ) { - tmpTable.width( tableContainer.offsetWidth ); - } - } - else if ( scrollY ) { - tmpTable.width( tableContainer.offsetWidth ); - } - else if ( tableWidthAttr ) { - tmpTable.width( tableWidthAttr ); - } - - // Take into account the y scrollbar - _fnScrollingWidthAdjust( oSettings, tmpTable[0] ); - - // Browsers need a bit of a hand when a width is assigned to any columns - // when x-scrolling as they tend to collapse the table to the min-width, - // even if we sent the column widths. So we need to keep track of what - // the table width should be by summing the user given values, and the - // automatic values - if ( scrollX ) - { - var total = 0; - - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - outerWidth = $(headerCells[i]).outerWidth(); - - total += column.sWidthOrig === null ? - outerWidth : - parseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width(); - } - - tmpTable.width( _fnStringToCss( total ) ); - table.style.width = _fnStringToCss( total ); - } - - // Get the width of each column in the constructed table - for ( i=0 ; i<visibleColumns.length ; i++ ) { - column = columns[ visibleColumns[i] ]; - width = $(headerCells[i]).width(); - - if ( width ) { - column.sWidth = _fnStringToCss( width ); - } - } - - table.style.width = _fnStringToCss( tmpTable.css('width') ); - - // Finished with the table - ditch it - tmpTable.remove(); - } - - // If there is a width attr, we want to attach an event listener which - // allows the table sizing to automatically adjust when the window is - // resized. Use the width attr rather than CSS, since we can't know if the - // CSS is a relative value or absolute - DOM read is always px. - if ( tableWidthAttr ) { - table.style.width = _fnStringToCss( tableWidthAttr ); - } - - if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) { - var bindResize = function () { - $(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () { - _fnAdjustColumnSizing( oSettings ); - } ) ); - }; - - // IE6/7 will crash if we bind a resize event handler on page load. - // To be removed in 1.11 which drops IE6/7 support - if ( oSettings.oBrowser.bScrollOversize ) { - setTimeout( bindResize, 1000 ); - } - else { - bindResize(); - } - - oSettings._reszEvt = true; - } - } - - - /** - * Throttle the calls to a function. Arguments and context are maintained for - * the throttled function - * @param {function} fn Function to be called - * @param {int} [freq=200] call frequency in mS - * @returns {function} wrapped function - * @memberof DataTable#oApi - */ - function _fnThrottle( fn, freq ) { - var - frequency = freq !== undefined ? freq : 200, - last, - timer; - - return function () { - var - that = this, - now = +new Date(), - args = arguments; - - if ( last && now < last + frequency ) { - clearTimeout( timer ); - - timer = setTimeout( function () { - last = undefined; - fn.apply( that, args ); - }, frequency ); - } - else { - last = now; - fn.apply( that, args ); - } - }; - } - - - /** - * Convert a CSS unit width to pixels (e.g. 2em) - * @param {string} width width to be converted - * @param {node} parent parent to get the with for (required for relative widths) - optional - * @returns {int} width in pixels - * @memberof DataTable#oApi - */ - function _fnConvertToWidth ( width, parent ) - { - if ( ! width ) { - return 0; - } - - var n = $('<div/>') - .css( 'width', _fnStringToCss( width ) ) - .appendTo( parent || document.body ); - - var val = n[0].offsetWidth; - n.remove(); - - return val; - } - - - /** - * Adjust a table's width to take account of vertical scroll bar - * @param {object} oSettings dataTables settings object - * @param {node} n table node - * @memberof DataTable#oApi - */ - - function _fnScrollingWidthAdjust ( settings, n ) - { - var scroll = settings.oScroll; - - if ( scroll.sX || scroll.sY ) { - // When y-scrolling only, we want to remove the width of the scroll bar - // so the table + scroll bar will fit into the area available, otherwise - // we fix the table at its current size with no adjustment - var correction = ! scroll.sX ? scroll.iBarWidth : 0; - n.style.width = _fnStringToCss( $(n).outerWidth() - correction ); - } - } - - - /** - * Get the widest node - * @param {object} settings dataTables settings object - * @param {int} colIdx column of interest - * @returns {node} widest table node - * @memberof DataTable#oApi - */ - function _fnGetWidestNode( settings, colIdx ) - { - var idx = _fnGetMaxLenString( settings, colIdx ); - if ( idx < 0 ) { - return null; - } - - var data = settings.aoData[ idx ]; - return ! data.nTr ? // Might not have been created when deferred rendering - $('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] : - data.anCells[ colIdx ]; - } - - - /** - * Get the maximum strlen for each data column - * @param {object} settings dataTables settings object - * @param {int} colIdx column of interest - * @returns {string} max string length for each column - * @memberof DataTable#oApi - */ - function _fnGetMaxLenString( settings, colIdx ) - { - var s, max=-1, maxIdx = -1; - - for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - s = _fnGetCellData( settings, i, colIdx, 'display' )+''; - s = s.replace( __re_html_remove, '' ); - - if ( s.length > max ) { - max = s.length; - maxIdx = i; - } - } - - return maxIdx; - } - - - /** - * Append a CSS unit (only if required) to a string - * @param {string} value to css-ify - * @returns {string} value with css unit - * @memberof DataTable#oApi - */ - function _fnStringToCss( s ) - { - if ( s === null ) { - return '0px'; - } - - if ( typeof s == 'number' ) { - return s < 0 ? - '0px' : - s+'px'; - } - - // Check it has a unit character already - return s.match(/\d$/) ? - s+'px' : - s; - } - - - /** - * Get the width of a scroll bar in this browser being used - * @returns {int} width in pixels - * @memberof DataTable#oApi - */ - function _fnScrollBarWidth () - { - // On first run a static variable is set, since this is only needed once. - // Subsequent runs will just use the previously calculated value - var width = DataTable.__scrollbarWidth; - - if ( width === undefined ) { - var sizer = $('<p/>').css( { - position: 'absolute', - top: 0, - left: 0, - width: '100%', - height: 150, - padding: 0, - overflow: 'scroll', - visibility: 'hidden' - } ) - .appendTo('body'); - - width = sizer[0].offsetWidth - sizer[0].clientWidth; - DataTable.__scrollbarWidth = width; - - sizer.remove(); - } - - return width; - } - - - - function _fnSortFlatten ( settings ) - { - var - i, iLen, k, kLen, - aSort = [], - aiOrig = [], - aoColumns = settings.aoColumns, - aDataSort, iCol, sType, srcCol, - fixed = settings.aaSortingFixed, - fixedObj = $.isPlainObject( fixed ), - nestedSort = [], - add = function ( a ) { - if ( a.length && ! $.isArray( a[0] ) ) { - // 1D array - nestedSort.push( a ); - } - else { - // 2D array - nestedSort.push.apply( nestedSort, a ); - } - }; - - // Build the sort array, with pre-fix and post-fix options if they have been - // specified - if ( $.isArray( fixed ) ) { - add( fixed ); - } - - if ( fixedObj && fixed.pre ) { - add( fixed.pre ); - } - - add( settings.aaSorting ); - - if (fixedObj && fixed.post ) { - add( fixed.post ); - } - - for ( i=0 ; i<nestedSort.length ; i++ ) - { - srcCol = nestedSort[i][0]; - aDataSort = aoColumns[ srcCol ].aDataSort; - - for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ ) - { - iCol = aDataSort[k]; - sType = aoColumns[ iCol ].sType || 'string'; - - if ( nestedSort[i]._idx === undefined ) { - nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting ); - } - - aSort.push( { - src: srcCol, - col: iCol, - dir: nestedSort[i][1], - index: nestedSort[i]._idx, - type: sType, - formatter: DataTable.ext.type.order[ sType+"-pre" ] - } ); - } - } - - return aSort; - } - - /** - * Change the order of the table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - * @todo This really needs split up! - */ - function _fnSort ( oSettings ) - { - var - i, ien, iLen, j, jLen, k, kLen, - sDataType, nTh, - aiOrig = [], - oExtSort = DataTable.ext.type.order, - aoData = oSettings.aoData, - aoColumns = oSettings.aoColumns, - aDataSort, data, iCol, sType, oSort, - formatters = 0, - sortCol, - displayMaster = oSettings.aiDisplayMaster, - aSort; - - // Resolve any column types that are unknown due to addition or invalidation - // @todo Can this be moved into a 'data-ready' handler which is called when - // data is going to be used in the table? - _fnColumnTypes( oSettings ); - - aSort = _fnSortFlatten( oSettings ); - - for ( i=0, ien=aSort.length ; i<ien ; i++ ) { - sortCol = aSort[i]; - - // Track if we can use the fast sort algorithm - if ( sortCol.formatter ) { - formatters++; - } - - // Load the data needed for the sort, for each cell - _fnSortData( oSettings, sortCol.col ); - } - - /* No sorting required if server-side or no sorting array */ - if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 ) - { - // Create a value - key array of the current row positions such that we can use their - // current position during the sort, if values match, in order to perform stable sorting - for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) { - aiOrig[ displayMaster[i] ] = i; - } - - /* Do the sort - here we want multi-column sorting based on a given data source (column) - * and sorting function (from oSort) in a certain direction. It's reasonably complex to - * follow on it's own, but this is what we want (example two column sorting): - * fnLocalSorting = function(a,b){ - * var iTest; - * iTest = oSort['string-asc']('data11', 'data12'); - * if (iTest !== 0) - * return iTest; - * iTest = oSort['numeric-desc']('data21', 'data22'); - * if (iTest !== 0) - * return iTest; - * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] ); - * } - * Basically we have a test for each sorting column, if the data in that column is equal, - * test the next column. If all columns match, then we use a numeric sort on the row - * positions in the original data array to provide a stable sort. - * - * Note - I know it seems excessive to have two sorting methods, but the first is around - * 15% faster, so the second is only maintained for backwards compatibility with sorting - * methods which do not have a pre-sort formatting function. - */ - if ( formatters === aSort.length ) { - // All sort types have formatting functions - displayMaster.sort( function ( a, b ) { - var - x, y, k, test, sort, - len=aSort.length, - dataA = aoData[a]._aSortData, - dataB = aoData[b]._aSortData; - - for ( k=0 ; k<len ; k++ ) { - sort = aSort[k]; - - x = dataA[ sort.col ]; - y = dataB[ sort.col ]; - - test = x<y ? -1 : x>y ? 1 : 0; - if ( test !== 0 ) { - return sort.dir === 'asc' ? test : -test; - } - } - - x = aiOrig[a]; - y = aiOrig[b]; - return x<y ? -1 : x>y ? 1 : 0; - } ); - } - else { - // Depreciated - remove in 1.11 (providing a plug-in option) - // Not all sort types have formatting methods, so we have to call their sorting - // methods. - displayMaster.sort( function ( a, b ) { - var - x, y, k, l, test, sort, fn, - len=aSort.length, - dataA = aoData[a]._aSortData, - dataB = aoData[b]._aSortData; - - for ( k=0 ; k<len ; k++ ) { - sort = aSort[k]; - - x = dataA[ sort.col ]; - y = dataB[ sort.col ]; - - fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ]; - test = fn( x, y ); - if ( test !== 0 ) { - return test; - } - } - - x = aiOrig[a]; - y = aiOrig[b]; - return x<y ? -1 : x>y ? 1 : 0; - } ); - } - } - - /* Tell the draw function that we have sorted the data */ - oSettings.bSorted = true; - } - - - function _fnSortAria ( settings ) - { - var label; - var nextSort; - var columns = settings.aoColumns; - var aSort = _fnSortFlatten( settings ); - var oAria = settings.oLanguage.oAria; - - // ARIA attributes - need to loop all columns, to update all (removing old - // attributes as needed) - for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) - { - var col = columns[i]; - var asSorting = col.asSorting; - var sTitle = col.sTitle.replace( /<.*?>/g, "" ); - var th = col.nTh; - - // IE7 is throwing an error when setting these properties with jQuery's - // attr() and removeAttr() methods... - th.removeAttribute('aria-sort'); - - /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */ - if ( col.bSortable ) { - if ( aSort.length > 0 && aSort[0].col == i ) { - th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" ); - nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0]; - } - else { - nextSort = asSorting[0]; - } - - label = sTitle + ( nextSort === "asc" ? - oAria.sSortAscending : - oAria.sSortDescending - ); - } - else { - label = sTitle; - } - - th.setAttribute('aria-label', label); - } - } - - - /** - * Function to run on user sort request - * @param {object} settings dataTables settings object - * @param {node} attachTo node to attach the handler to - * @param {int} colIdx column sorting index - * @param {boolean} [append=false] Append the requested sort to the existing - * sort if true (i.e. multi-column sort) - * @param {function} [callback] callback function - * @memberof DataTable#oApi - */ - function _fnSortListener ( settings, colIdx, append, callback ) - { - var col = settings.aoColumns[ colIdx ]; - var sorting = settings.aaSorting; - var asSorting = col.asSorting; - var nextSortIdx; - var next = function ( a, overflow ) { - var idx = a._idx; - if ( idx === undefined ) { - idx = $.inArray( a[1], asSorting ); - } - - return idx+1 < asSorting.length ? - idx+1 : - overflow ? - null : - 0; - }; - - // Convert to 2D array if needed - if ( typeof sorting[0] === 'number' ) { - sorting = settings.aaSorting = [ sorting ]; - } - - // If appending the sort then we are multi-column sorting - if ( append && settings.oFeatures.bSortMulti ) { - // Are we already doing some kind of sort on this column? - var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') ); - - if ( sortIdx !== -1 ) { - // Yes, modify the sort - nextSortIdx = next( sorting[sortIdx], true ); - - if ( nextSortIdx === null && sorting.length === 1 ) { - nextSortIdx = 0; // can't remove sorting completely - } - - if ( nextSortIdx === null ) { - sorting.splice( sortIdx, 1 ); - } - else { - sorting[sortIdx][1] = asSorting[ nextSortIdx ]; - sorting[sortIdx]._idx = nextSortIdx; - } - } - else { - // No sort on this column yet - sorting.push( [ colIdx, asSorting[0], 0 ] ); - sorting[sorting.length-1]._idx = 0; - } - } - else if ( sorting.length && sorting[0][0] == colIdx ) { - // Single column - already sorting on this column, modify the sort - nextSortIdx = next( sorting[0] ); - - sorting.length = 1; - sorting[0][1] = asSorting[ nextSortIdx ]; - sorting[0]._idx = nextSortIdx; - } - else { - // Single column - sort only on this column - sorting.length = 0; - sorting.push( [ colIdx, asSorting[0] ] ); - sorting[0]._idx = 0; - } - - // Run the sort by calling a full redraw - _fnReDraw( settings ); - - // callback used for async user interaction - if ( typeof callback == 'function' ) { - callback( settings ); - } - } - - - /** - * Attach a sort handler (click) to a node - * @param {object} settings dataTables settings object - * @param {node} attachTo node to attach the handler to - * @param {int} colIdx column sorting index - * @param {function} [callback] callback function - * @memberof DataTable#oApi - */ - function _fnSortAttachListener ( settings, attachTo, colIdx, callback ) - { - var col = settings.aoColumns[ colIdx ]; - - _fnBindAction( attachTo, {}, function (e) { - /* If the column is not sortable - don't to anything */ - if ( col.bSortable === false ) { - return; - } - - // If processing is enabled use a timeout to allow the processing - // display to be shown - otherwise to it synchronously - if ( settings.oFeatures.bProcessing ) { - _fnProcessingDisplay( settings, true ); - - setTimeout( function() { - _fnSortListener( settings, colIdx, e.shiftKey, callback ); - - // In server-side processing, the draw callback will remove the - // processing display - if ( _fnDataSource( settings ) !== 'ssp' ) { - _fnProcessingDisplay( settings, false ); - } - }, 0 ); - } - else { - _fnSortListener( settings, colIdx, e.shiftKey, callback ); - } - } ); - } - - - /** - * Set the sorting classes on table's body, Note: it is safe to call this function - * when bSort and bSortClasses are false - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnSortingClasses( settings ) - { - var oldSort = settings.aLastSort; - var sortClass = settings.oClasses.sSortColumn; - var sort = _fnSortFlatten( settings ); - var features = settings.oFeatures; - var i, ien, colIdx; - - if ( features.bSort && features.bSortClasses ) { - // Remove old sorting classes - for ( i=0, ien=oldSort.length ; i<ien ; i++ ) { - colIdx = oldSort[i].src; - - // Remove column sorting - $( _pluck( settings.aoData, 'anCells', colIdx ) ) - .removeClass( sortClass + (i<2 ? i+1 : 3) ); - } - - // Add new column sorting - for ( i=0, ien=sort.length ; i<ien ; i++ ) { - colIdx = sort[i].src; - - $( _pluck( settings.aoData, 'anCells', colIdx ) ) - .addClass( sortClass + (i<2 ? i+1 : 3) ); - } - } - - settings.aLastSort = sort; - } - - - // Get the data to sort a column, be it from cache, fresh (populating the - // cache), or from a sort formatter - function _fnSortData( settings, idx ) - { - // Custom sorting function - provided by the sort data type - var column = settings.aoColumns[ idx ]; - var customSort = DataTable.ext.order[ column.sSortDataType ]; - var customData; - - if ( customSort ) { - customData = customSort.call( settings.oInstance, settings, idx, - _fnColumnIndexToVisible( settings, idx ) - ); - } - - // Use / populate cache - var row, cellData; - var formatter = DataTable.ext.type.order[ column.sType+"-pre" ]; - - for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - row = settings.aoData[i]; - - if ( ! row._aSortData ) { - row._aSortData = []; - } - - if ( ! row._aSortData[idx] || customSort ) { - cellData = customSort ? - customData[i] : // If there was a custom sort function, use data from there - _fnGetCellData( settings, i, idx, 'sort' ); - - row._aSortData[ idx ] = formatter ? - formatter( cellData ) : - cellData; - } - } - } - - - - /** - * Save the state of a table - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnSaveState ( settings ) - { - if ( !settings.oFeatures.bStateSave || settings.bDestroying ) - { - return; - } - - /* Store the interesting variables */ - var state = { - time: +new Date(), - start: settings._iDisplayStart, - length: settings._iDisplayLength, - order: $.extend( true, [], settings.aaSorting ), - search: _fnSearchToCamel( settings.oPreviousSearch ), - columns: $.map( settings.aoColumns, function ( col, i ) { - return { - visible: col.bVisible, - search: _fnSearchToCamel( settings.aoPreSearchCols[i] ) - }; - } ) - }; - - _fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] ); - - settings.oSavedState = state; - settings.fnStateSaveCallback.call( settings.oInstance, settings, state ); - } - - - /** - * Attempt to load a saved table state - * @param {object} oSettings dataTables settings object - * @param {object} oInit DataTables init object so we can override settings - * @memberof DataTable#oApi - */ - function _fnLoadState ( settings, oInit ) - { - var i, ien; - var columns = settings.aoColumns; - - if ( ! settings.oFeatures.bStateSave ) { - return; - } - - var state = settings.fnStateLoadCallback.call( settings.oInstance, settings ); - if ( ! state || ! state.time ) { - return; - } - - /* Allow custom and plug-in manipulation functions to alter the saved data set and - * cancelling of loading by returning false - */ - var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, state] ); - if ( $.inArray( false, abStateLoad ) !== -1 ) { - return; - } - - /* Reject old data */ - var duration = settings.iStateDuration; - if ( duration > 0 && state.time < +new Date() - (duration*1000) ) { - return; - } - - // Number of columns have changed - all bets are off, no restore of settings - if ( columns.length !== state.columns.length ) { - return; - } - - // Store the saved state so it might be accessed at any time - settings.oLoadedState = $.extend( true, {}, state ); - - // Restore key features - todo - for 1.11 this needs to be done by - // subscribed events - if ( state.start !== undefined ) { - settings._iDisplayStart = state.start; - settings.iInitDisplayStart = state.start; - } - if ( state.length !== undefined ) { - settings._iDisplayLength = state.length; - } - - // Order - if ( state.order !== undefined ) { - settings.aaSorting = []; - $.each( state.order, function ( i, col ) { - settings.aaSorting.push( col[0] >= columns.length ? - [ 0, col[1] ] : - col - ); - } ); - } - - // Search - if ( state.search !== undefined ) { - $.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) ); - } - - // Columns - for ( i=0, ien=state.columns.length ; i<ien ; i++ ) { - var col = state.columns[i]; - - // Visibility - if ( col.visible !== undefined ) { - columns[i].bVisible = col.visible; - } - - // Search - if ( col.search !== undefined ) { - $.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) ); - } - } - - _fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] ); - } - - - /** - * Return the settings object for a particular table - * @param {node} table table we are using as a dataTable - * @returns {object} Settings object - or null if not found - * @memberof DataTable#oApi - */ - function _fnSettingsFromNode ( table ) - { - var settings = DataTable.settings; - var idx = $.inArray( table, _pluck( settings, 'nTable' ) ); - - return idx !== -1 ? - settings[ idx ] : - null; - } - - - /** - * Log an error message - * @param {object} settings dataTables settings object - * @param {int} level log error messages, or display them to the user - * @param {string} msg error message - * @param {int} tn Technical note id to get more information about the error. - * @memberof DataTable#oApi - */ - function _fnLog( settings, level, msg, tn ) - { - msg = 'DataTables warning: '+ - (settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg; - - if ( tn ) { - msg += '. For more information about this error, please see '+ - 'http://datatables.net/tn/'+tn; - } - - if ( ! level ) { - // Backwards compatibility pre 1.10 - var ext = DataTable.ext; - var type = ext.sErrMode || ext.errMode; - - _fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] ); - - if ( type == 'alert' ) { - alert( msg ); - } - else if ( type == 'throw' ) { - throw new Error(msg); - } - else if ( typeof type == 'function' ) { - type( settings, tn, msg ); - } - } - else if ( window.console && console.log ) { - console.log( msg ); - } - } - - - /** - * See if a property is defined on one object, if so assign it to the other object - * @param {object} ret target object - * @param {object} src source object - * @param {string} name property - * @param {string} [mappedName] name to map too - optional, name used if not given - * @memberof DataTable#oApi - */ - function _fnMap( ret, src, name, mappedName ) - { - if ( $.isArray( name ) ) { - $.each( name, function (i, val) { - if ( $.isArray( val ) ) { - _fnMap( ret, src, val[0], val[1] ); - } - else { - _fnMap( ret, src, val ); - } - } ); - - return; - } - - if ( mappedName === undefined ) { - mappedName = name; - } - - if ( src[name] !== undefined ) { - ret[mappedName] = src[name]; - } - } - - - /** - * Extend objects - very similar to jQuery.extend, but deep copy objects, and - * shallow copy arrays. The reason we need to do this, is that we don't want to - * deep copy array init values (such as aaSorting) since the dev wouldn't be - * able to override them, but we do want to deep copy arrays. - * @param {object} out Object to extend - * @param {object} extender Object from which the properties will be applied to - * out - * @param {boolean} breakRefs If true, then arrays will be sliced to take an - * independent copy with the exception of the `data` or `aaData` parameters - * if they are present. This is so you can pass in a collection to - * DataTables and have that used as your data source without breaking the - * references - * @returns {object} out Reference, just for convenience - out === the return. - * @memberof DataTable#oApi - * @todo This doesn't take account of arrays inside the deep copied objects. - */ - function _fnExtend( out, extender, breakRefs ) - { - var val; - - for ( var prop in extender ) { - if ( extender.hasOwnProperty(prop) ) { - val = extender[prop]; - - if ( $.isPlainObject( val ) ) { - if ( ! $.isPlainObject( out[prop] ) ) { - out[prop] = {}; - } - $.extend( true, out[prop], val ); - } - else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) { - out[prop] = val.slice(); - } - else { - out[prop] = val; - } - } - } - - return out; - } - - - /** - * Bind an event handers to allow a click or return key to activate the callback. - * This is good for accessibility since a return on the keyboard will have the - * same effect as a click, if the element has focus. - * @param {element} n Element to bind the action to - * @param {object} oData Data object to pass to the triggered function - * @param {function} fn Callback function for when the event is triggered - * @memberof DataTable#oApi - */ - function _fnBindAction( n, oData, fn ) - { - $(n) - .bind( 'click.DT', oData, function (e) { - n.blur(); // Remove focus outline for mouse users - fn(e); - } ) - .bind( 'keypress.DT', oData, function (e){ - if ( e.which === 13 ) { - e.preventDefault(); - fn(e); - } - } ) - .bind( 'selectstart.DT', function () { - /* Take the brutal approach to cancelling text selection */ - return false; - } ); - } - - - /** - * Register a callback function. Easily allows a callback function to be added to - * an array store of callback functions that can then all be called together. - * @param {object} oSettings dataTables settings object - * @param {string} sStore Name of the array storage for the callbacks in oSettings - * @param {function} fn Function to be called back - * @param {string} sName Identifying name for the callback (i.e. a label) - * @memberof DataTable#oApi - */ - function _fnCallbackReg( oSettings, sStore, fn, sName ) - { - if ( fn ) - { - oSettings[sStore].push( { - "fn": fn, - "sName": sName - } ); - } - } - - - /** - * Fire callback functions and trigger events. Note that the loop over the - * callback array store is done backwards! Further note that you do not want to - * fire off triggers in time sensitive applications (for example cell creation) - * as its slow. - * @param {object} settings dataTables settings object - * @param {string} callbackArr Name of the array storage for the callbacks in - * oSettings - * @param {string} eventName Name of the jQuery custom event to trigger. If - * null no trigger is fired - * @param {array} args Array of arguments to pass to the callback function / - * trigger - * @memberof DataTable#oApi - */ - function _fnCallbackFire( settings, callbackArr, eventName, args ) - { - var ret = []; - - if ( callbackArr ) { - ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) { - return val.fn.apply( settings.oInstance, args ); - } ); - } - - if ( eventName !== null ) { - var e = $.Event( eventName+'.dt' ); - - $(settings.nTable).trigger( e, args ); - - ret.push( e.result ); - } - - return ret; - } - - - function _fnLengthOverflow ( settings ) - { - var - start = settings._iDisplayStart, - end = settings.fnDisplayEnd(), - len = settings._iDisplayLength; - - /* If we have space to show extra rows (backing up from the end point - then do so */ - if ( start >= end ) - { - start = end - len; - } - - // Keep the start record on the current page - start -= (start % len); - - if ( len === -1 || start < 0 ) - { - start = 0; - } - - settings._iDisplayStart = start; - } - - - function _fnRenderer( settings, type ) - { - var renderer = settings.renderer; - var host = DataTable.ext.renderer[type]; - - if ( $.isPlainObject( renderer ) && renderer[type] ) { - // Specific renderer for this type. If available use it, otherwise use - // the default. - return host[renderer[type]] || host._; - } - else if ( typeof renderer === 'string' ) { - // Common renderer - if there is one available for this type use it, - // otherwise use the default - return host[renderer] || host._; - } - - // Use the default - return host._; - } - - - /** - * Detect the data source being used for the table. Used to simplify the code - * a little (ajax) and to make it compress a little smaller. - * - * @param {object} settings dataTables settings object - * @returns {string} Data source - * @memberof DataTable#oApi - */ - function _fnDataSource ( settings ) - { - if ( settings.oFeatures.bServerSide ) { - return 'ssp'; - } - else if ( settings.ajax || settings.sAjaxSource ) { - return 'ajax'; - } - return 'dom'; - } - - - DataTable = function( options ) - { - /** - * Perform a jQuery selector action on the table's TR elements (from the tbody) and - * return the resulting jQuery object. - * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on - * @param {object} [oOpts] Optional parameters for modifying the rows to be included - * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter - * criterion ("applied") or all TR elements (i.e. no filter). - * @param {string} [oOpts.order=current] Order of the TR elements in the processed array. - * Can be either 'current', whereby the current sorting of the table is used, or - * 'original' whereby the original order the data was read into the table is used. - * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page - * ("current") or not ("all"). If 'current' is given, then order is assumed to be - * 'current' and filter is 'applied', regardless of what they might be given as. - * @returns {object} jQuery object, filtered by the given selector. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Highlight every second row - * oTable.$('tr:odd').css('backgroundColor', 'blue'); - * } ); - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Filter to rows with 'Webkit' in them, add a background colour and then - * // remove the filter, thus highlighting the 'Webkit' rows only. - * oTable.fnFilter('Webkit'); - * oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue'); - * oTable.fnFilter(''); - * } ); - */ - this.$ = function ( sSelector, oOpts ) - { - return this.api(true).$( sSelector, oOpts ); - }; - - - /** - * Almost identical to $ in operation, but in this case returns the data for the matched - * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes - * rather than any descendants, so the data can be obtained for the row/cell. If matching - * rows are found, the data returned is the original data array/object that was used to - * create the row (or a generated array if from a DOM source). - * - * This method is often useful in-combination with $ where both functions are given the - * same parameters and the array indexes will match identically. - * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on - * @param {object} [oOpts] Optional parameters for modifying the rows to be included - * @param {string} [oOpts.filter=none] Select elements that meet the current filter - * criterion ("applied") or all elements (i.e. no filter). - * @param {string} [oOpts.order=current] Order of the data in the processed array. - * Can be either 'current', whereby the current sorting of the table is used, or - * 'original' whereby the original order the data was read into the table is used. - * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page - * ("current") or not ("all"). If 'current' is given, then order is assumed to be - * 'current' and filter is 'applied', regardless of what they might be given as. - * @returns {array} Data for the matched elements. If any elements, as a result of the - * selector, were not TR, TD or TH elements in the DataTable, they will have a null - * entry in the array. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Get the data from the first row in the table - * var data = oTable._('tr:first'); - * - * // Do something useful with the data - * alert( "First cell is: "+data[0] ); - * } ); - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Filter to 'Webkit' and get all data for - * oTable.fnFilter('Webkit'); - * var data = oTable._('tr', {"search": "applied"}); - * - * // Do something with the data - * alert( data.length+" rows matched the search" ); - * } ); - */ - this._ = function ( sSelector, oOpts ) - { - return this.api(true).rows( sSelector, oOpts ).data(); - }; - - - /** - * Create a DataTables Api instance, with the currently selected tables for - * the Api's context. - * @param {boolean} [traditional=false] Set the API instance's context to be - * only the table referred to by the `DataTable.ext.iApiIndex` option, as was - * used in the API presented by DataTables 1.9- (i.e. the traditional mode), - * or if all tables captured in the jQuery object should be used. - * @return {DataTables.Api} - */ - this.api = function ( traditional ) - { - return traditional ? - new _Api( - _fnSettingsFromNode( this[ _ext.iApiIndex ] ) - ) : - new _Api( this ); - }; - - - /** - * Add a single new row or multiple rows of data to the table. Please note - * that this is suitable for client-side processing only - if you are using - * server-side processing (i.e. "bServerSide": true), then to add data, you - * must add it to the data source, i.e. the server-side, through an Ajax call. - * @param {array|object} data The data to be added to the table. This can be: - * <ul> - * <li>1D array of data - add a single row with the data provided</li> - * <li>2D array of arrays - add multiple rows in a single call</li> - * <li>object - data object when using <i>mData</i></li> - * <li>array of objects - multiple data objects when using <i>mData</i></li> - * </ul> - * @param {bool} [redraw=true] redraw the table or not - * @returns {array} An array of integers, representing the list of indexes in - * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to - * the table. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * // Global var for counter - * var giCount = 2; - * - * $(document).ready(function() { - * $('#example').dataTable(); - * } ); - * - * function fnClickAddRow() { - * $('#example').dataTable().fnAddData( [ - * giCount+".1", - * giCount+".2", - * giCount+".3", - * giCount+".4" ] - * ); - * - * giCount++; - * } - */ - this.fnAddData = function( data, redraw ) - { - var api = this.api( true ); - - /* Check if we want to add multiple rows or not */ - var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? - api.rows.add( data ) : - api.row.add( data ); - - if ( redraw === undefined || redraw ) { - api.draw(); - } - - return rows.flatten().toArray(); - }; - - - /** - * This function will make DataTables recalculate the column sizes, based on the data - * contained in the table and the sizes applied to the columns (in the DOM, CSS or - * through the sWidth parameter). This can be useful when the width of the table's - * parent element changes (for example a window resize). - * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable( { - * "sScrollY": "200px", - * "bPaginate": false - * } ); - * - * $(window).bind('resize', function () { - * oTable.fnAdjustColumnSizing(); - * } ); - * } ); - */ - this.fnAdjustColumnSizing = function ( bRedraw ) - { - var api = this.api( true ).columns.adjust(); - var settings = api.settings()[0]; - var scroll = settings.oScroll; - - if ( bRedraw === undefined || bRedraw ) { - api.draw( false ); - } - else if ( scroll.sX !== "" || scroll.sY !== "" ) { - /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */ - _fnScrollDraw( settings ); - } - }; - - - /** - * Quickly and simply clear a table - * @param {bool} [bRedraw=true] redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...) - * oTable.fnClearTable(); - * } ); - */ - this.fnClearTable = function( bRedraw ) - { - var api = this.api( true ).clear(); - - if ( bRedraw === undefined || bRedraw ) { - api.draw(); - } - }; - - - /** - * The exact opposite of 'opening' a row, this function will close any rows which - * are currently 'open'. - * @param {node} nTr the table row to 'close' - * @returns {int} 0 on success, or 1 if failed (can't find the row) - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnClose = function( nTr ) - { - this.api( true ).row( nTr ).child.hide(); - }; - - - /** - * Remove a row for the table - * @param {mixed} target The index of the row from aoData to be deleted, or - * the TR element you want to delete - * @param {function|null} [callBack] Callback function - * @param {bool} [redraw=true] Redraw the table or not - * @returns {array} The row that was deleted - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Immediately remove the first row - * oTable.fnDeleteRow( 0 ); - * } ); - */ - this.fnDeleteRow = function( target, callback, redraw ) - { - var api = this.api( true ); - var rows = api.rows( target ); - var settings = rows.settings()[0]; - var data = settings.aoData[ rows[0][0] ]; - - rows.remove(); - - if ( callback ) { - callback.call( this, settings, data ); - } - - if ( redraw === undefined || redraw ) { - api.draw(); - } - - return data; - }; - - - /** - * Restore the table to it's original state in the DOM by removing all of DataTables - * enhancements, alterations to the DOM structure of the table and event listeners. - * @param {boolean} [remove=false] Completely remove the table from the DOM - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * // This example is fairly pointless in reality, but shows how fnDestroy can be used - * var oTable = $('#example').dataTable(); - * oTable.fnDestroy(); - * } ); - */ - this.fnDestroy = function ( remove ) - { - this.api( true ).destroy( remove ); - }; - - - /** - * Redraw the table - * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Re-draw the table - you wouldn't want to do it here, but it's an example :-) - * oTable.fnDraw(); - * } ); - */ - this.fnDraw = function( complete ) - { - // Note that this isn't an exact match to the old call to _fnDraw - it takes - // into account the new data, but can hold position. - this.api( true ).draw( complete ); - }; - - - /** - * Filter the input based on data - * @param {string} sInput String to filter the table on - * @param {int|null} [iColumn] Column to limit filtering to - * @param {bool} [bRegex=false] Treat as regular expression or not - * @param {bool} [bSmart=true] Perform smart filtering or not - * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es) - * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false) - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sometime later - filter... - * oTable.fnFilter( 'test string' ); - * } ); - */ - this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive ) - { - var api = this.api( true ); - - if ( iColumn === null || iColumn === undefined ) { - api.search( sInput, bRegex, bSmart, bCaseInsensitive ); - } - else { - api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive ); - } - - api.draw(); - }; - - - /** - * Get the data for the whole table, an individual row or an individual cell based on the - * provided parameters. - * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as - * a TR node then the data source for the whole row will be returned. If given as a - * TD/TH cell node then iCol will be automatically calculated and the data for the - * cell returned. If given as an integer, then this is treated as the aoData internal - * data index for the row (see fnGetPosition) and the data for that row used. - * @param {int} [col] Optional column index that you want the data of. - * @returns {array|object|string} If mRow is undefined, then the data for all rows is - * returned. If mRow is defined, just data for that row, and is iCol is - * defined, only data for the designated cell is returned. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * // Row data - * $(document).ready(function() { - * oTable = $('#example').dataTable(); - * - * oTable.$('tr').click( function () { - * var data = oTable.fnGetData( this ); - * // ... do something with the array / object of data for the row - * } ); - * } ); - * - * @example - * // Individual cell data - * $(document).ready(function() { - * oTable = $('#example').dataTable(); - * - * oTable.$('td').click( function () { - * var sData = oTable.fnGetData( this ); - * alert( 'The cell clicked on had the value of '+sData ); - * } ); - * } ); - */ - this.fnGetData = function( src, col ) - { - var api = this.api( true ); - - if ( src !== undefined ) { - var type = src.nodeName ? src.nodeName.toLowerCase() : ''; - - return col !== undefined || type == 'td' || type == 'th' ? - api.cell( src, col ).data() : - api.row( src ).data() || null; - } - - return api.data().toArray(); - }; - - - /** - * Get an array of the TR nodes that are used in the table's body. Note that you will - * typically want to use the '$' API method in preference to this as it is more - * flexible. - * @param {int} [iRow] Optional row index for the TR element you want - * @returns {array|node} If iRow is undefined, returns an array of all TR elements - * in the table's body, or iRow is defined, just the TR element requested. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Get the nodes from the table - * var nNodes = oTable.fnGetNodes( ); - * } ); - */ - this.fnGetNodes = function( iRow ) - { - var api = this.api( true ); - - return iRow !== undefined ? - api.row( iRow ).node() : - api.rows().nodes().flatten().toArray(); - }; - - - /** - * Get the array indexes of a particular cell from it's DOM element - * and column index including hidden columns - * @param {node} node this can either be a TR, TD or TH in the table's body - * @returns {int} If nNode is given as a TR, then a single index is returned, or - * if given as a cell, an array of [row index, column index (visible), - * column index (all)] is given. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * $('#example tbody td').click( function () { - * // Get the position of the current data from the node - * var aPos = oTable.fnGetPosition( this ); - * - * // Get the data array for this row - * var aData = oTable.fnGetData( aPos[0] ); - * - * // Update the data array and return the value - * aData[ aPos[1] ] = 'clicked'; - * this.innerHTML = 'clicked'; - * } ); - * - * // Init DataTables - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnGetPosition = function( node ) - { - var api = this.api( true ); - var nodeName = node.nodeName.toUpperCase(); - - if ( nodeName == 'TR' ) { - return api.row( node ).index(); - } - else if ( nodeName == 'TD' || nodeName == 'TH' ) { - var cell = api.cell( node ).index(); - - return [ - cell.row, - cell.columnVisible, - cell.column - ]; - } - return null; - }; - - - /** - * Check to see if a row is 'open' or not. - * @param {node} nTr the table row to check - * @returns {boolean} true if the row is currently open, false otherwise - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnIsOpen = function( nTr ) - { - return this.api( true ).row( nTr ).child.isShown(); - }; - - - /** - * This function will place a new row directly after a row which is currently - * on display on the page, with the HTML contents that is passed into the - * function. This can be used, for example, to ask for confirmation that a - * particular record should be deleted. - * @param {node} nTr The table row to 'open' - * @param {string|node|jQuery} mHtml The HTML to put into the row - * @param {string} sClass Class to give the new TD cell - * @returns {node} The row opened. Note that if the table row passed in as the - * first parameter, is not found in the table, this method will silently - * return. - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable; - * - * // 'open' an information row when a row is clicked on - * $('#example tbody tr').click( function () { - * if ( oTable.fnIsOpen(this) ) { - * oTable.fnClose( this ); - * } else { - * oTable.fnOpen( this, "Temporary row opened", "info_row" ); - * } - * } ); - * - * oTable = $('#example').dataTable(); - * } ); - */ - this.fnOpen = function( nTr, mHtml, sClass ) - { - return this.api( true ) - .row( nTr ) - .child( mHtml, sClass ) - .show() - .child()[0]; - }; - - - /** - * Change the pagination - provides the internal logic for pagination in a simple API - * function. With this function you can have a DataTables table go to the next, - * previous, first or last pages. - * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" - * or page number to jump to (integer), note that page 0 is the first page. - * @param {bool} [bRedraw=true] Redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * oTable.fnPageChange( 'next' ); - * } ); - */ - this.fnPageChange = function ( mAction, bRedraw ) - { - var api = this.api( true ).page( mAction ); - - if ( bRedraw === undefined || bRedraw ) { - api.draw(false); - } - }; - - - /** - * Show a particular column - * @param {int} iCol The column whose display should be changed - * @param {bool} bShow Show (true) or hide (false) the column - * @param {bool} [bRedraw=true] Redraw the table or not - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Hide the second column after initialisation - * oTable.fnSetColumnVis( 1, false ); - * } ); - */ - this.fnSetColumnVis = function ( iCol, bShow, bRedraw ) - { - var api = this.api( true ).column( iCol ).visible( bShow ); - - if ( bRedraw === undefined || bRedraw ) { - api.columns.adjust().draw(); - } - }; - - - /** - * Get the settings for a particular table for external manipulation - * @returns {object} DataTables settings object. See - * {@link DataTable.models.oSettings} - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * var oSettings = oTable.fnSettings(); - * - * // Show an example parameter from the settings - * alert( oSettings._iDisplayStart ); - * } ); - */ - this.fnSettings = function() - { - return _fnSettingsFromNode( this[_ext.iApiIndex] ); - }; - - - /** - * Sort the table by a particular column - * @param {int} iCol the data index to sort on. Note that this will not match the - * 'display index' if you have hidden data entries - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sort immediately with columns 0 and 1 - * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] ); - * } ); - */ - this.fnSort = function( aaSort ) - { - this.api( true ).order( aaSort ).draw(); - }; - - - /** - * Attach a sort listener to an element for a given column - * @param {node} nNode the element to attach the sort listener to - * @param {int} iColumn the column that a click on this node will sort on - * @param {function} [fnCallback] callback function when sort is run - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * - * // Sort on column 1, when 'sorter' is clicked on - * oTable.fnSortListener( document.getElementById('sorter'), 1 ); - * } ); - */ - this.fnSortListener = function( nNode, iColumn, fnCallback ) - { - this.api( true ).order.listener( nNode, iColumn, fnCallback ); - }; - - - /** - * Update a table cell or row - this method will accept either a single value to - * update the cell with, an array of values with one element for each column or - * an object in the same format as the original data source. The function is - * self-referencing in order to make the multi column updates easier. - * @param {object|array|string} mData Data to update the cell/row with - * @param {node|int} mRow TR element you want to update or the aoData index - * @param {int} [iColumn] The column to update, give as null or undefined to - * update a whole row. - * @param {bool} [bRedraw=true] Redraw the table or not - * @param {bool} [bAction=true] Perform pre-draw actions or not - * @returns {int} 0 on success, 1 on error - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell - * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row - * } ); - */ - this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction ) - { - var api = this.api( true ); - - if ( iColumn === undefined || iColumn === null ) { - api.row( mRow ).data( mData ); - } - else { - api.cell( mRow, iColumn ).data( mData ); - } - - if ( bAction === undefined || bAction ) { - api.columns.adjust(); - } - - if ( bRedraw === undefined || bRedraw ) { - api.draw(); - } - return 0; - }; - - - /** - * Provide a common method for plug-ins to check the version of DataTables being used, in order - * to ensure compatibility. - * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the - * formats "X" and "X.Y" are also acceptable. - * @returns {boolean} true if this version of DataTables is greater or equal to the required - * version, or false if this version of DataTales is not suitable - * @method - * @dtopt API - * @deprecated Since v1.10 - * - * @example - * $(document).ready(function() { - * var oTable = $('#example').dataTable(); - * alert( oTable.fnVersionCheck( '1.9.0' ) ); - * } ); - */ - this.fnVersionCheck = _ext.fnVersionCheck; - - - var _that = this; - var emptyInit = options === undefined; - var len = this.length; - - if ( emptyInit ) { - options = {}; - } - - this.oApi = this.internal = _ext.internal; - - // Extend with old style plug-in API methods - for ( var fn in DataTable.ext.internal ) { - if ( fn ) { - this[fn] = _fnExternApiFunc(fn); - } - } - - this.each(function() { - // For each initialisation we want to give it a clean initialisation - // object that can be bashed around - var o = {}; - var oInit = len > 1 ? // optimisation for single table case - _fnExtend( o, options, true ) : - options; - - /*global oInit,_that,emptyInit*/ - var i=0, iLen, j, jLen, k, kLen; - var sId = this.getAttribute( 'id' ); - var bInitHandedOff = false; - var defaults = DataTable.defaults; - var $this = $(this); - - - /* Sanity check */ - if ( this.nodeName.toLowerCase() != 'table' ) - { - _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 ); - return; - } - - /* Backwards compatibility for the defaults */ - _fnCompatOpts( defaults ); - _fnCompatCols( defaults.column ); - - /* Convert the camel-case defaults to Hungarian */ - _fnCamelToHungarian( defaults, defaults, true ); - _fnCamelToHungarian( defaults.column, defaults.column, true ); - - /* Setting up the initialisation object */ - _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) ); - - - - /* Check to see if we are re-initialising a table */ - var allSettings = DataTable.settings; - for ( i=0, iLen=allSettings.length ; i<iLen ; i++ ) - { - var s = allSettings[i]; - - /* Base check on table node */ - if ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) ) - { - var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve; - var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy; - - if ( emptyInit || bRetrieve ) - { - return s.oInstance; - } - else if ( bDestroy ) - { - s.oInstance.fnDestroy(); - break; - } - else - { - _fnLog( s, 0, 'Cannot reinitialise DataTable', 3 ); - return; - } - } - - /* If the element we are initialising has the same ID as a table which was previously - * initialised, but the table nodes don't match (from before) then we destroy the old - * instance by simply deleting it. This is under the assumption that the table has been - * destroyed by other methods. Anyone using non-id selectors will need to do this manually - */ - if ( s.sTableId == this.id ) - { - allSettings.splice( i, 1 ); - break; - } - } - - /* Ensure the table has an ID - required for accessibility */ - if ( sId === null || sId === "" ) - { - sId = "DataTables_Table_"+(DataTable.ext._unique++); - this.id = sId; - } - - /* Create the settings object for this table and set some of the default parameters */ - var oSettings = $.extend( true, {}, DataTable.models.oSettings, { - "sDestroyWidth": $this[0].style.width, - "sInstance": sId, - "sTableId": sId - } ); - oSettings.nTable = this; - oSettings.oApi = _that.internal; - oSettings.oInit = oInit; - - allSettings.push( oSettings ); - - // Need to add the instance after the instance after the settings object has been added - // to the settings array, so we can self reference the table instance if more than one - oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable(); - - // Backwards compatibility, before we apply all the defaults - _fnCompatOpts( oInit ); - - if ( oInit.oLanguage ) - { - _fnLanguageCompat( oInit.oLanguage ); - } - - // If the length menu is given, but the init display length is not, use the length menu - if ( oInit.aLengthMenu && ! oInit.iDisplayLength ) - { - oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ? - oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0]; - } - - // Apply the defaults and init options to make a single init object will all - // options defined from defaults and instance options. - oInit = _fnExtend( $.extend( true, {}, defaults ), oInit ); - - - // Map the initialisation options onto the settings object - _fnMap( oSettings.oFeatures, oInit, [ - "bPaginate", - "bLengthChange", - "bFilter", - "bSort", - "bSortMulti", - "bInfo", - "bProcessing", - "bAutoWidth", - "bSortClasses", - "bServerSide", - "bDeferRender" - ] ); - _fnMap( oSettings, oInit, [ - "asStripeClasses", - "ajax", - "fnServerData", - "fnFormatNumber", - "sServerMethod", - "aaSorting", - "aaSortingFixed", - "aLengthMenu", - "sPaginationType", - "sAjaxSource", - "sAjaxDataProp", - "iStateDuration", - "sDom", - "bSortCellsTop", - "iTabIndex", - "fnStateLoadCallback", - "fnStateSaveCallback", - "renderer", - "searchDelay", - [ "iCookieDuration", "iStateDuration" ], // backwards compat - [ "oSearch", "oPreviousSearch" ], - [ "aoSearchCols", "aoPreSearchCols" ], - [ "iDisplayLength", "_iDisplayLength" ], - [ "bJQueryUI", "bJUI" ] - ] ); - _fnMap( oSettings.oScroll, oInit, [ - [ "sScrollX", "sX" ], - [ "sScrollXInner", "sXInner" ], - [ "sScrollY", "sY" ], - [ "bScrollCollapse", "bCollapse" ] - ] ); - _fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" ); - - /* Callback functions which are array driven */ - _fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' ); - _fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' ); - _fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' ); - _fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' ); - _fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' ); - _fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' ); - - var oClasses = oSettings.oClasses; - - // @todo Remove in 1.11 - if ( oInit.bJQueryUI ) - { - /* Use the JUI classes object for display. You could clone the oStdClasses object if - * you want to have multiple tables with multiple independent classes - */ - $.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses ); - - if ( oInit.sDom === defaults.sDom && defaults.sDom === "lfrtip" ) - { - /* Set the DOM to use a layout suitable for jQuery UI's theming */ - oSettings.sDom = '<"H"lfr>t<"F"ip>'; - } - - if ( ! oSettings.renderer ) { - oSettings.renderer = 'jqueryui'; - } - else if ( $.isPlainObject( oSettings.renderer ) && ! oSettings.renderer.header ) { - oSettings.renderer.header = 'jqueryui'; - } - } - else - { - $.extend( oClasses, DataTable.ext.classes, oInit.oClasses ); - } - $this.addClass( oClasses.sTable ); - - /* Calculate the scroll bar width and cache it for use later on */ - if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" ) - { - oSettings.oScroll.iBarWidth = _fnScrollBarWidth(); - } - if ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling - oSettings.oScroll.sX = '100%'; - } - - if ( oSettings.iInitDisplayStart === undefined ) - { - /* Display start point, taking into account the save saving */ - oSettings.iInitDisplayStart = oInit.iDisplayStart; - oSettings._iDisplayStart = oInit.iDisplayStart; - } - - if ( oInit.iDeferLoading !== null ) - { - oSettings.bDeferLoading = true; - var tmp = $.isArray( oInit.iDeferLoading ); - oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading; - oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading; - } - - /* Language definitions */ - var oLanguage = oSettings.oLanguage; - $.extend( true, oLanguage, oInit.oLanguage ); - - if ( oLanguage.sUrl !== "" ) - { - /* Get the language definitions from a file - because this Ajax call makes the language - * get async to the remainder of this function we use bInitHandedOff to indicate that - * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor - */ - $.ajax( { - dataType: 'json', - url: oLanguage.sUrl, - success: function ( json ) { - _fnLanguageCompat( json ); - _fnCamelToHungarian( defaults.oLanguage, json ); - $.extend( true, oLanguage, json ); - _fnInitialise( oSettings ); - }, - error: function () { - // Error occurred loading language file, continue on as best we can - _fnInitialise( oSettings ); - } - } ); - bInitHandedOff = true; - } - - /* - * Stripes - */ - if ( oInit.asStripeClasses === null ) - { - oSettings.asStripeClasses =[ - oClasses.sStripeOdd, - oClasses.sStripeEven - ]; - } - - /* Remove row stripe classes if they are already on the table row */ - var stripeClasses = oSettings.asStripeClasses; - var rowOne = $this.children('tbody').find('tr').eq(0); - if ( $.inArray( true, $.map( stripeClasses, function(el, i) { - return rowOne.hasClass(el); - } ) ) !== -1 ) { - $('tbody tr', this).removeClass( stripeClasses.join(' ') ); - oSettings.asDestroyStripes = stripeClasses.slice(); - } - - /* - * Columns - * See if we should load columns automatically or use defined ones - */ - var anThs = []; - var aoColumnsInit; - var nThead = this.getElementsByTagName('thead'); - if ( nThead.length !== 0 ) - { - _fnDetectHeader( oSettings.aoHeader, nThead[0] ); - anThs = _fnGetUniqueThs( oSettings ); - } - - /* If not given a column array, generate one with nulls */ - if ( oInit.aoColumns === null ) - { - aoColumnsInit = []; - for ( i=0, iLen=anThs.length ; i<iLen ; i++ ) - { - aoColumnsInit.push( null ); - } - } - else - { - aoColumnsInit = oInit.aoColumns; - } - - /* Add the columns */ - for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ ) - { - _fnAddColumn( oSettings, anThs ? anThs[i] : null ); - } - - /* Apply the column definitions */ - _fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) { - _fnColumnOptions( oSettings, iCol, oDef ); - } ); - - /* HTML5 attribute detection - build an mData object automatically if the - * attributes are found - */ - if ( rowOne.length ) { - var a = function ( cell, name ) { - return cell.getAttribute( 'data-'+name ) !== null ? name : null; - }; - - $.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) { - var col = oSettings.aoColumns[i]; - - if ( col.mData === i ) { - var sort = a( cell, 'sort' ) || a( cell, 'order' ); - var filter = a( cell, 'filter' ) || a( cell, 'search' ); - - if ( sort !== null || filter !== null ) { - col.mData = { - _: i+'.display', - sort: sort !== null ? i+'.@data-'+sort : undefined, - type: sort !== null ? i+'.@data-'+sort : undefined, - filter: filter !== null ? i+'.@data-'+filter : undefined - }; - - _fnColumnOptions( oSettings, i ); - } - } - } ); - } - - var features = oSettings.oFeatures; - - /* Must be done after everything which can be overridden by the state saving! */ - if ( oInit.bStateSave ) - { - features.bStateSave = true; - _fnLoadState( oSettings, oInit ); - _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' ); - } - - - /* - * Sorting - * @todo For modularisation (1.11) this needs to do into a sort start up handler - */ - - // If aaSorting is not defined, then we use the first indicator in asSorting - // in case that has been altered, so the default sort reflects that option - if ( oInit.aaSorting === undefined ) - { - var sorting = oSettings.aaSorting; - for ( i=0, iLen=sorting.length ; i<iLen ; i++ ) - { - sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0]; - } - } - - /* Do a first pass on the sorting classes (allows any size changes to be taken into - * account, and also will apply sorting disabled classes if disabled - */ - _fnSortingClasses( oSettings ); - - if ( features.bSort ) - { - _fnCallbackReg( oSettings, 'aoDrawCallback', function () { - if ( oSettings.bSorted ) { - var aSort = _fnSortFlatten( oSettings ); - var sortedColumns = {}; - - $.each( aSort, function (i, val) { - sortedColumns[ val.src ] = val.dir; - } ); - - _fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] ); - _fnSortAria( oSettings ); - } - } ); - } - - _fnCallbackReg( oSettings, 'aoDrawCallback', function () { - if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) { - _fnSortingClasses( oSettings ); - } - }, 'sc' ); - - - /* - * Final init - * Cache the header, body and footer as required, creating them if needed - */ - - /* Browser support detection */ - _fnBrowserDetect( oSettings ); - - // Work around for Webkit bug 83867 - store the caption-side before removing from doc - var captions = $this.children('caption').each( function () { - this._captionSide = $this.css('caption-side'); - } ); - - var thead = $this.children('thead'); - if ( thead.length === 0 ) - { - thead = $('<thead/>').appendTo(this); - } - oSettings.nTHead = thead[0]; - - var tbody = $this.children('tbody'); - if ( tbody.length === 0 ) - { - tbody = $('<tbody/>').appendTo(this); - } - oSettings.nTBody = tbody[0]; - - var tfoot = $this.children('tfoot'); - if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) - { - // If we are a scrolling table, and no footer has been given, then we need to create - // a tfoot element for the caption element to be appended to - tfoot = $('<tfoot/>').appendTo(this); - } - - if ( tfoot.length === 0 || tfoot.children().length === 0 ) { - $this.addClass( oClasses.sNoFooter ); - } - else if ( tfoot.length > 0 ) { - oSettings.nTFoot = tfoot[0]; - _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot ); - } - - /* Check if there is data passing into the constructor */ - if ( oInit.aaData ) - { - for ( i=0 ; i<oInit.aaData.length ; i++ ) - { - _fnAddData( oSettings, oInit.aaData[ i ] ); - } - } - else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) - { - /* Grab the data from the page - only do this when deferred loading or no Ajax - * source since there is no point in reading the DOM data if we are then going - * to replace it with Ajax data - */ - _fnAddTr( oSettings, $(oSettings.nTBody).children('tr') ); - } - - /* Copy the data index array */ - oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - - /* Initialisation complete - table can be drawn */ - oSettings.bInitialised = true; - - /* Check if we need to initialise the table (it might not have been handed off to the - * language processor) - */ - if ( bInitHandedOff === false ) - { - _fnInitialise( oSettings ); - } - } ); - _that = null; - return this; - }; - - - - /** - * Computed structure of the DataTables API, defined by the options passed to - * `DataTable.Api.register()` when building the API. - * - * The structure is built in order to speed creation and extension of the Api - * objects since the extensions are effectively pre-parsed. - * - * The array is an array of objects with the following structure, where this - * base array represents the Api prototype base: - * - * [ - * { - * name: 'data' -- string - Property name - * val: function () {}, -- function - Api method (or undefined if just an object - * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result - * propExt: [ ... ] -- array - Array of Api object definitions to extend the property - * }, - * { - * name: 'row' - * val: {}, - * methodExt: [ ... ], - * propExt: [ - * { - * name: 'data' - * val: function () {}, - * methodExt: [ ... ], - * propExt: [ ... ] - * }, - * ... - * ] - * } - * ] - * - * @type {Array} - * @ignore - */ - var __apiStruct = []; - - - /** - * `Array.prototype` reference. - * - * @type object - * @ignore - */ - var __arrayProto = Array.prototype; - - - /** - * Abstraction for `context` parameter of the `Api` constructor to allow it to - * take several different forms for ease of use. - * - * Each of the input parameter types will be converted to a DataTables settings - * object where possible. - * - * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one - * of: - * - * * `string` - jQuery selector. Any DataTables' matching the given selector - * with be found and used. - * * `node` - `TABLE` node which has already been formed into a DataTable. - * * `jQuery` - A jQuery object of `TABLE` nodes. - * * `object` - DataTables settings object - * * `DataTables.Api` - API instance - * @return {array|null} Matching DataTables settings objects. `null` or - * `undefined` is returned if no matching DataTable is found. - * @ignore - */ - var _toSettings = function ( mixed ) - { - var idx, jq; - var settings = DataTable.settings; - var tables = $.map( settings, function (el, i) { - return el.nTable; - } ); - - if ( ! mixed ) { - return []; - } - else if ( mixed.nTable && mixed.oApi ) { - // DataTables settings object - return [ mixed ]; - } - else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) { - // Table node - idx = $.inArray( mixed, tables ); - return idx !== -1 ? [ settings[idx] ] : null; - } - else if ( mixed && typeof mixed.settings === 'function' ) { - return mixed.settings().toArray(); - } - else if ( typeof mixed === 'string' ) { - // jQuery selector - jq = $(mixed); - } - else if ( mixed instanceof $ ) { - // jQuery object (also DataTables instance) - jq = mixed; - } - - if ( jq ) { - return jq.map( function(i) { - idx = $.inArray( this, tables ); - return idx !== -1 ? settings[idx] : null; - } ).toArray(); - } - }; - - - /** - * DataTables API class - used to control and interface with one or more - * DataTables enhanced tables. - * - * The API class is heavily based on jQuery, presenting a chainable interface - * that you can use to interact with tables. Each instance of the API class has - * a "context" - i.e. the tables that it will operate on. This could be a single - * table, all tables on a page or a sub-set thereof. - * - * Additionally the API is designed to allow you to easily work with the data in - * the tables, retrieving and manipulating it as required. This is done by - * presenting the API class as an array like interface. The contents of the - * array depend upon the actions requested by each method (for example - * `rows().nodes()` will return an array of nodes, while `rows().data()` will - * return an array of objects or arrays depending upon your table's - * configuration). The API object has a number of array like methods (`push`, - * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`, - * `unique` etc) to assist your working with the data held in a table. - * - * Most methods (those which return an Api instance) are chainable, which means - * the return from a method call also has all of the methods available that the - * top level object had. For example, these two calls are equivalent: - * - * // Not chained - * api.row.add( {...} ); - * api.draw(); - * - * // Chained - * api.row.add( {...} ).draw(); - * - * @class DataTable.Api - * @param {array|object|string|jQuery} context DataTable identifier. This is - * used to define which DataTables enhanced tables this API will operate on. - * Can be one of: - * - * * `string` - jQuery selector. Any DataTables' matching the given selector - * with be found and used. - * * `node` - `TABLE` node which has already been formed into a DataTable. - * * `jQuery` - A jQuery object of `TABLE` nodes. - * * `object` - DataTables settings object - * @param {array} [data] Data to initialise the Api instance with. - * - * @example - * // Direct initialisation during DataTables construction - * var api = $('#example').DataTable(); - * - * @example - * // Initialisation using a DataTables jQuery object - * var api = $('#example').dataTable().api(); - * - * @example - * // Initialisation as a constructor - * var api = new $.fn.DataTable.Api( 'table.dataTable' ); - */ - _Api = function ( context, data ) - { - if ( ! (this instanceof _Api) ) { - return new _Api( context, data ); - } - - var settings = []; - var ctxSettings = function ( o ) { - var a = _toSettings( o ); - if ( a ) { - settings.push.apply( settings, a ); - } - }; - - if ( $.isArray( context ) ) { - for ( var i=0, ien=context.length ; i<ien ; i++ ) { - ctxSettings( context[i] ); - } - } - else { - ctxSettings( context ); - } - - // Remove duplicates - this.context = _unique( settings ); - - // Initial data - if ( data ) { - this.push.apply( this, data.toArray ? data.toArray() : data ); - } - - // selector - this.selector = { - rows: null, - cols: null, - opts: null - }; - - _Api.extend( this, this, __apiStruct ); - }; - - DataTable.Api = _Api; - - _Api.prototype = /** @lends DataTables.Api */{ - any: function () - { - return this.flatten().length !== 0; - }, - - - concat: __arrayProto.concat, - - - context: [], // array of table settings objects - - - each: function ( fn ) - { - for ( var i=0, ien=this.length ; i<ien; i++ ) { - fn.call( this, this[i], i, this ); - } - - return this; - }, - - - eq: function ( idx ) - { - var ctx = this.context; - - return ctx.length > idx ? - new _Api( ctx[idx], this[idx] ) : - null; - }, - - - filter: function ( fn ) - { - var a = []; - - if ( __arrayProto.filter ) { - a = __arrayProto.filter.call( this, fn, this ); - } - else { - // Compatibility for browsers without EMCA-252-5 (JS 1.6) - for ( var i=0, ien=this.length ; i<ien ; i++ ) { - if ( fn.call( this, this[i], i, this ) ) { - a.push( this[i] ); - } - } - } - - return new _Api( this.context, a ); - }, - - - flatten: function () - { - var a = []; - return new _Api( this.context, a.concat.apply( a, this.toArray() ) ); - }, - - - join: __arrayProto.join, - - - indexOf: __arrayProto.indexOf || function (obj, start) - { - for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) { - if ( this[i] === obj ) { - return i; - } - } - return -1; - }, - - iterator: function ( flatten, type, fn, alwaysNew ) { - var - a = [], ret, - i, ien, j, jen, - context = this.context, - rows, items, item, - selector = this.selector; - - // Argument shifting - if ( typeof flatten === 'string' ) { - alwaysNew = fn; - fn = type; - type = flatten; - flatten = false; - } - - for ( i=0, ien=context.length ; i<ien ; i++ ) { - var apiInst = new _Api( context[i] ); - - if ( type === 'table' ) { - ret = fn.call( apiInst, context[i], i ); - - if ( ret !== undefined ) { - a.push( ret ); - } - } - else if ( type === 'columns' || type === 'rows' ) { - // this has same length as context - one entry for each table - ret = fn.call( apiInst, context[i], this[i], i ); - - if ( ret !== undefined ) { - a.push( ret ); - } - } - else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) { - // columns and rows share the same structure. - // 'this' is an array of column indexes for each context - items = this[i]; - - if ( type === 'column-rows' ) { - rows = _selector_row_indexes( context[i], selector.opts ); - } - - for ( j=0, jen=items.length ; j<jen ; j++ ) { - item = items[j]; - - if ( type === 'cell' ) { - ret = fn.call( apiInst, context[i], item.row, item.column, i, j ); - } - else { - ret = fn.call( apiInst, context[i], item, i, j, rows ); - } - - if ( ret !== undefined ) { - a.push( ret ); - } - } - } - } - - if ( a.length || alwaysNew ) { - var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a ); - var apiSelector = api.selector; - apiSelector.rows = selector.rows; - apiSelector.cols = selector.cols; - apiSelector.opts = selector.opts; - return api; - } - return this; - }, - - - lastIndexOf: __arrayProto.lastIndexOf || function (obj, start) - { - // Bit cheeky... - return this.indexOf.apply( this.toArray.reverse(), arguments ); - }, - - - length: 0, - - - map: function ( fn ) - { - var a = []; - - if ( __arrayProto.map ) { - a = __arrayProto.map.call( this, fn, this ); - } - else { - // Compatibility for browsers without EMCA-252-5 (JS 1.6) - for ( var i=0, ien=this.length ; i<ien ; i++ ) { - a.push( fn.call( this, this[i], i ) ); - } - } - - return new _Api( this.context, a ); - }, - - - pluck: function ( prop ) - { - return this.map( function ( el ) { - return el[ prop ]; - } ); - }, - - pop: __arrayProto.pop, - - - push: __arrayProto.push, - - - // Does not return an API instance - reduce: __arrayProto.reduce || function ( fn, init ) - { - return _fnReduce( this, fn, init, 0, this.length, 1 ); - }, - - - reduceRight: __arrayProto.reduceRight || function ( fn, init ) - { - return _fnReduce( this, fn, init, this.length-1, -1, -1 ); - }, - - - reverse: __arrayProto.reverse, - - - // Object with rows, columns and opts - selector: null, - - - shift: __arrayProto.shift, - - - sort: __arrayProto.sort, // ? name - order? - - - splice: __arrayProto.splice, - - - toArray: function () - { - return __arrayProto.slice.call( this ); - }, - - - to$: function () - { - return $( this ); - }, - - - toJQuery: function () - { - return $( this ); - }, - - - unique: function () - { - return new _Api( this.context, _unique(this) ); - }, - - - unshift: __arrayProto.unshift - }; - - - _Api.extend = function ( scope, obj, ext ) - { - // Only extend API instances and static properties of the API - if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) { - return; - } - - var - i, ien, - j, jen, - struct, inner, - methodScoping = function ( scope, fn, struc ) { - return function () { - var ret = fn.apply( scope, arguments ); - - // Method extension - _Api.extend( ret, ret, struc.methodExt ); - return ret; - }; - }; - - for ( i=0, ien=ext.length ; i<ien ; i++ ) { - struct = ext[i]; - - // Value - obj[ struct.name ] = typeof struct.val === 'function' ? - methodScoping( scope, struct.val, struct ) : - $.isPlainObject( struct.val ) ? - {} : - struct.val; - - obj[ struct.name ].__dt_wrapper = true; - - // Property extension - _Api.extend( scope, obj[ struct.name ], struct.propExt ); - } - }; - - - // @todo - Is there need for an augment function? - // _Api.augment = function ( inst, name ) - // { - // // Find src object in the structure from the name - // var parts = name.split('.'); - - // _Api.extend( inst, obj ); - // }; - - - // [ - // { - // name: 'data' -- string - Property name - // val: function () {}, -- function - Api method (or undefined if just an object - // methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result - // propExt: [ ... ] -- array - Array of Api object definitions to extend the property - // }, - // { - // name: 'row' - // val: {}, - // methodExt: [ ... ], - // propExt: [ - // { - // name: 'data' - // val: function () {}, - // methodExt: [ ... ], - // propExt: [ ... ] - // }, - // ... - // ] - // } - // ] - - _Api.register = _api_register = function ( name, val ) - { - if ( $.isArray( name ) ) { - for ( var j=0, jen=name.length ; j<jen ; j++ ) { - _Api.register( name[j], val ); - } - return; - } - - var - i, ien, - heir = name.split('.'), - struct = __apiStruct, - key, method; - - var find = function ( src, name ) { - for ( var i=0, ien=src.length ; i<ien ; i++ ) { - if ( src[i].name === name ) { - return src[i]; - } - } - return null; - }; - - for ( i=0, ien=heir.length ; i<ien ; i++ ) { - method = heir[i].indexOf('()') !== -1; - key = method ? - heir[i].replace('()', '') : - heir[i]; - - var src = find( struct, key ); - if ( ! src ) { - src = { - name: key, - val: {}, - methodExt: [], - propExt: [] - }; - struct.push( src ); - } - - if ( i === ien-1 ) { - src.val = val; - } - else { - struct = method ? - src.methodExt : - src.propExt; - } - } - }; - - - _Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) { - _Api.register( pluralName, val ); - - _Api.register( singularName, function () { - var ret = val.apply( this, arguments ); - - if ( ret === this ) { - // Returned item is the API instance that was passed in, return it - return this; - } - else if ( ret instanceof _Api ) { - // New API instance returned, want the value from the first item - // in the returned array for the singular result. - return ret.length ? - $.isArray( ret[0] ) ? - new _Api( ret.context, ret[0] ) : // Array results are 'enhanced' - ret[0] : - undefined; - } - - // Non-API return - just fire it back - return ret; - } ); - }; - - - /** - * Selector for HTML tables. Apply the given selector to the give array of - * DataTables settings objects. - * - * @param {string|integer} [selector] jQuery selector string or integer - * @param {array} Array of DataTables settings objects to be filtered - * @return {array} - * @ignore - */ - var __table_selector = function ( selector, a ) - { - // Integer is used to pick out a table by index - if ( typeof selector === 'number' ) { - return [ a[ selector ] ]; - } - - // Perform a jQuery selector on the table nodes - var nodes = $.map( a, function (el, i) { - return el.nTable; - } ); - - return $(nodes) - .filter( selector ) - .map( function (i) { - // Need to translate back from the table node to the settings - var idx = $.inArray( this, nodes ); - return a[ idx ]; - } ) - .toArray(); - }; - - - - /** - * Context selector for the API's context (i.e. the tables the API instance - * refers to. - * - * @name DataTable.Api#tables - * @param {string|integer} [selector] Selector to pick which tables the iterator - * should operate on. If not given, all tables in the current context are - * used. This can be given as a jQuery selector (for example `':gt(0)'`) to - * select multiple tables or as an integer to select a single table. - * @returns {DataTable.Api} Returns a new API instance if a selector is given. - */ - _api_register( 'tables()', function ( selector ) { - // A new instance is created if there was a selector specified - return selector ? - new _Api( __table_selector( selector, this.context ) ) : - this; - } ); - - - _api_register( 'table()', function ( selector ) { - var tables = this.tables( selector ); - var ctx = tables.context; - - // Truncate to the first matched table - return ctx.length ? - new _Api( ctx[0] ) : - tables; - } ); - - - _api_registerPlural( 'tables().nodes()', 'table().node()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTable; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().body()', 'table().body()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTBody; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().header()', 'table().header()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTHead; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().footer()', 'table().footer()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTFoot; - }, 1 ); - } ); - - - _api_registerPlural( 'tables().containers()', 'table().container()' , function () { - return this.iterator( 'table', function ( ctx ) { - return ctx.nTableWrapper; - }, 1 ); - } ); - - - - /** - * Redraw the tables in the current context. - * - * @param {boolean} [reset=true] Reset (default) or hold the current paging - * position. A full re-sort and re-filter is performed when this method is - * called, which is why the pagination reset is the default action. - * @returns {DataTables.Api} this - */ - _api_register( 'draw()', function ( resetPaging ) { - return this.iterator( 'table', function ( settings ) { - _fnReDraw( settings, resetPaging===false ); - } ); - } ); - - - - /** - * Get the current page index. - * - * @return {integer} Current page index (zero based) - *//** - * Set the current page. - * - * Note that if you attempt to show a page which does not exist, DataTables will - * not throw an error, but rather reset the paging. - * - * @param {integer|string} action The paging action to take. This can be one of: - * * `integer` - The page index to jump to - * * `string` - An action to take: - * * `first` - Jump to first page. - * * `next` - Jump to the next page - * * `previous` - Jump to previous page - * * `last` - Jump to the last page. - * @returns {DataTables.Api} this - */ - _api_register( 'page()', function ( action ) { - if ( action === undefined ) { - return this.page.info().page; // not an expensive call - } - - // else, have an action to take on all tables - return this.iterator( 'table', function ( settings ) { - _fnPageChange( settings, action ); - } ); - } ); - - - /** - * Paging information for the first table in the current context. - * - * If you require paging information for another table, use the `table()` method - * with a suitable selector. - * - * @return {object} Object with the following properties set: - * * `page` - Current page index (zero based - i.e. the first page is `0`) - * * `pages` - Total number of pages - * * `start` - Display index for the first record shown on the current page - * * `end` - Display index for the last record shown on the current page - * * `length` - Display length (number of records). Note that generally `start - * + length = end`, but this is not always true, for example if there are - * only 2 records to show on the final page, with a length of 10. - * * `recordsTotal` - Full data set length - * * `recordsDisplay` - Data set length once the current filtering criterion - * are applied. - */ - _api_register( 'page.info()', function ( action ) { - if ( this.context.length === 0 ) { - return undefined; - } - - var - settings = this.context[0], - start = settings._iDisplayStart, - len = settings._iDisplayLength, - visRecords = settings.fnRecordsDisplay(), - all = len === -1; - - return { - "page": all ? 0 : Math.floor( start / len ), - "pages": all ? 1 : Math.ceil( visRecords / len ), - "start": start, - "end": settings.fnDisplayEnd(), - "length": len, - "recordsTotal": settings.fnRecordsTotal(), - "recordsDisplay": visRecords - }; - } ); - - - /** - * Get the current page length. - * - * @return {integer} Current page length. Note `-1` indicates that all records - * are to be shown. - *//** - * Set the current page length. - * - * @param {integer} Page length to set. Use `-1` to show all records. - * @returns {DataTables.Api} this - */ - _api_register( 'page.len()', function ( len ) { - // Note that we can't call this function 'length()' because `length` - // is a Javascript property of functions which defines how many arguments - // the function expects. - if ( len === undefined ) { - return this.context.length !== 0 ? - this.context[0]._iDisplayLength : - undefined; - } - - // else, set the page length - return this.iterator( 'table', function ( settings ) { - _fnLengthChange( settings, len ); - } ); - } ); - - - - var __reload = function ( settings, holdPosition, callback ) { - // Use the draw event to trigger a callback - if ( callback ) { - var api = new _Api( settings ); - - api.one( 'draw', function () { - callback( api.ajax.json() ); - } ); - } - - if ( _fnDataSource( settings ) == 'ssp' ) { - _fnReDraw( settings, holdPosition ); - } - else { - // Trigger xhr - _fnProcessingDisplay( settings, true ); - - _fnBuildAjax( settings, [], function( json ) { - _fnClearTable( settings ); - - var data = _fnAjaxDataSrc( settings, json ); - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - _fnAddData( settings, data[i] ); - } - - _fnReDraw( settings, holdPosition ); - _fnProcessingDisplay( settings, false ); - } ); - } - }; - - - /** - * Get the JSON response from the last Ajax request that DataTables made to the - * server. Note that this returns the JSON from the first table in the current - * context. - * - * @return {object} JSON received from the server. - */ - _api_register( 'ajax.json()', function () { - var ctx = this.context; - - if ( ctx.length > 0 ) { - return ctx[0].json; - } - - // else return undefined; - } ); - - - /** - * Get the data submitted in the last Ajax request - */ - _api_register( 'ajax.params()', function () { - var ctx = this.context; - - if ( ctx.length > 0 ) { - return ctx[0].oAjaxData; - } - - // else return undefined; - } ); - - - /** - * Reload tables from the Ajax data source. Note that this function will - * automatically re-draw the table when the remote data has been loaded. - * - * @param {boolean} [reset=true] Reset (default) or hold the current paging - * position. A full re-sort and re-filter is performed when this method is - * called, which is why the pagination reset is the default action. - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.reload()', function ( callback, resetPaging ) { - return this.iterator( 'table', function (settings) { - __reload( settings, resetPaging===false, callback ); - } ); - } ); - - - /** - * Get the current Ajax URL. Note that this returns the URL from the first - * table in the current context. - * - * @return {string} Current Ajax source URL - *//** - * Set the Ajax URL. Note that this will set the URL for all tables in the - * current context. - * - * @param {string} url URL to set. - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.url()', function ( url ) { - var ctx = this.context; - - if ( url === undefined ) { - // get - if ( ctx.length === 0 ) { - return undefined; - } - ctx = ctx[0]; - - return ctx.ajax ? - $.isPlainObject( ctx.ajax ) ? - ctx.ajax.url : - ctx.ajax : - ctx.sAjaxSource; - } - - // set - return this.iterator( 'table', function ( settings ) { - if ( $.isPlainObject( settings.ajax ) ) { - settings.ajax.url = url; - } - else { - settings.ajax = url; - } - // No need to consider sAjaxSource here since DataTables gives priority - // to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any - // value of `sAjaxSource` redundant. - } ); - } ); - - - /** - * Load data from the newly set Ajax URL. Note that this method is only - * available when `ajax.url()` is used to set a URL. Additionally, this method - * has the same effect as calling `ajax.reload()` but is provided for - * convenience when setting a new URL. Like `ajax.reload()` it will - * automatically redraw the table once the remote data has been loaded. - * - * @returns {DataTables.Api} this - */ - _api_register( 'ajax.url().load()', function ( callback, resetPaging ) { - // Same as a reload, but makes sense to present it for easy access after a - // url change - return this.iterator( 'table', function ( ctx ) { - __reload( ctx, resetPaging===false, callback ); - } ); - } ); - - - - - var _selector_run = function ( type, selector, selectFn, settings, opts ) - { - var - out = [], res, - a, i, ien, j, jen, - selectorType = typeof selector; - - // Can't just check for isArray here, as an API or jQuery instance might be - // given with their array like look - if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) { - selector = [ selector ]; - } - - for ( i=0, ien=selector.length ; i<ien ; i++ ) { - a = selector[i] && selector[i].split ? - selector[i].split(',') : - [ selector[i] ]; - - for ( j=0, jen=a.length ; j<jen ; j++ ) { - res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] ); - - if ( res && res.length ) { - out.push.apply( out, res ); - } - } - } - - // selector extensions - var ext = _ext.selector[ type ]; - if ( ext.length ) { - for ( i=0, ien=ext.length ; i<ien ; i++ ) { - out = ext[i]( settings, opts, out ); - } - } - - return out; - }; - - - var _selector_opts = function ( opts ) - { - if ( ! opts ) { - opts = {}; - } - - // Backwards compatibility for 1.9- which used the terminology filter rather - // than search - if ( opts.filter && opts.search === undefined ) { - opts.search = opts.filter; - } - - return $.extend( { - search: 'none', - order: 'current', - page: 'all' - }, opts ); - }; - - - var _selector_first = function ( inst ) - { - // Reduce the API instance to the first item found - for ( var i=0, ien=inst.length ; i<ien ; i++ ) { - if ( inst[i].length > 0 ) { - // Assign the first element to the first item in the instance - // and truncate the instance and context - inst[0] = inst[i]; - inst[0].length = 1; - inst.length = 1; - inst.context = [ inst.context[i] ]; - - return inst; - } - } - - // Not found - return an empty instance - inst.length = 0; - return inst; - }; - - - var _selector_row_indexes = function ( settings, opts ) - { - var - i, ien, tmp, a=[], - displayFiltered = settings.aiDisplay, - displayMaster = settings.aiDisplayMaster; - - var - search = opts.search, // none, applied, removed - order = opts.order, // applied, current, index (original - compatibility with 1.9) - page = opts.page; // all, current - - if ( _fnDataSource( settings ) == 'ssp' ) { - // In server-side processing mode, most options are irrelevant since - // rows not shown don't exist and the index order is the applied order - // Removed is a special case - for consistency just return an empty - // array - return search === 'removed' ? - [] : - _range( 0, displayMaster.length ); - } - else if ( page == 'current' ) { - // Current page implies that order=current and fitler=applied, since it is - // fairly senseless otherwise, regardless of what order and search actually - // are - for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) { - a.push( displayFiltered[i] ); - } - } - else if ( order == 'current' || order == 'applied' ) { - a = search == 'none' ? - displayMaster.slice() : // no search - search == 'applied' ? - displayFiltered.slice() : // applied search - $.map( displayMaster, function (el, i) { // removed search - return $.inArray( el, displayFiltered ) === -1 ? el : null; - } ); - } - else if ( order == 'index' || order == 'original' ) { - for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { - if ( search == 'none' ) { - a.push( i ); - } - else { // applied | removed - tmp = $.inArray( i, displayFiltered ); - - if ((tmp === -1 && search == 'removed') || - (tmp >= 0 && search == 'applied') ) - { - a.push( i ); - } - } - } - } - - return a; - }; - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Rows - * - * {} - no selector - use all available rows - * {integer} - row aoData index - * {node} - TR node - * {string} - jQuery selector to apply to the TR elements - * {array} - jQuery array of nodes, or simply an array of TR nodes - * - */ - - - var __row_selector = function ( settings, selector, opts ) - { - var run = function ( sel ) { - var selInt = _intVal( sel ); - var i, ien; - - // Short cut - selector is a number and no options provided (default is - // all records, so no need to check if the index is in there, since it - // must be - dev error if the index doesn't exist). - if ( selInt !== null && ! opts ) { - return [ selInt ]; - } - - var rows = _selector_row_indexes( settings, opts ); - - if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) { - // Selector - integer - return [ selInt ]; - } - else if ( ! sel ) { - // Selector - none - return rows; - } - - // Selector - function - if ( typeof sel === 'function' ) { - return $.map( rows, function (idx) { - var row = settings.aoData[ idx ]; - return sel( idx, row._aData, row.nTr ) ? idx : null; - } ); - } - - // Get nodes in the order from the `rows` array with null values removed - var nodes = _removeEmpty( - _pluck_order( settings.aoData, rows, 'nTr' ) - ); - - // Selector - node - if ( sel.nodeName ) { - if ( $.inArray( sel, nodes ) !== -1 ) { - return [ sel._DT_RowIndex ]; // sel is a TR node that is in the table - // and DataTables adds a prop for fast lookup - } - } - - // Selector - jQuery selector string, array of nodes or jQuery object/ - // As jQuery's .filter() allows jQuery objects to be passed in filter, - // it also allows arrays, so this will cope with all three options - return $(nodes) - .filter( sel ) - .map( function () { - return this._DT_RowIndex; - } ) - .toArray(); - }; - - return _selector_run( 'row', selector, run, settings, opts ); - }; - - - _api_register( 'rows()', function ( selector, opts ) { - // argument shifting - if ( selector === undefined ) { - selector = ''; - } - else if ( $.isPlainObject( selector ) ) { - opts = selector; - selector = ''; - } - - opts = _selector_opts( opts ); - - var inst = this.iterator( 'table', function ( settings ) { - return __row_selector( settings, selector, opts ); - }, 1 ); - - // Want argument shifting here and in __row_selector? - inst.selector.rows = selector; - inst.selector.opts = opts; - - return inst; - } ); - - _api_register( 'rows().nodes()', function () { - return this.iterator( 'row', function ( settings, row ) { - return settings.aoData[ row ].nTr || undefined; - }, 1 ); - } ); - - _api_register( 'rows().data()', function () { - return this.iterator( true, 'rows', function ( settings, rows ) { - return _pluck_order( settings.aoData, rows, '_aData' ); - }, 1 ); - } ); - - _api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) { - return this.iterator( 'row', function ( settings, row ) { - var r = settings.aoData[ row ]; - return type === 'search' ? r._aFilterData : r._aSortData; - }, 1 ); - } ); - - _api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) { - return this.iterator( 'row', function ( settings, row ) { - _fnInvalidate( settings, row, src ); - } ); - } ); - - _api_registerPlural( 'rows().indexes()', 'row().index()', function () { - return this.iterator( 'row', function ( settings, row ) { - return row; - }, 1 ); - } ); - - _api_registerPlural( 'rows().remove()', 'row().remove()', function () { - var that = this; - - return this.iterator( 'row', function ( settings, row, thatIdx ) { - var data = settings.aoData; - - data.splice( row, 1 ); - - // Update the _DT_RowIndex parameter on all rows in the table - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - if ( data[i].nTr !== null ) { - data[i].nTr._DT_RowIndex = i; - } - } - - // Remove the target row from the search array - var displayIndex = $.inArray( row, settings.aiDisplay ); - - // Delete from the display arrays - _fnDeleteIndex( settings.aiDisplayMaster, row ); - _fnDeleteIndex( settings.aiDisplay, row ); - _fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes - - // Check for an 'overflow' they case for displaying the table - _fnLengthOverflow( settings ); - } ); - } ); - - - _api_register( 'rows.add()', function ( rows ) { - var newRows = this.iterator( 'table', function ( settings ) { - var row, i, ien; - var out = []; - - for ( i=0, ien=rows.length ; i<ien ; i++ ) { - row = rows[i]; - - if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { - out.push( _fnAddTr( settings, row )[0] ); - } - else { - out.push( _fnAddData( settings, row ) ); - } - } - - return out; - }, 1 ); - - // Return an Api.rows() extended instance, so rows().nodes() etc can be used - var modRows = this.rows( -1 ); - modRows.pop(); - modRows.push.apply( modRows, newRows.toArray() ); - - return modRows; - } ); - - - - - - /** - * - */ - _api_register( 'row()', function ( selector, opts ) { - return _selector_first( this.rows( selector, opts ) ); - } ); - - - _api_register( 'row().data()', function ( data ) { - var ctx = this.context; - - if ( data === undefined ) { - // Get - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ]._aData : - undefined; - } - - // Set - ctx[0].aoData[ this[0] ]._aData = data; - - // Automatically invalidate - _fnInvalidate( ctx[0], this[0], 'data' ); - - return this; - } ); - - - _api_register( 'row().node()', function () { - var ctx = this.context; - - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ].nTr || null : - null; - } ); - - - _api_register( 'row.add()', function ( row ) { - // Allow a jQuery object to be passed in - only a single row is added from - // it though - the first element in the set - if ( row instanceof $ && row.length ) { - row = row[0]; - } - - var rows = this.iterator( 'table', function ( settings ) { - if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { - return _fnAddTr( settings, row )[0]; - } - return _fnAddData( settings, row ); - } ); - - // Return an Api.rows() extended instance, with the newly added row selected - return this.row( rows[0] ); - } ); - - - - var __details_add = function ( ctx, row, data, klass ) - { - // Convert to array of TR elements - var rows = []; - var addRow = function ( r, k ) { - // Recursion to allow for arrays of jQuery objects - if ( $.isArray( r ) || r instanceof $ ) { - for ( var i=0, ien=r.length ; i<ien ; i++ ) { - addRow( r[i], k ); - } - return; - } - - // If we get a TR element, then just add it directly - up to the dev - // to add the correct number of columns etc - if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) { - rows.push( r ); - } - else { - // Otherwise create a row with a wrapper - var created = $('<tr><td/></tr>').addClass( k ); - $('td', created) - .addClass( k ) - .html( r ) - [0].colSpan = _fnVisbleColumns( ctx ); - - rows.push( created[0] ); - } - }; - - addRow( data, klass ); - - if ( row._details ) { - row._details.remove(); - } - - row._details = $(rows); - - // If the children were already shown, that state should be retained - if ( row._detailsShow ) { - row._details.insertAfter( row.nTr ); - } - }; - - - var __details_remove = function ( api, idx ) - { - var ctx = api.context; - - if ( ctx.length ) { - var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ]; - - if ( row._details ) { - row._details.remove(); - - row._detailsShow = undefined; - row._details = undefined; - } - } - }; - - - var __details_display = function ( api, show ) { - var ctx = api.context; - - if ( ctx.length && api.length ) { - var row = ctx[0].aoData[ api[0] ]; - - if ( row._details ) { - row._detailsShow = show; - - if ( show ) { - row._details.insertAfter( row.nTr ); - } - else { - row._details.detach(); - } - - __details_events( ctx[0] ); - } - } - }; - - - var __details_events = function ( settings ) - { - var api = new _Api( settings ); - var namespace = '.dt.DT_details'; - var drawEvent = 'draw'+namespace; - var colvisEvent = 'column-visibility'+namespace; - var destroyEvent = 'destroy'+namespace; - var data = settings.aoData; - - api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent ); - - if ( _pluck( data, '_details' ).length > 0 ) { - // On each draw, insert the required elements into the document - api.on( drawEvent, function ( e, ctx ) { - if ( settings !== ctx ) { - return; - } - - api.rows( {page:'current'} ).eq(0).each( function (idx) { - // Internal data grab - var row = data[ idx ]; - - if ( row._detailsShow ) { - row._details.insertAfter( row.nTr ); - } - } ); - } ); - - // Column visibility change - update the colspan - api.on( colvisEvent, function ( e, ctx, idx, vis ) { - if ( settings !== ctx ) { - return; - } - - // Update the colspan for the details rows (note, only if it already has - // a colspan) - var row, visible = _fnVisbleColumns( ctx ); - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - row = data[i]; - - if ( row._details ) { - row._details.children('td[colspan]').attr('colspan', visible ); - } - } - } ); - - // Table destroyed - nuke any child rows - api.on( destroyEvent, function ( e, ctx ) { - if ( settings !== ctx ) { - return; - } - - for ( var i=0, ien=data.length ; i<ien ; i++ ) { - if ( data[i]._details ) { - __details_remove( api, i ); - } - } - } ); - } - }; - - // Strings for the method names to help minification - var _emp = ''; - var _child_obj = _emp+'row().child'; - var _child_mth = _child_obj+'()'; - - // data can be: - // tr - // string - // jQuery or array of any of the above - _api_register( _child_mth, function ( data, klass ) { - var ctx = this.context; - - if ( data === undefined ) { - // get - return ctx.length && this.length ? - ctx[0].aoData[ this[0] ]._details : - undefined; - } - else if ( data === true ) { - // show - this.child.show(); - } - else if ( data === false ) { - // remove - __details_remove( this ); - } - else if ( ctx.length && this.length ) { - // set - __details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass ); - } - - return this; - } ); - - - _api_register( [ - _child_obj+'.show()', - _child_mth+'.show()' // only when `child()` was called with parameters (without - ], function ( show ) { // it returns an object and this method is not executed) - __details_display( this, true ); - return this; - } ); - - - _api_register( [ - _child_obj+'.hide()', - _child_mth+'.hide()' // only when `child()` was called with parameters (without - ], function () { // it returns an object and this method is not executed) - __details_display( this, false ); - return this; - } ); - - - _api_register( [ - _child_obj+'.remove()', - _child_mth+'.remove()' // only when `child()` was called with parameters (without - ], function () { // it returns an object and this method is not executed) - __details_remove( this ); - return this; - } ); - - - _api_register( _child_obj+'.isShown()', function () { - var ctx = this.context; - - if ( ctx.length && this.length ) { - // _detailsShown as false or undefined will fall through to return false - return ctx[0].aoData[ this[0] ]._detailsShow || false; - } - return false; - } ); - - - - /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Columns - * - * {integer} - column index (>=0 count from left, <0 count from right) - * "{integer}:visIdx" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right) - * "{integer}:visible" - alias for {integer}:visIdx (>=0 count from left, <0 count from right) - * "{string}:name" - column name - * "{string}" - jQuery selector on column header nodes - * - */ - - // can be an array of these items, comma separated list, or an array of comma - // separated lists - - var __re_column_selector = /^(.+):(name|visIdx|visible)$/; - - - // r1 and r2 are redundant - but it means that the parameters match for the - // iterator callback in columns().data() - var __columnData = function ( settings, column, r1, r2, rows ) { - var a = []; - for ( var row=0, ien=rows.length ; row<ien ; row++ ) { - a.push( _fnGetCellData( settings, rows[row], column ) ); - } - return a; - }; - - - var __column_selector = function ( settings, selector, opts ) - { - var - columns = settings.aoColumns, - names = _pluck( columns, 'sName' ), - nodes = _pluck( columns, 'nTh' ); - - var run = function ( s ) { - var selInt = _intVal( s ); - - // Selector - all - if ( s === '' ) { - return _range( columns.length ); - } - - // Selector - index - if ( selInt !== null ) { - return [ selInt >= 0 ? - selInt : // Count from left - columns.length + selInt // Count from right (+ because its a negative value) - ]; - } - - // Selector = function - if ( typeof s === 'function' ) { - var rows = _selector_row_indexes( settings, opts ); - - return $.map( columns, function (col, idx) { - return s( - idx, - __columnData( settings, idx, 0, 0, rows ), - nodes[ idx ] - ) ? idx : null; - } ); - } - - // jQuery or string selector - var match = typeof s === 'string' ? - s.match( __re_column_selector ) : - ''; - - if ( match ) { - switch( match[2] ) { - case 'visIdx': - case 'visible': - var idx = parseInt( match[1], 10 ); - // Visible index given, convert to column index - if ( idx < 0 ) { - // Counting from the right - var visColumns = $.map( columns, function (col,i) { - return col.bVisible ? i : null; - } ); - return [ visColumns[ visColumns.length + idx ] ]; - } - // Counting from the left - return [ _fnVisibleToColumnIndex( settings, idx ) ]; - - case 'name': - // match by name. `names` is column index complete and in order - return $.map( names, function (name, i) { - return name === match[1] ? i : null; - } ); - } - } - else { - // jQuery selector on the TH elements for the columns - return $( nodes ) - .filter( s ) - .map( function () { - return $.inArray( this, nodes ); // `nodes` is column index complete and in order - } ) - .toArray(); - } - }; - - return _selector_run( 'column', selector, run, settings, opts ); - }; - - - var __setColumnVis = function ( settings, column, vis, recalc ) { - var - cols = settings.aoColumns, - col = cols[ column ], - data = settings.aoData, - row, cells, i, ien, tr; - - // Get - if ( vis === undefined ) { - return col.bVisible; - } - - // Set - // No change - if ( col.bVisible === vis ) { - return; - } - - if ( vis ) { - // Insert column - // Need to decide if we should use appendChild or insertBefore - var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 ); - - for ( i=0, ien=data.length ; i<ien ; i++ ) { - tr = data[i].nTr; - cells = data[i].anCells; - - if ( tr ) { - // insertBefore can act like appendChild if 2nd arg is null - tr.insertBefore( cells[ column ], cells[ insertBefore ] || null ); - } - } - } - else { - // Remove column - $( _pluck( settings.aoData, 'anCells', column ) ).detach(); - } - - // Common actions - col.bVisible = vis; - _fnDrawHead( settings, settings.aoHeader ); - _fnDrawHead( settings, settings.aoFooter ); - - if ( recalc === undefined || recalc ) { - // Automatically adjust column sizing - _fnAdjustColumnSizing( settings ); - - // Realign columns for scrolling - if ( settings.oScroll.sX || settings.oScroll.sY ) { - _fnScrollDraw( settings ); - } - } - - _fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] ); - - _fnSaveState( settings ); - }; - - - _api_register( 'columns()', function ( selector, opts ) { - // argument shifting - if ( selector === undefined ) { - selector = ''; - } - else if ( $.isPlainObject( selector ) ) { - opts = selector; - selector = ''; - } - - opts = _selector_opts( opts ); - - var inst = this.iterator( 'table', function ( settings ) { - return __column_selector( settings, selector, opts ); - }, 1 ); - - // Want argument shifting here and in _row_selector? - inst.selector.cols = selector; - inst.selector.opts = opts; - - return inst; - } ); - - _api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].nTh; - }, 1 ); - } ); - - _api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].nTf; - }, 1 ); - } ); - - _api_registerPlural( 'columns().data()', 'column().data()', function () { - return this.iterator( 'column-rows', __columnData, 1 ); - } ); - - _api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () { - return this.iterator( 'column', function ( settings, column ) { - return settings.aoColumns[column].mData; - }, 1 ); - } ); - - _api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) { - return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { - return _pluck_order( settings.aoData, rows, - type === 'search' ? '_aFilterData' : '_aSortData', column - ); - }, 1 ); - } ); - - _api_registerPlural( 'columns().nodes()', 'column().nodes()', function () { - return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { - return _pluck_order( settings.aoData, rows, 'anCells', column ) ; - }, 1 ); - } ); - - _api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) { - return this.iterator( 'column', function ( settings, column ) { - if ( vis === undefined ) { - return settings.aoColumns[ column ].bVisible; - } // else - __setColumnVis( settings, column, vis, calc ); - } ); - } ); - - _api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) { - return this.iterator( 'column', function ( settings, column ) { - return type === 'visible' ? - _fnColumnIndexToVisible( settings, column ) : - column; - }, 1 ); - } ); - - _api_register( 'columns.adjust()', function () { - return this.iterator( 'table', function ( settings ) { - _fnAdjustColumnSizing( settings ); - }, 1 ); - } ); - - _api_register( 'column.index()', function ( type, idx ) { - if ( this.context.length !== 0 ) { - var ctx = this.context[0]; - - if ( type === 'fromVisible' || type === 'toData' ) { - return _fnVisibleToColumnIndex( ctx, idx ); - } - else if ( type === 'fromData' || type === 'toVisible' ) { - return _fnColumnIndexToVisible( ctx, idx ); - } - } - } ); - - _api_register( 'column()', function ( selector, opts ) { - return _selector_first( this.columns( selector, opts ) ); - } ); - - - - - var __cell_selector = function ( settings, selector, opts ) - { - var data = settings.aoData; - var rows = _selector_row_indexes( settings, opts ); - var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) ); - var allCells = $( [].concat.apply([], cells) ); - var row; - var columns = settings.aoColumns.length; - var a, i, ien, j, o, host; - - var run = function ( s ) { - var fnSelector = typeof s === 'function'; - - if ( s === null || s === undefined || fnSelector ) { - // All cells and function selectors - a = []; - - for ( i=0, ien=rows.length ; i<ien ; i++ ) { - row = rows[i]; - - for ( j=0 ; j<columns ; j++ ) { - o = { - row: row, - column: j - }; - - if ( fnSelector ) { - // Selector - function - host = settings.aoData[ row ]; - - if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) { - a.push( o ); - } - } - else { - // Selector - all - a.push( o ); - } - } - } - - return a; - } - - // Selector - index - if ( $.isPlainObject( s ) ) { - return [s]; - } - - // Selector - jQuery filtered cells - return allCells - .filter( s ) - .map( function (i, el) { - row = el.parentNode._DT_RowIndex; - - return { - row: row, - column: $.inArray( el, data[ row ].anCells ) - }; - } ) - .toArray(); - }; - - return _selector_run( 'cell', selector, run, settings, opts ); - }; - - - - - _api_register( 'cells()', function ( rowSelector, columnSelector, opts ) { - // Argument shifting - if ( $.isPlainObject( rowSelector ) ) { - // Indexes - if ( rowSelector.row === undefined ) { - // Selector options in first parameter - opts = rowSelector; - rowSelector = null; - } - else { - // Cell index objects in first parameter - opts = columnSelector; - columnSelector = null; - } - } - if ( $.isPlainObject( columnSelector ) ) { - opts = columnSelector; - columnSelector = null; - } - - // Cell selector - if ( columnSelector === null || columnSelector === undefined ) { - return this.iterator( 'table', function ( settings ) { - return __cell_selector( settings, rowSelector, _selector_opts( opts ) ); - } ); - } - - // Row + column selector - var columns = this.columns( columnSelector, opts ); - var rows = this.rows( rowSelector, opts ); - var a, i, ien, j, jen; - - var cells = this.iterator( 'table', function ( settings, idx ) { - a = []; - - for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) { - for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) { - a.push( { - row: rows[idx][i], - column: columns[idx][j] - } ); - } - } - - return a; - }, 1 ); - - $.extend( cells.selector, { - cols: columnSelector, - rows: rowSelector, - opts: opts - } ); - - return cells; - } ); - - - _api_registerPlural( 'cells().nodes()', 'cell().node()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - var cells = settings.aoData[ row ].anCells; - return cells ? - cells[ column ] : - undefined; - }, 1 ); - } ); - - - _api_register( 'cells().data()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - return _fnGetCellData( settings, row, column ); - }, 1 ); - } ); - - - _api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) { - type = type === 'search' ? '_aFilterData' : '_aSortData'; - - return this.iterator( 'cell', function ( settings, row, column ) { - return settings.aoData[ row ][ type ][ column ]; - }, 1 ); - } ); - - - _api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) { - return this.iterator( 'cell', function ( settings, row, column ) { - return _fnGetCellData( settings, row, column, type ); - }, 1 ); - } ); - - - _api_registerPlural( 'cells().indexes()', 'cell().index()', function () { - return this.iterator( 'cell', function ( settings, row, column ) { - return { - row: row, - column: column, - columnVisible: _fnColumnIndexToVisible( settings, column ) - }; - }, 1 ); - } ); - - - _api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) { - return this.iterator( 'cell', function ( settings, row, column ) { - _fnInvalidate( settings, row, src, column ); - } ); - } ); - - - - _api_register( 'cell()', function ( rowSelector, columnSelector, opts ) { - return _selector_first( this.cells( rowSelector, columnSelector, opts ) ); - } ); - - - _api_register( 'cell().data()', function ( data ) { - var ctx = this.context; - var cell = this[0]; - - if ( data === undefined ) { - // Get - return ctx.length && cell.length ? - _fnGetCellData( ctx[0], cell[0].row, cell[0].column ) : - undefined; - } - - // Set - _fnSetCellData( ctx[0], cell[0].row, cell[0].column, data ); - _fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column ); - - return this; - } ); - - - - /** - * Get current ordering (sorting) that has been applied to the table. - * - * @returns {array} 2D array containing the sorting information for the first - * table in the current context. Each element in the parent array represents - * a column being sorted upon (i.e. multi-sorting with two columns would have - * 2 inner arrays). The inner arrays may have 2 or 3 elements. The first is - * the column index that the sorting condition applies to, the second is the - * direction of the sort (`desc` or `asc`) and, optionally, the third is the - * index of the sorting order from the `column.sorting` initialisation array. - *//** - * Set the ordering for the table. - * - * @param {integer} order Column index to sort upon. - * @param {string} direction Direction of the sort to be applied (`asc` or `desc`) - * @returns {DataTables.Api} this - *//** - * Set the ordering for the table. - * - * @param {array} order 1D array of sorting information to be applied. - * @param {array} [...] Optional additional sorting conditions - * @returns {DataTables.Api} this - *//** - * Set the ordering for the table. - * - * @param {array} order 2D array of sorting information to be applied. - * @returns {DataTables.Api} this - */ - _api_register( 'order()', function ( order, dir ) { - var ctx = this.context; - - if ( order === undefined ) { - // get - return ctx.length !== 0 ? - ctx[0].aaSorting : - undefined; - } - - // set - if ( typeof order === 'number' ) { - // Simple column / direction passed in - order = [ [ order, dir ] ]; - } - else if ( ! $.isArray( order[0] ) ) { - // Arguments passed in (list of 1D arrays) - order = Array.prototype.slice.call( arguments ); - } - // otherwise a 2D array was passed in - - return this.iterator( 'table', function ( settings ) { - settings.aaSorting = order.slice(); - } ); - } ); - - - /** - * Attach a sort listener to an element for a given column - * - * @param {node|jQuery|string} node Identifier for the element(s) to attach the - * listener to. This can take the form of a single DOM node, a jQuery - * collection of nodes or a jQuery selector which will identify the node(s). - * @param {integer} column the column that a click on this node will sort on - * @param {function} [callback] callback function when sort is run - * @returns {DataTables.Api} this - */ - _api_register( 'order.listener()', function ( node, column, callback ) { - return this.iterator( 'table', function ( settings ) { - _fnSortAttachListener( settings, node, column, callback ); - } ); - } ); - - - // Order by the selected column(s) - _api_register( [ - 'columns().order()', - 'column().order()' - ], function ( dir ) { - var that = this; - - return this.iterator( 'table', function ( settings, i ) { - var sort = []; - - $.each( that[i], function (j, col) { - sort.push( [ col, dir ] ); - } ); - - settings.aaSorting = sort; - } ); - } ); - - - - _api_register( 'search()', function ( input, regex, smart, caseInsen ) { - var ctx = this.context; - - if ( input === undefined ) { - // get - return ctx.length !== 0 ? - ctx[0].oPreviousSearch.sSearch : - undefined; - } - - // set - return this.iterator( 'table', function ( settings ) { - if ( ! settings.oFeatures.bFilter ) { - return; - } - - _fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, { - "sSearch": input+"", - "bRegex": regex === null ? false : regex, - "bSmart": smart === null ? true : smart, - "bCaseInsensitive": caseInsen === null ? true : caseInsen - } ), 1 ); - } ); - } ); - - - _api_registerPlural( - 'columns().search()', - 'column().search()', - function ( input, regex, smart, caseInsen ) { - return this.iterator( 'column', function ( settings, column ) { - var preSearch = settings.aoPreSearchCols; - - if ( input === undefined ) { - // get - return preSearch[ column ].sSearch; - } - - // set - if ( ! settings.oFeatures.bFilter ) { - return; - } - - $.extend( preSearch[ column ], { - "sSearch": input+"", - "bRegex": regex === null ? false : regex, - "bSmart": smart === null ? true : smart, - "bCaseInsensitive": caseInsen === null ? true : caseInsen - } ); - - _fnFilterComplete( settings, settings.oPreviousSearch, 1 ); - } ); - } - ); - - /* - * State API methods - */ - - _api_register( 'state()', function () { - return this.context.length ? - this.context[0].oSavedState : - null; - } ); - - - _api_register( 'state.clear()', function () { - return this.iterator( 'table', function ( settings ) { - // Save an empty object - settings.fnStateSaveCallback.call( settings.oInstance, settings, {} ); - } ); - } ); - - - _api_register( 'state.loaded()', function () { - return this.context.length ? - this.context[0].oLoadedState : - null; - } ); - - - _api_register( 'state.save()', function () { - return this.iterator( 'table', function ( settings ) { - _fnSaveState( settings ); - } ); - } ); - - - - /** - * Provide a common method for plug-ins to check the version of DataTables being - * used, in order to ensure compatibility. - * - * @param {string} version Version string to check for, in the format "X.Y.Z". - * Note that the formats "X" and "X.Y" are also acceptable. - * @returns {boolean} true if this version of DataTables is greater or equal to - * the required version, or false if this version of DataTales is not - * suitable - * @static - * @dtopt API-Static - * - * @example - * alert( $.fn.dataTable.versionCheck( '1.9.0' ) ); - */ - DataTable.versionCheck = DataTable.fnVersionCheck = function( version ) - { - var aThis = DataTable.version.split('.'); - var aThat = version.split('.'); - var iThis, iThat; - - for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) { - iThis = parseInt( aThis[i], 10 ) || 0; - iThat = parseInt( aThat[i], 10 ) || 0; - - // Parts are the same, keep comparing - if (iThis === iThat) { - continue; - } - - // Parts are different, return immediately - return iThis > iThat; - } - - return true; - }; - - - /** - * Check if a `<table>` node is a DataTable table already or not. - * - * @param {node|jquery|string} table Table node, jQuery object or jQuery - * selector for the table to test. Note that if more than more than one - * table is passed on, only the first will be checked - * @returns {boolean} true the table given is a DataTable, or false otherwise - * @static - * @dtopt API-Static - * - * @example - * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) { - * $('#example').dataTable(); - * } - */ - DataTable.isDataTable = DataTable.fnIsDataTable = function ( table ) - { - var t = $(table).get(0); - var is = false; - - $.each( DataTable.settings, function (i, o) { - var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null; - var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null; - - if ( o.nTable === t || head === t || foot === t ) { - is = true; - } - } ); - - return is; - }; - - - /** - * Get all DataTable tables that have been initialised - optionally you can - * select to get only currently visible tables. - * - * @param {boolean} [visible=false] Flag to indicate if you want all (default) - * or visible tables only. - * @returns {array} Array of `table` nodes (not DataTable instances) which are - * DataTables - * @static - * @dtopt API-Static - * - * @example - * $.each( $.fn.dataTable.tables(true), function () { - * $(table).DataTable().columns.adjust(); - * } ); - */ - DataTable.tables = DataTable.fnTables = function ( visible ) - { - return $.map( DataTable.settings, function (o) { - if ( !visible || (visible && $(o.nTable).is(':visible')) ) { - return o.nTable; - } - } ); - }; - - - /** - * DataTables utility methods - * - * This namespace provides helper methods that DataTables uses internally to - * create a DataTable, but which are not exclusively used only for DataTables. - * These methods can be used by extension authors to save the duplication of - * code. - * - * @namespace - */ - DataTable.util = { - /** - * Throttle the calls to a function. Arguments and context are maintained - * for the throttled function. - * - * @param {function} fn Function to be called - * @param {integer} freq Call frequency in mS - * @return {function} Wrapped function - */ - throttle: _fnThrottle, - - - /** - * Escape a string such that it can be used in a regular expression - * - * @param {string} sVal string to escape - * @returns {string} escaped string - */ - escapeRegex: _fnEscapeRegex - }; - - - /** - * Convert from camel case parameters to Hungarian notation. This is made public - * for the extensions to provide the same ability as DataTables core to accept - * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase - * parameters. - * - * @param {object} src The model object which holds all parameters that can be - * mapped. - * @param {object} user The object to convert from camel case to Hungarian. - * @param {boolean} force When set to `true`, properties which already have a - * Hungarian value in the `user` object will be overwritten. Otherwise they - * won't be. - */ - DataTable.camelToHungarian = _fnCamelToHungarian; - - - - /** - * - */ - _api_register( '$()', function ( selector, opts ) { - var - rows = this.rows( opts ).nodes(), // Get all rows - jqRows = $(rows); - - return $( [].concat( - jqRows.filter( selector ).toArray(), - jqRows.find( selector ).toArray() - ) ); - } ); - - - // jQuery functions to operate on the tables - $.each( [ 'on', 'one', 'off' ], function (i, key) { - _api_register( key+'()', function ( /* event, handler */ ) { - var args = Array.prototype.slice.call(arguments); - - // Add the `dt` namespace automatically if it isn't already present - if ( ! args[0].match(/\.dt\b/) ) { - args[0] += '.dt'; - } - - var inst = $( this.tables().nodes() ); - inst[key].apply( inst, args ); - return this; - } ); - } ); - - - _api_register( 'clear()', function () { - return this.iterator( 'table', function ( settings ) { - _fnClearTable( settings ); - } ); - } ); - - - _api_register( 'settings()', function () { - return new _Api( this.context, this.context ); - } ); - - - _api_register( 'init()', function () { - var ctx = this.context; - return ctx.length ? ctx[0].oInit : null; - } ); - - - _api_register( 'data()', function () { - return this.iterator( 'table', function ( settings ) { - return _pluck( settings.aoData, '_aData' ); - } ).flatten(); - } ); - - - _api_register( 'destroy()', function ( remove ) { - remove = remove || false; - - return this.iterator( 'table', function ( settings ) { - var orig = settings.nTableWrapper.parentNode; - var classes = settings.oClasses; - var table = settings.nTable; - var tbody = settings.nTBody; - var thead = settings.nTHead; - var tfoot = settings.nTFoot; - var jqTable = $(table); - var jqTbody = $(tbody); - var jqWrapper = $(settings.nTableWrapper); - var rows = $.map( settings.aoData, function (r) { return r.nTr; } ); - var i, ien; - - // Flag to note that the table is currently being destroyed - no action - // should be taken - settings.bDestroying = true; - - // Fire off the destroy callbacks for plug-ins etc - _fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] ); - - // If not being removed from the document, make all columns visible - if ( ! remove ) { - new _Api( settings ).columns().visible( true ); - } - - // Blitz all `DT` namespaced events (these are internal events, the - // lowercase, `dt` events are user subscribed and they are responsible - // for removing them - jqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT'); - $(window).unbind('.DT-'+settings.sInstance); - - // When scrolling we had to break the table up - restore it - if ( table != thead.parentNode ) { - jqTable.children('thead').detach(); - jqTable.append( thead ); - } - - if ( tfoot && table != tfoot.parentNode ) { - jqTable.children('tfoot').detach(); - jqTable.append( tfoot ); - } - - // Remove the DataTables generated nodes, events and classes - jqTable.detach(); - jqWrapper.detach(); - - settings.aaSorting = []; - settings.aaSortingFixed = []; - _fnSortingClasses( settings ); - - $( rows ).removeClass( settings.asStripeClasses.join(' ') ); - - $('th, td', thead).removeClass( classes.sSortable+' '+ - classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone - ); - - if ( settings.bJUI ) { - $('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach(); - $('th, td', thead).each( function () { - var wrapper = $('div.'+classes.sSortJUIWrapper, this); - $(this).append( wrapper.contents() ); - wrapper.detach(); - } ); - } - - if ( ! remove && orig ) { - // insertBefore acts like appendChild if !arg[1] - orig.insertBefore( table, settings.nTableReinsertBefore ); - } - - // Add the TR elements back into the table in their original order - jqTbody.children().detach(); - jqTbody.append( rows ); - - // Restore the width of the original table - was read from the style property, - // so we can restore directly to that - jqTable - .css( 'width', settings.sDestroyWidth ) - .removeClass( classes.sTable ); - - // If the were originally stripe classes - then we add them back here. - // Note this is not fool proof (for example if not all rows had stripe - // classes - but it's a good effort without getting carried away - ien = settings.asDestroyStripes.length; - - if ( ien ) { - jqTbody.children().each( function (i) { - $(this).addClass( settings.asDestroyStripes[i % ien] ); - } ); - } - - /* Remove the settings object from the settings array */ - var idx = $.inArray( settings, DataTable.settings ); - if ( idx !== -1 ) { - DataTable.settings.splice( idx, 1 ); - } - } ); - } ); - - - // Add the `every()` method for rows, columns and cells in a compact form - $.each( [ 'column', 'row', 'cell' ], function ( i, type ) { - _api_register( type+'s().every()', function ( fn ) { - return this.iterator( type, function ( settings, idx, idx2 ) { - // idx2 is undefined for rows and columns. - fn.call( new _Api( settings )[ type ]( idx, idx2 ) ); - } ); - } ); - } ); - - - // i18n method for extensions to be able to use the language object from the - // DataTable - _api_register( 'i18n()', function ( token, def, plural ) { - var ctx = this.context[0]; - var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage ); - - if ( resolved === undefined ) { - resolved = def; - } - - if ( plural !== undefined && $.isPlainObject( resolved ) ) { - resolved = resolved[ plural ] !== undefined ? - resolved[ plural ] : - resolved._; - } - - return resolved.replace( '%d', plural ); // nb: plural might be undefined, - } ); - - /** - * Version string for plug-ins to check compatibility. Allowed format is - * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used - * only for non-release builds. See http://semver.org/ for more information. - * @member - * @type string - * @default Version number - */ - DataTable.version = "1.10.7"; - - /** - * Private data store, containing all of the settings objects that are - * created for the tables on a given page. - * - * Note that the `DataTable.settings` object is aliased to - * `jQuery.fn.dataTableExt` through which it may be accessed and - * manipulated, or `jQuery.fn.dataTable.settings`. - * @member - * @type array - * @default [] - * @private - */ - DataTable.settings = []; - - /** - * Object models container, for the various models that DataTables has - * available to it. These models define the objects that are used to hold - * the active state and configuration of the table. - * @namespace - */ - DataTable.models = {}; - - - - /** - * Template object for the way in which DataTables holds information about - * search information for the global filter and individual column filters. - * @namespace - */ - DataTable.models.oSearch = { - /** - * Flag to indicate if the filtering should be case insensitive or not - * @type boolean - * @default true - */ - "bCaseInsensitive": true, - - /** - * Applied search term - * @type string - * @default <i>Empty string</i> - */ - "sSearch": "", - - /** - * Flag to indicate if the search term should be interpreted as a - * regular expression (true) or not (false) and therefore and special - * regex characters escaped. - * @type boolean - * @default false - */ - "bRegex": false, - - /** - * Flag to indicate if DataTables is to use its smart filtering or not. - * @type boolean - * @default true - */ - "bSmart": true - }; - - - - - /** - * Template object for the way in which DataTables holds information about - * each individual row. This is the object format used for the settings - * aoData array. - * @namespace - */ - DataTable.models.oRow = { - /** - * TR element for the row - * @type node - * @default null - */ - "nTr": null, - - /** - * Array of TD elements for each row. This is null until the row has been - * created. - * @type array nodes - * @default [] - */ - "anCells": null, - - /** - * Data object from the original data source for the row. This is either - * an array if using the traditional form of DataTables, or an object if - * using mData options. The exact type will depend on the passed in - * data from the data source, or will be an array if using DOM a data - * source. - * @type array|object - * @default [] - */ - "_aData": [], - - /** - * Sorting data cache - this array is ostensibly the same length as the - * number of columns (although each index is generated only as it is - * needed), and holds the data that is used for sorting each column in the - * row. We do this cache generation at the start of the sort in order that - * the formatting of the sort data need be done only once for each cell - * per sort. This array should not be read from or written to by anything - * other than the master sorting methods. - * @type array - * @default null - * @private - */ - "_aSortData": null, - - /** - * Per cell filtering data cache. As per the sort data cache, used to - * increase the performance of the filtering in DataTables - * @type array - * @default null - * @private - */ - "_aFilterData": null, - - /** - * Filtering data cache. This is the same as the cell filtering cache, but - * in this case a string rather than an array. This is easily computed with - * a join on `_aFilterData`, but is provided as a cache so the join isn't - * needed on every search (memory traded for performance) - * @type array - * @default null - * @private - */ - "_sFilterRow": null, - - /** - * Cache of the class name that DataTables has applied to the row, so we - * can quickly look at this variable rather than needing to do a DOM check - * on className for the nTr property. - * @type string - * @default <i>Empty string</i> - * @private - */ - "_sRowStripe": "", - - /** - * Denote if the original data source was from the DOM, or the data source - * object. This is used for invalidating data, so DataTables can - * automatically read data from the original source, unless uninstructed - * otherwise. - * @type string - * @default null - * @private - */ - "src": null - }; - - - /** - * Template object for the column information object in DataTables. This object - * is held in the settings aoColumns array and contains all the information that - * DataTables needs about each individual column. - * - * Note that this object is related to {@link DataTable.defaults.column} - * but this one is the internal data store for DataTables's cache of columns. - * It should NOT be manipulated outside of DataTables. Any configuration should - * be done through the initialisation options. - * @namespace - */ - DataTable.models.oColumn = { - /** - * Column index. This could be worked out on-the-fly with $.inArray, but it - * is faster to just hold it as a variable - * @type integer - * @default null - */ - "idx": null, - - /** - * A list of the columns that sorting should occur on when this column - * is sorted. That this property is an array allows multi-column sorting - * to be defined for a column (for example first name / last name columns - * would benefit from this). The values are integers pointing to the - * columns to be sorted on (typically it will be a single integer pointing - * at itself, but that doesn't need to be the case). - * @type array - */ - "aDataSort": null, - - /** - * Define the sorting directions that are applied to the column, in sequence - * as the column is repeatedly sorted upon - i.e. the first value is used - * as the sorting direction when the column if first sorted (clicked on). - * Sort it again (click again) and it will move on to the next index. - * Repeat until loop. - * @type array - */ - "asSorting": null, - - /** - * Flag to indicate if the column is searchable, and thus should be included - * in the filtering or not. - * @type boolean - */ - "bSearchable": null, - - /** - * Flag to indicate if the column is sortable or not. - * @type boolean - */ - "bSortable": null, - - /** - * Flag to indicate if the column is currently visible in the table or not - * @type boolean - */ - "bVisible": null, - - /** - * Store for manual type assignment using the `column.type` option. This - * is held in store so we can manipulate the column's `sType` property. - * @type string - * @default null - * @private - */ - "_sManualType": null, - - /** - * Flag to indicate if HTML5 data attributes should be used as the data - * source for filtering or sorting. True is either are. - * @type boolean - * @default false - * @private - */ - "_bAttrSrc": false, - - /** - * Developer definable function that is called whenever a cell is created (Ajax source, - * etc) or processed for input (DOM source). This can be used as a compliment to mRender - * allowing you to modify the DOM element (add background colour for example) when the - * element is available. - * @type function - * @param {element} nTd The TD node that has been created - * @param {*} sData The Data for the cell - * @param {array|object} oData The data for the whole row - * @param {int} iRow The row index for the aoData data store - * @default null - */ - "fnCreatedCell": null, - - /** - * Function to get data from a cell in a column. You should <b>never</b> - * access data directly through _aData internally in DataTables - always use - * the method attached to this property. It allows mData to function as - * required. This function is automatically assigned by the column - * initialisation method - * @type function - * @param {array|object} oData The data array/object for the array - * (i.e. aoData[]._aData) - * @param {string} sSpecific The specific data type you want to get - - * 'display', 'type' 'filter' 'sort' - * @returns {*} The data for the cell from the given row's data - * @default null - */ - "fnGetData": null, - - /** - * Function to set data for a cell in the column. You should <b>never</b> - * set the data directly to _aData internally in DataTables - always use - * this method. It allows mData to function as required. This function - * is automatically assigned by the column initialisation method - * @type function - * @param {array|object} oData The data array/object for the array - * (i.e. aoData[]._aData) - * @param {*} sValue Value to set - * @default null - */ - "fnSetData": null, - - /** - * Property to read the value for the cells in the column from the data - * source array / object. If null, then the default content is used, if a - * function is given then the return from the function is used. - * @type function|int|string|null - * @default null - */ - "mData": null, - - /** - * Partner property to mData which is used (only when defined) to get - * the data - i.e. it is basically the same as mData, but without the - * 'set' option, and also the data fed to it is the result from mData. - * This is the rendering method to match the data method of mData. - * @type function|int|string|null - * @default null - */ - "mRender": null, - - /** - * Unique header TH/TD element for this column - this is what the sorting - * listener is attached to (if sorting is enabled.) - * @type node - * @default null - */ - "nTh": null, - - /** - * Unique footer TH/TD element for this column (if there is one). Not used - * in DataTables as such, but can be used for plug-ins to reference the - * footer for each column. - * @type node - * @default null - */ - "nTf": null, - - /** - * The class to apply to all TD elements in the table's TBODY for the column - * @type string - * @default null - */ - "sClass": null, - - /** - * When DataTables calculates the column widths to assign to each column, - * it finds the longest string in each column and then constructs a - * temporary table and reads the widths from that. The problem with this - * is that "mmm" is much wider then "iiii", but the latter is a longer - * string - thus the calculation can go wrong (doing it properly and putting - * it into an DOM object and measuring that is horribly(!) slow). Thus as - * a "work around" we provide this option. It will append its value to the - * text that is found to be the longest string for the column - i.e. padding. - * @type string - */ - "sContentPadding": null, - - /** - * Allows a default value to be given for a column's data, and will be used - * whenever a null data source is encountered (this can be because mData - * is set to null, or because the data source itself is null). - * @type string - * @default null - */ - "sDefaultContent": null, - - /** - * Name for the column, allowing reference to the column by name as well as - * by index (needs a lookup to work by name). - * @type string - */ - "sName": null, - - /** - * Custom sorting data type - defines which of the available plug-ins in - * afnSortData the custom sorting will use - if any is defined. - * @type string - * @default std - */ - "sSortDataType": 'std', - - /** - * Class to be applied to the header element when sorting on this column - * @type string - * @default null - */ - "sSortingClass": null, - - /** - * Class to be applied to the header element when sorting on this column - - * when jQuery UI theming is used. - * @type string - * @default null - */ - "sSortingClassJUI": null, - - /** - * Title of the column - what is seen in the TH element (nTh). - * @type string - */ - "sTitle": null, - - /** - * Column sorting and filtering type - * @type string - * @default null - */ - "sType": null, - - /** - * Width of the column - * @type string - * @default null - */ - "sWidth": null, - - /** - * Width of the column when it was first "encountered" - * @type string - * @default null - */ - "sWidthOrig": null - }; - - - /* - * Developer note: The properties of the object below are given in Hungarian - * notation, that was used as the interface for DataTables prior to v1.10, however - * from v1.10 onwards the primary interface is camel case. In order to avoid - * breaking backwards compatibility utterly with this change, the Hungarian - * version is still, internally the primary interface, but is is not documented - * - hence the @name tags in each doc comment. This allows a Javascript function - * to create a map from Hungarian notation to camel case (going the other direction - * would require each property to be listed, which would at around 3K to the size - * of DataTables, while this method is about a 0.5K hit. - * - * Ultimately this does pave the way for Hungarian notation to be dropped - * completely, but that is a massive amount of work and will break current - * installs (therefore is on-hold until v2). - */ - - /** - * Initialisation options that can be given to DataTables at initialisation - * time. - * @namespace - */ - DataTable.defaults = { - /** - * An array of data to use for the table, passed in at initialisation which - * will be used in preference to any data which is already in the DOM. This is - * particularly useful for constructing tables purely in Javascript, for - * example with a custom Ajax call. - * @type array - * @default null - * - * @dtopt Option - * @name DataTable.defaults.data - * - * @example - * // Using a 2D array data source - * $(document).ready( function () { - * $('#example').dataTable( { - * "data": [ - * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'], - * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'], - * ], - * "columns": [ - * { "title": "Engine" }, - * { "title": "Browser" }, - * { "title": "Platform" }, - * { "title": "Version" }, - * { "title": "Grade" } - * ] - * } ); - * } ); - * - * @example - * // Using an array of objects as a data source (`data`) - * $(document).ready( function () { - * $('#example').dataTable( { - * "data": [ - * { - * "engine": "Trident", - * "browser": "Internet Explorer 4.0", - * "platform": "Win 95+", - * "version": 4, - * "grade": "X" - * }, - * { - * "engine": "Trident", - * "browser": "Internet Explorer 5.0", - * "platform": "Win 95+", - * "version": 5, - * "grade": "C" - * } - * ], - * "columns": [ - * { "title": "Engine", "data": "engine" }, - * { "title": "Browser", "data": "browser" }, - * { "title": "Platform", "data": "platform" }, - * { "title": "Version", "data": "version" }, - * { "title": "Grade", "data": "grade" } - * ] - * } ); - * } ); - */ - "aaData": null, - - - /** - * If ordering is enabled, then DataTables will perform a first pass sort on - * initialisation. You can define which column(s) the sort is performed - * upon, and the sorting direction, with this variable. The `sorting` array - * should contain an array for each column to be sorted initially containing - * the column's index and a direction string ('asc' or 'desc'). - * @type array - * @default [[0,'asc']] - * - * @dtopt Option - * @name DataTable.defaults.order - * - * @example - * // Sort by 3rd column first, and then 4th column - * $(document).ready( function() { - * $('#example').dataTable( { - * "order": [[2,'asc'], [3,'desc']] - * } ); - * } ); - * - * // No initial sorting - * $(document).ready( function() { - * $('#example').dataTable( { - * "order": [] - * } ); - * } ); - */ - "aaSorting": [[0,'asc']], - - - /** - * This parameter is basically identical to the `sorting` parameter, but - * cannot be overridden by user interaction with the table. What this means - * is that you could have a column (visible or hidden) which the sorting - * will always be forced on first - any sorting after that (from the user) - * will then be performed as required. This can be useful for grouping rows - * together. - * @type array - * @default null - * - * @dtopt Option - * @name DataTable.defaults.orderFixed - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "orderFixed": [[0,'asc']] - * } ); - * } ) - */ - "aaSortingFixed": [], - - - /** - * DataTables can be instructed to load data to display in the table from a - * Ajax source. This option defines how that Ajax call is made and where to. - * - * The `ajax` property has three different modes of operation, depending on - * how it is defined. These are: - * - * * `string` - Set the URL from where the data should be loaded from. - * * `object` - Define properties for `jQuery.ajax`. - * * `function` - Custom data get function - * - * `string` - * -------- - * - * As a string, the `ajax` property simply defines the URL from which - * DataTables will load data. - * - * `object` - * -------- - * - * As an object, the parameters in the object are passed to - * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control - * of the Ajax request. DataTables has a number of default parameters which - * you can override using this option. Please refer to the jQuery - * documentation for a full description of the options available, although - * the following parameters provide additional options in DataTables or - * require special consideration: - * - * * `data` - As with jQuery, `data` can be provided as an object, but it - * can also be used as a function to manipulate the data DataTables sends - * to the server. The function takes a single parameter, an object of - * parameters with the values that DataTables has readied for sending. An - * object may be returned which will be merged into the DataTables - * defaults, or you can add the items to the object that was passed in and - * not return anything from the function. This supersedes `fnServerParams` - * from DataTables 1.9-. - * - * * `dataSrc` - By default DataTables will look for the property `data` (or - * `aaData` for compatibility with DataTables 1.9-) when obtaining data - * from an Ajax source or for server-side processing - this parameter - * allows that property to be changed. You can use Javascript dotted - * object notation to get a data source for multiple levels of nesting, or - * it my be used as a function. As a function it takes a single parameter, - * the JSON returned from the server, which can be manipulated as - * required, with the returned value being that used by DataTables as the - * data source for the table. This supersedes `sAjaxDataProp` from - * DataTables 1.9-. - * - * * `success` - Should not be overridden it is used internally in - * DataTables. To manipulate / transform the data returned by the server - * use `ajax.dataSrc`, or use `ajax` as a function (see below). - * - * `function` - * ---------- - * - * As a function, making the Ajax call is left up to yourself allowing - * complete control of the Ajax request. Indeed, if desired, a method other - * than Ajax could be used to obtain the required data, such as Web storage - * or an AIR database. - * - * The function is given four parameters and no return is required. The - * parameters are: - * - * 1. _object_ - Data to send to the server - * 2. _function_ - Callback function that must be executed when the required - * data has been obtained. That data should be passed into the callback - * as the only parameter - * 3. _object_ - DataTables settings object for the table - * - * Note that this supersedes `fnServerData` from DataTables 1.9-. - * - * @type string|object|function - * @default null - * - * @dtopt Option - * @name DataTable.defaults.ajax - * @since 1.10.0 - * - * @example - * // Get JSON data from a file via Ajax. - * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default). - * $('#example').dataTable( { - * "ajax": "data.json" - * } ); - * - * @example - * // Get JSON data from a file via Ajax, using `dataSrc` to change - * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`) - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": "tableData" - * } - * } ); - * - * @example - * // Get JSON data from a file via Ajax, using `dataSrc` to read data - * // from a plain array rather than an array in an object - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": "" - * } - * } ); - * - * @example - * // Manipulate the data returned from the server - add a link to data - * // (note this can, should, be done using `render` for the column - this - * // is just a simple example of how the data can be manipulated). - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "dataSrc": function ( json ) { - * for ( var i=0, ien=json.length ; i<ien ; i++ ) { - * json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>'; - * } - * return json; - * } - * } - * } ); - * - * @example - * // Add data to the request - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "data": function ( d ) { - * return { - * "extra_search": $('#extra').val() - * }; - * } - * } - * } ); - * - * @example - * // Send request as POST - * $('#example').dataTable( { - * "ajax": { - * "url": "data.json", - * "type": "POST" - * } - * } ); - * - * @example - * // Get the data from localStorage (could interface with a form for - * // adding, editing and removing rows). - * $('#example').dataTable( { - * "ajax": function (data, callback, settings) { - * callback( - * JSON.parse( localStorage.getItem('dataTablesData') ) - * ); - * } - * } ); - */ - "ajax": null, - - - /** - * This parameter allows you to readily specify the entries in the length drop - * down menu that DataTables shows when pagination is enabled. It can be - * either a 1D array of options which will be used for both the displayed - * option and the value, or a 2D array which will use the array in the first - * position as the value, and the array in the second position as the - * displayed options (useful for language strings such as 'All'). - * - * Note that the `pageLength` property will be automatically set to the - * first value given in this array, unless `pageLength` is also provided. - * @type array - * @default [ 10, 25, 50, 100 ] - * - * @dtopt Option - * @name DataTable.defaults.lengthMenu - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]] - * } ); - * } ); - */ - "aLengthMenu": [ 5, 10, 15, 20 ], - - - /** - * The `columns` option in the initialisation parameter allows you to define - * details about the way individual columns behave. For a full list of - * column options that can be set, please see - * {@link DataTable.defaults.column}. Note that if you use `columns` to - * define your columns, you must have an entry in the array for every single - * column that you have in your table (these can be null if you don't which - * to specify any options). - * @member - * - * @name DataTable.defaults.column - */ - "aoColumns": null, - - /** - * Very similar to `columns`, `columnDefs` allows you to target a specific - * column, multiple columns, or all columns, using the `targets` property of - * each object in the array. This allows great flexibility when creating - * tables, as the `columnDefs` arrays can be of any length, targeting the - * columns you specifically want. `columnDefs` may use any of the column - * options available: {@link DataTable.defaults.column}, but it _must_ - * have `targets` defined in each object in the array. Values in the `targets` - * array may be: - * <ul> - * <li>a string - class name will be matched on the TH for the column</li> - * <li>0 or a positive integer - column index counting from the left</li> - * <li>a negative integer - column index counting from the right</li> - * <li>the string "_all" - all columns (i.e. assign a default)</li> - * </ul> - * @member - * - * @name DataTable.defaults.columnDefs - */ - "aoColumnDefs": null, - - - /** - * Basically the same as `search`, this parameter defines the individual column - * filtering state at initialisation time. The array must be of the same size - * as the number of columns, and each element be an object with the parameters - * `search` and `escapeRegex` (the latter is optional). 'null' is also - * accepted and the default will be used. - * @type array - * @default [] - * - * @dtopt Option - * @name DataTable.defaults.searchCols - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "searchCols": [ - * null, - * { "search": "My filter" }, - * null, - * { "search": "^[0-9]", "escapeRegex": false } - * ] - * } ); - * } ) - */ - "aoSearchCols": [], - - - /** - * An array of CSS classes that should be applied to displayed rows. This - * array may be of any length, and DataTables will apply each class - * sequentially, looping when required. - * @type array - * @default null <i>Will take the values determined by the `oClasses.stripe*` - * options</i> - * - * @dtopt Option - * @name DataTable.defaults.stripeClasses - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stripeClasses": [ 'strip1', 'strip2', 'strip3' ] - * } ); - * } ) - */ - "asStripeClasses": null, - - - /** - * Enable or disable automatic column width calculation. This can be disabled - * as an optimisation (it takes some time to calculate the widths) if the - * tables widths are passed in using `columns`. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.autoWidth - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "autoWidth": false - * } ); - * } ); - */ - "bAutoWidth": true, - - - /** - * Deferred rendering can provide DataTables with a huge speed boost when you - * are using an Ajax or JS data source for the table. This option, when set to - * true, will cause DataTables to defer the creation of the table elements for - * each row until they are needed for a draw - saving a significant amount of - * time. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.deferRender - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajax": "sources/arrays.txt", - * "deferRender": true - * } ); - * } ); - */ - "bDeferRender": false, - - - /** - * Replace a DataTable which matches the given selector and replace it with - * one which has the properties of the new initialisation object passed. If no - * table matches the selector, then the new DataTable will be constructed as - * per normal. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.destroy - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "srollY": "200px", - * "paginate": false - * } ); - * - * // Some time later.... - * $('#example').dataTable( { - * "filter": false, - * "destroy": true - * } ); - * } ); - */ - "bDestroy": false, - - - /** - * Enable or disable filtering of data. Filtering in DataTables is "smart" in - * that it allows the end user to input multiple words (space separated) and - * will match a row containing those words, even if not in the order that was - * specified (this allow matching across multiple columns). Note that if you - * wish to use filtering in DataTables this must remain 'true' - to remove the - * default filtering input box and retain filtering abilities, please use - * {@link DataTable.defaults.dom}. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.searching - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "searching": false - * } ); - * } ); - */ - "bFilter": true, - - - /** - * Enable or disable the table information display. This shows information - * about the data that is currently visible on the page, including information - * about filtered data if that action is being performed. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.info - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "info": false - * } ); - * } ); - */ - "bInfo": true, - - - /** - * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some - * slightly different and additional mark-up from what DataTables has - * traditionally used). - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.jQueryUI - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "jQueryUI": true - * } ); - * } ); - */ - "bJQueryUI": false, - - - /** - * Allows the end user to select the size of a formatted page from a select - * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`). - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.lengthChange - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "lengthChange": false - * } ); - * } ); - */ - "bLengthChange": true, - - - /** - * Enable or disable pagination. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.paging - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "paging": false - * } ); - * } ); - */ - "bPaginate": true, - - - /** - * Enable or disable the display of a 'processing' indicator when the table is - * being processed (e.g. a sort). This is particularly useful for tables with - * large amounts of data where it can take a noticeable amount of time to sort - * the entries. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.processing - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "processing": true - * } ); - * } ); - */ - "bProcessing": false, - - - /** - * Retrieve the DataTables object for the given selector. Note that if the - * table has already been initialised, this parameter will cause DataTables - * to simply return the object that has already been set up - it will not take - * account of any changes you might have made to the initialisation object - * passed to DataTables (setting this parameter to true is an acknowledgement - * that you understand this). `destroy` can be used to reinitialise a table if - * you need. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.retrieve - * - * @example - * $(document).ready( function() { - * initTable(); - * tableActions(); - * } ); - * - * function initTable () - * { - * return $('#example').dataTable( { - * "scrollY": "200px", - * "paginate": false, - * "retrieve": true - * } ); - * } - * - * function tableActions () - * { - * var table = initTable(); - * // perform API operations with oTable - * } - */ - "bRetrieve": false, - - - /** - * When vertical (y) scrolling is enabled, DataTables will force the height of - * the table's viewport to the given height at all times (useful for layout). - * However, this can look odd when filtering data down to a small data set, - * and the footer is left "floating" further down. This parameter (when - * enabled) will cause DataTables to collapse the table's viewport down when - * the result set will fit within the given Y height. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.scrollCollapse - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollY": "200", - * "scrollCollapse": true - * } ); - * } ); - */ - "bScrollCollapse": false, - - - /** - * Configure DataTables to use server-side processing. Note that the - * `ajax` parameter must also be given in order to give DataTables a - * source to obtain the required data for each draw. - * @type boolean - * @default false - * - * @dtopt Features - * @dtopt Server-side - * @name DataTable.defaults.serverSide - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "xhr.php" - * } ); - * } ); - */ - "bServerSide": false, - - - /** - * Enable or disable sorting of columns. Sorting of individual columns can be - * disabled by the `sortable` option for each column. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.ordering - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "ordering": false - * } ); - * } ); - */ - "bSort": true, - - - /** - * Enable or display DataTables' ability to sort multiple columns at the - * same time (activated by shift-click by the user). - * @type boolean - * @default true - * - * @dtopt Options - * @name DataTable.defaults.orderMulti - * - * @example - * // Disable multiple column sorting ability - * $(document).ready( function () { - * $('#example').dataTable( { - * "orderMulti": false - * } ); - * } ); - */ - "bSortMulti": true, - - - /** - * Allows control over whether DataTables should use the top (true) unique - * cell that is found for a single column, or the bottom (false - default). - * This is useful when using complex headers. - * @type boolean - * @default false - * - * @dtopt Options - * @name DataTable.defaults.orderCellsTop - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "orderCellsTop": true - * } ); - * } ); - */ - "bSortCellsTop": false, - - - /** - * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and - * `sorting\_3` to the columns which are currently being sorted on. This is - * presented as a feature switch as it can increase processing time (while - * classes are removed and added) so for large data sets you might want to - * turn this off. - * @type boolean - * @default true - * - * @dtopt Features - * @name DataTable.defaults.orderClasses - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "orderClasses": false - * } ); - * } ); - */ - "bSortClasses": true, - - - /** - * Enable or disable state saving. When enabled HTML5 `localStorage` will be - * used to save table display information such as pagination information, - * display length, filtering and sorting. As such when the end user reloads - * the page the display display will match what thy had previously set up. - * - * Due to the use of `localStorage` the default state saving is not supported - * in IE6 or 7. If state saving is required in those browsers, use - * `stateSaveCallback` to provide a storage solution such as cookies. - * @type boolean - * @default false - * - * @dtopt Features - * @name DataTable.defaults.stateSave - * - * @example - * $(document).ready( function () { - * $('#example').dataTable( { - * "stateSave": true - * } ); - * } ); - */ - "bStateSave": false, - - - /** - * This function is called when a TR element is created (and all TD child - * elements have been inserted), or registered if using a DOM source, allowing - * manipulation of the TR element (adding classes etc). - * @type function - * @param {node} row "TR" element for the current row - * @param {array} data Raw data array for this row - * @param {int} dataIndex The index of this row in the internal aoData array - * - * @dtopt Callbacks - * @name DataTable.defaults.createdRow - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "createdRow": function( row, data, dataIndex ) { - * // Bold the grade for all 'A' grade browsers - * if ( data[4] == "A" ) - * { - * $('td:eq(4)', row).html( '<b>A</b>' ); - * } - * } - * } ); - * } ); - */ - "fnCreatedRow": null, - - - /** - * This function is called on every 'draw' event, and allows you to - * dynamically modify any aspect you want about the created DOM. - * @type function - * @param {object} settings DataTables settings object - * - * @dtopt Callbacks - * @name DataTable.defaults.drawCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "drawCallback": function( settings ) { - * alert( 'DataTables has redrawn the table' ); - * } - * } ); - * } ); - */ - "fnDrawCallback": null, - - - /** - * Identical to fnHeaderCallback() but for the table footer this function - * allows you to modify the table footer on every 'draw' event. - * @type function - * @param {node} foot "TR" element for the footer - * @param {array} data Full table data (as derived from the original HTML) - * @param {int} start Index for the current display starting point in the - * display array - * @param {int} end Index for the current display ending point in the - * display array - * @param {array int} display Index array to translate the visual position - * to the full data array - * - * @dtopt Callbacks - * @name DataTable.defaults.footerCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "footerCallback": function( tfoot, data, start, end, display ) { - * tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start; - * } - * } ); - * } ) - */ - "fnFooterCallback": null, - - - /** - * When rendering large numbers in the information element for the table - * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers - * to have a comma separator for the 'thousands' units (e.g. 1 million is - * rendered as "1,000,000") to help readability for the end user. This - * function will override the default method DataTables uses. - * @type function - * @member - * @param {int} toFormat number to be formatted - * @returns {string} formatted string for DataTables to show the number - * - * @dtopt Callbacks - * @name DataTable.defaults.formatNumber - * - * @example - * // Format a number using a single quote for the separator (note that - * // this can also be done with the language.thousands option) - * $(document).ready( function() { - * $('#example').dataTable( { - * "formatNumber": function ( toFormat ) { - * return toFormat.toString().replace( - * /\B(?=(\d{3})+(?!\d))/g, "'" - * ); - * }; - * } ); - * } ); - */ - "fnFormatNumber": function ( toFormat ) { - return toFormat.toString().replace( - /\B(?=(\d{3})+(?!\d))/g, - this.oLanguage.sThousands - ); - }, - - - /** - * This function is called on every 'draw' event, and allows you to - * dynamically modify the header row. This can be used to calculate and - * display useful information about the table. - * @type function - * @param {node} head "TR" element for the header - * @param {array} data Full table data (as derived from the original HTML) - * @param {int} start Index for the current display starting point in the - * display array - * @param {int} end Index for the current display ending point in the - * display array - * @param {array int} display Index array to translate the visual position - * to the full data array - * - * @dtopt Callbacks - * @name DataTable.defaults.headerCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "fheaderCallback": function( head, data, start, end, display ) { - * head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records"; - * } - * } ); - * } ) - */ - "fnHeaderCallback": null, - - - /** - * The information element can be used to convey information about the current - * state of the table. Although the internationalisation options presented by - * DataTables are quite capable of dealing with most customisations, there may - * be times where you wish to customise the string further. This callback - * allows you to do exactly that. - * @type function - * @param {object} oSettings DataTables settings object - * @param {int} start Starting position in data for the draw - * @param {int} end End position in data for the draw - * @param {int} max Total number of rows in the table (regardless of - * filtering) - * @param {int} total Total number of rows in the data set, after filtering - * @param {string} pre The string that DataTables has formatted using it's - * own rules - * @returns {string} The string to be displayed in the information element. - * - * @dtopt Callbacks - * @name DataTable.defaults.infoCallback - * - * @example - * $('#example').dataTable( { - * "infoCallback": function( settings, start, end, max, total, pre ) { - * return start +" to "+ end; - * } - * } ); - */ - "fnInfoCallback": null, - - - /** - * Called when the table has been initialised. Normally DataTables will - * initialise sequentially and there will be no need for this function, - * however, this does not hold true when using external language information - * since that is obtained using an async XHR call. - * @type function - * @param {object} settings DataTables settings object - * @param {object} json The JSON object request from the server - only - * present if client-side Ajax sourced data is used - * - * @dtopt Callbacks - * @name DataTable.defaults.initComplete - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "initComplete": function(settings, json) { - * alert( 'DataTables has finished its initialisation.' ); - * } - * } ); - * } ) - */ - "fnInitComplete": null, - - - /** - * Called at the very start of each table draw and can be used to cancel the - * draw by returning false, any other return (including undefined) results in - * the full draw occurring). - * @type function - * @param {object} settings DataTables settings object - * @returns {boolean} False will cancel the draw, anything else (including no - * return) will allow it to complete. - * - * @dtopt Callbacks - * @name DataTable.defaults.preDrawCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "preDrawCallback": function( settings ) { - * if ( $('#test').val() == 1 ) { - * return false; - * } - * } - * } ); - * } ); - */ - "fnPreDrawCallback": null, - - - /** - * This function allows you to 'post process' each row after it have been - * generated for each table draw, but before it is rendered on screen. This - * function might be used for setting the row class name etc. - * @type function - * @param {node} row "TR" element for the current row - * @param {array} data Raw data array for this row - * @param {int} displayIndex The display index for the current table draw - * @param {int} displayIndexFull The index of the data in the full list of - * rows (after filtering) - * - * @dtopt Callbacks - * @name DataTable.defaults.rowCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "rowCallback": function( row, data, displayIndex, displayIndexFull ) { - * // Bold the grade for all 'A' grade browsers - * if ( data[4] == "A" ) { - * $('td:eq(4)', row).html( '<b>A</b>' ); - * } - * } - * } ); - * } ); - */ - "fnRowCallback": null, - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * This parameter allows you to override the default function which obtains - * the data from the server so something more suitable for your application. - * For example you could use POST data, or pull information from a Gears or - * AIR database. - * @type function - * @member - * @param {string} source HTTP source to obtain the data from (`ajax`) - * @param {array} data A key/value pair object containing the data to send - * to the server - * @param {function} callback to be called on completion of the data get - * process that will draw the data on the page. - * @param {object} settings DataTables settings object - * - * @dtopt Callbacks - * @dtopt Server-side - * @name DataTable.defaults.serverData - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "fnServerData": null, - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * It is often useful to send extra data to the server when making an Ajax - * request - for example custom filtering information, and this callback - * function makes it trivial to send extra information to the server. The - * passed in parameter is the data set that has been constructed by - * DataTables, and you can add to this or modify it as you require. - * @type function - * @param {array} data Data array (array of objects which are name/value - * pairs) that has been constructed by DataTables and will be sent to the - * server. In the case of Ajax sourced data with server-side processing - * this will be an empty array, for server-side processing there will be a - * significant number of parameters! - * @returns {undefined} Ensure that you modify the data array passed in, - * as this is passed by reference. - * - * @dtopt Callbacks - * @dtopt Server-side - * @name DataTable.defaults.serverParams - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "fnServerParams": null, - - - /** - * Load the table state. With this function you can define from where, and how, the - * state of a table is loaded. By default DataTables will load from `localStorage` - * but you might wish to use a server-side database or cookies. - * @type function - * @member - * @param {object} settings DataTables settings object - * @return {object} The DataTables state object to be loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoadCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadCallback": function (settings) { - * var o; - * - * // Send an Ajax request to the server to get the data. Note that - * // this is a synchronous request. - * $.ajax( { - * "url": "/state_load", - * "async": false, - * "dataType": "json", - * "success": function (json) { - * o = json; - * } - * } ); - * - * return o; - * } - * } ); - * } ); - */ - "fnStateLoadCallback": function ( settings ) { - try { - return JSON.parse( - (settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem( - 'DataTables_'+settings.sInstance+'_'+location.pathname - ) - ); - } catch (e) {} - }, - - - /** - * Callback which allows modification of the saved state prior to loading that state. - * This callback is called when the table is loading state from the stored data, but - * prior to the settings object being modified by the saved state. Note that for - * plug-in authors, you should use the `stateLoadParams` event to load parameters for - * a plug-in. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object that is to be loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoadParams - * - * @example - * // Remove a saved filter, so filtering is never loaded - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadParams": function (settings, data) { - * data.oSearch.sSearch = ""; - * } - * } ); - * } ); - * - * @example - * // Disallow state loading by returning false - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoadParams": function (settings, data) { - * return false; - * } - * } ); - * } ); - */ - "fnStateLoadParams": null, - - - /** - * Callback that is called when the state has been loaded from the state saving method - * and the DataTables settings object has been modified as a result of the loaded state. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object that was loaded - * - * @dtopt Callbacks - * @name DataTable.defaults.stateLoaded - * - * @example - * // Show an alert with the filtering value that was saved - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateLoaded": function (settings, data) { - * alert( 'Saved filter was: '+data.oSearch.sSearch ); - * } - * } ); - * } ); - */ - "fnStateLoaded": null, - - - /** - * Save the table state. This function allows you to define where and how the state - * information for the table is stored By default DataTables will use `localStorage` - * but you might wish to use a server-side database or cookies. - * @type function - * @member - * @param {object} settings DataTables settings object - * @param {object} data The state object to be saved - * - * @dtopt Callbacks - * @name DataTable.defaults.stateSaveCallback - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateSaveCallback": function (settings, data) { - * // Send an Ajax request to the server with the state object - * $.ajax( { - * "url": "/state_save", - * "data": data, - * "dataType": "json", - * "method": "POST" - * "success": function () {} - * } ); - * } - * } ); - * } ); - */ - "fnStateSaveCallback": function ( settings, data ) { - try { - (settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem( - 'DataTables_'+settings.sInstance+'_'+location.pathname, - JSON.stringify( data ) - ); - } catch (e) {} - }, - - - /** - * Callback which allows modification of the state to be saved. Called when the table - * has changed state a new state save is required. This method allows modification of - * the state saving object prior to actually doing the save, including addition or - * other state properties or modification. Note that for plug-in authors, you should - * use the `stateSaveParams` event to save parameters for a plug-in. - * @type function - * @param {object} settings DataTables settings object - * @param {object} data The state object to be saved - * - * @dtopt Callbacks - * @name DataTable.defaults.stateSaveParams - * - * @example - * // Remove a saved filter, so filtering is never saved - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateSave": true, - * "stateSaveParams": function (settings, data) { - * data.oSearch.sSearch = ""; - * } - * } ); - * } ); - */ - "fnStateSaveParams": null, - - - /** - * Duration for which the saved state information is considered valid. After this period - * has elapsed the state will be returned to the default. - * Value is given in seconds. - * @type int - * @default 7200 <i>(2 hours)</i> - * - * @dtopt Options - * @name DataTable.defaults.stateDuration - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "stateDuration": 60*60*24; // 1 day - * } ); - * } ) - */ - "iStateDuration": 7200, - - - /** - * When enabled DataTables will not make a request to the server for the first - * page draw - rather it will use the data already on the page (no sorting etc - * will be applied to it), thus saving on an XHR at load time. `deferLoading` - * is used to indicate that deferred loading is required, but it is also used - * to tell DataTables how many records there are in the full table (allowing - * the information element and pagination to be displayed correctly). In the case - * where a filtering is applied to the table on initial load, this can be - * indicated by giving the parameter as an array, where the first element is - * the number of records available after filtering and the second element is the - * number of records without filtering (allowing the table information element - * to be shown correctly). - * @type int | array - * @default null - * - * @dtopt Options - * @name DataTable.defaults.deferLoading - * - * @example - * // 57 records available in the table, no filtering applied - * $(document).ready( function() { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "scripts/server_processing.php", - * "deferLoading": 57 - * } ); - * } ); - * - * @example - * // 57 records after filtering, 100 without filtering (an initial filter applied) - * $(document).ready( function() { - * $('#example').dataTable( { - * "serverSide": true, - * "ajax": "scripts/server_processing.php", - * "deferLoading": [ 57, 100 ], - * "search": { - * "search": "my_filter" - * } - * } ); - * } ); - */ - "iDeferLoading": null, - - - /** - * Number of rows to display on a single page when using pagination. If - * feature enabled (`lengthChange`) then the end user will be able to override - * this to a custom setting using a pop-up menu. - * @type int - * @default 10 - * - * @dtopt Options - * @name DataTable.defaults.pageLength - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "pageLength": 50 - * } ); - * } ) - */ - "iDisplayLength": 5, - - - /** - * Define the starting point for data display when using DataTables with - * pagination. Note that this parameter is the number of records, rather than - * the page number, so if you have 10 records per page and want to start on - * the third page, it should be "20". - * @type int - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.displayStart - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "displayStart": 20 - * } ); - * } ) - */ - "iDisplayStart": 0, - - - /** - * By default DataTables allows keyboard navigation of the table (sorting, paging, - * and filtering) by adding a `tabindex` attribute to the required elements. This - * allows you to tab through the controls and press the enter key to activate them. - * The tabindex is default 0, meaning that the tab follows the flow of the document. - * You can overrule this using this parameter if you wish. Use a value of -1 to - * disable built-in keyboard navigation. - * @type int - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.tabIndex - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "tabIndex": 1 - * } ); - * } ); - */ - "iTabIndex": 0, - - - /** - * Classes that DataTables assigns to the various components and features - * that it adds to the HTML table. This allows classes to be configured - * during initialisation in addition to through the static - * {@link DataTable.ext.oStdClasses} object). - * @namespace - * @name DataTable.defaults.classes - */ - "oClasses": {}, - - - /** - * All strings that DataTables uses in the user interface that it creates - * are defined in this object, allowing you to modified them individually or - * completely replace them all as required. - * @namespace - * @name DataTable.defaults.language - */ - "oLanguage": { - /** - * Strings that are used for WAI-ARIA labels and controls only (these are not - * actually visible on the page, but will be read by screenreaders, and thus - * must be internationalised as well). - * @namespace - * @name DataTable.defaults.language.aria - */ - "oAria": { - /** - * ARIA label that is added to the table headers when the column may be - * sorted ascending by activing the column (click or return when focused). - * Note that the column header is prefixed to this string. - * @type string - * @default : activate to sort column ascending - * - * @dtopt Language - * @name DataTable.defaults.language.aria.sortAscending - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "aria": { - * "sortAscending": " - click/return to sort ascending" - * } - * } - * } ); - * } ); - */ - "sSortAscending": ": activate to sort column ascending", - - /** - * ARIA label that is added to the table headers when the column may be - * sorted descending by activing the column (click or return when focused). - * Note that the column header is prefixed to this string. - * @type string - * @default : activate to sort column ascending - * - * @dtopt Language - * @name DataTable.defaults.language.aria.sortDescending - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "aria": { - * "sortDescending": " - click/return to sort descending" - * } - * } - * } ); - * } ); - */ - "sSortDescending": ": activate to sort column descending" - }, - - /** - * Pagination string used by DataTables for the built-in pagination - * control types. - * @namespace - * @name DataTable.defaults.language.paginate - */ - "oPaginate": { - /** - * Text to use when using the 'full_numbers' type of pagination for the - * button to take the user to the first page. - * @type string - * @default First - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.first - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "first": "First page" - * } - * } - * } ); - * } ); - */ - "sFirst": "First", - - - /** - * Text to use when using the 'full_numbers' type of pagination for the - * button to take the user to the last page. - * @type string - * @default Last - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.last - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "last": "Last page" - * } - * } - * } ); - * } ); - */ - "sLast": "Last", - - - /** - * Text to use for the 'next' pagination button (to take the user to the - * next page). - * @type string - * @default Next - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.next - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "next": "Next page" - * } - * } - * } ); - * } ); - */ - "sNext": "Next", - - - /** - * Text to use for the 'previous' pagination button (to take the user to - * the previous page). - * @type string - * @default Previous - * - * @dtopt Language - * @name DataTable.defaults.language.paginate.previous - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "paginate": { - * "previous": "Previous page" - * } - * } - * } ); - * } ); - */ - "sPrevious": "Previous" - }, - - /** - * This string is shown in preference to `zeroRecords` when the table is - * empty of data (regardless of filtering). Note that this is an optional - * parameter - if it is not given, the value of `zeroRecords` will be used - * instead (either the default or given value). - * @type string - * @default No data available in table - * - * @dtopt Language - * @name DataTable.defaults.language.emptyTable - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "emptyTable": "No data available in table" - * } - * } ); - * } ); - */ - "sEmptyTable": "No data available in table", - - - /** - * This string gives information to the end user about the information - * that is current on display on the page. The following tokens can be - * used in the string and will be dynamically replaced as the table - * display updates. This tokens can be placed anywhere in the string, or - * removed as needed by the language requires: - * - * * `\_START\_` - Display index of the first record on the current page - * * `\_END\_` - Display index of the last record on the current page - * * `\_TOTAL\_` - Number of records in the table after filtering - * * `\_MAX\_` - Number of records in the table without filtering - * * `\_PAGE\_` - Current page number - * * `\_PAGES\_` - Total number of pages of data in the table - * - * @type string - * @default Showing _START_ to _END_ of _TOTAL_ entries - * - * @dtopt Language - * @name DataTable.defaults.language.info - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "info": "Showing page _PAGE_ of _PAGES_" - * } - * } ); - * } ); - */ - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", - - - /** - * Display information string for when the table is empty. Typically the - * format of this string should match `info`. - * @type string - * @default Showing 0 to 0 of 0 entries - * - * @dtopt Language - * @name DataTable.defaults.language.infoEmpty - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoEmpty": "No entries to show" - * } - * } ); - * } ); - */ - "sInfoEmpty": "Showing 0 to 0 of 0 entries", - - - /** - * When a user filters the information in a table, this string is appended - * to the information (`info`) to give an idea of how strong the filtering - * is. The variable _MAX_ is dynamically updated. - * @type string - * @default (filtered from _MAX_ total entries) - * - * @dtopt Language - * @name DataTable.defaults.language.infoFiltered - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoFiltered": " - filtering from _MAX_ records" - * } - * } ); - * } ); - */ - "sInfoFiltered": "(filtered from _MAX_ total entries)", - - - /** - * If can be useful to append extra information to the info string at times, - * and this variable does exactly that. This information will be appended to - * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are - * being used) at all times. - * @type string - * @default <i>Empty string</i> - * - * @dtopt Language - * @name DataTable.defaults.language.infoPostFix - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "infoPostFix": "All records shown are derived from real information." - * } - * } ); - * } ); - */ - "sInfoPostFix": "", - - - /** - * This decimal place operator is a little different from the other - * language options since DataTables doesn't output floating point - * numbers, so it won't ever use this for display of a number. Rather, - * what this parameter does is modify the sort methods of the table so - * that numbers which are in a format which has a character other than - * a period (`.`) as a decimal place will be sorted numerically. - * - * Note that numbers with different decimal places cannot be shown in - * the same table and still be sortable, the table must be consistent. - * However, multiple different tables on the page can use different - * decimal place characters. - * @type string - * @default - * - * @dtopt Language - * @name DataTable.defaults.language.decimal - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "decimal": "," - * "thousands": "." - * } - * } ); - * } ); - */ - "sDecimal": "", - - - /** - * DataTables has a build in number formatter (`formatNumber`) which is - * used to format large numbers that are used in the table information. - * By default a comma is used, but this can be trivially changed to any - * character you wish with this parameter. - * @type string - * @default , - * - * @dtopt Language - * @name DataTable.defaults.language.thousands - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "thousands": "'" - * } - * } ); - * } ); - */ - "sThousands": ",", - - - /** - * Detail the action that will be taken when the drop down menu for the - * pagination length option is changed. The '_MENU_' variable is replaced - * with a default select list of 10, 25, 50 and 100, and can be replaced - * with a custom select box if required. - * @type string - * @default Show _MENU_ entries - * - * @dtopt Language - * @name DataTable.defaults.language.lengthMenu - * - * @example - * // Language change only - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "lengthMenu": "Display _MENU_ records" - * } - * } ); - * } ); - * - * @example - * // Language and options change - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "lengthMenu": 'Display <select>'+ - * '<option value="10">10</option>'+ - * '<option value="20">20</option>'+ - * '<option value="30">30</option>'+ - * '<option value="40">40</option>'+ - * '<option value="50">50</option>'+ - * '<option value="-1">All</option>'+ - * '</select> records' - * } - * } ); - * } ); - */ - "sLengthMenu": "Show _MENU_ entries", - - - /** - * When using Ajax sourced data and during the first draw when DataTables is - * gathering the data, this message is shown in an empty row in the table to - * indicate to the end user the the data is being loaded. Note that this - * parameter is not used when loading data by server-side processing, just - * Ajax sourced data with client-side processing. - * @type string - * @default Loading... - * - * @dtopt Language - * @name DataTable.defaults.language.loadingRecords - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "loadingRecords": "Please wait - loading..." - * } - * } ); - * } ); - */ - "sLoadingRecords": "Loading...", - - - /** - * Text which is displayed when the table is processing a user action - * (usually a sort command or similar). - * @type string - * @default Processing... - * - * @dtopt Language - * @name DataTable.defaults.language.processing - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "processing": "DataTables is currently busy" - * } - * } ); - * } ); - */ - "sProcessing": "Processing...", - - - /** - * Details the actions that will be taken when the user types into the - * filtering input text box. The variable "_INPUT_", if used in the string, - * is replaced with the HTML text box for the filtering input allowing - * control over where it appears in the string. If "_INPUT_" is not given - * then the input box is appended to the string automatically. - * @type string - * @default Search: - * - * @dtopt Language - * @name DataTable.defaults.language.search - * - * @example - * // Input text box will be appended at the end automatically - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "search": "Filter records:" - * } - * } ); - * } ); - * - * @example - * // Specify where the filter should appear - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "search": "Apply filter _INPUT_ to table" - * } - * } ); - * } ); - */ - "sSearch": "Search:", - - - /** - * Assign a `placeholder` attribute to the search `input` element - * @type string - * @default - * - * @dtopt Language - * @name DataTable.defaults.language.searchPlaceholder - */ - "sSearchPlaceholder": "", - - - /** - * All of the language information can be stored in a file on the - * server-side, which DataTables will look up if this parameter is passed. - * It must store the URL of the language file, which is in a JSON format, - * and the object has the same properties as the oLanguage object in the - * initialiser object (i.e. the above parameters). Please refer to one of - * the example language files to see how this works in action. - * @type string - * @default <i>Empty string - i.e. disabled</i> - * - * @dtopt Language - * @name DataTable.defaults.language.url - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "url": "http://www.sprymedia.co.uk/dataTables/lang.txt" - * } - * } ); - * } ); - */ - "sUrl": "", - - - /** - * Text shown inside the table records when the is no information to be - * displayed after filtering. `emptyTable` is shown when there is simply no - * information in the table at all (regardless of filtering). - * @type string - * @default No matching records found - * - * @dtopt Language - * @name DataTable.defaults.language.zeroRecords - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "language": { - * "zeroRecords": "No records to display" - * } - * } ); - * } ); - */ - "sZeroRecords": "No matching records found" - }, - - - /** - * This parameter allows you to have define the global filtering state at - * initialisation time. As an object the `search` parameter must be - * defined, but all other parameters are optional. When `regex` is true, - * the search string will be treated as a regular expression, when false - * (default) it will be treated as a straight string. When `smart` - * DataTables will use it's smart filtering methods (to word match at - * any point in the data), when false this will not be done. - * @namespace - * @extends DataTable.models.oSearch - * - * @dtopt Options - * @name DataTable.defaults.search - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "search": {"search": "Initial search"} - * } ); - * } ) - */ - "oSearch": $.extend( {}, DataTable.models.oSearch ), - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * By default DataTables will look for the property `data` (or `aaData` for - * compatibility with DataTables 1.9-) when obtaining data from an Ajax - * source or for server-side processing - this parameter allows that - * property to be changed. You can use Javascript dotted object notation to - * get a data source for multiple levels of nesting. - * @type string - * @default data - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.ajaxDataProp - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sAjaxDataProp": "data", - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * You can instruct DataTables to load data from an external - * source using this parameter (use aData if you want to pass data in you - * already have). Simply provide a url a JSON object can be obtained from. - * @type string - * @default null - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.ajaxSource - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sAjaxSource": null, - - - /** - * This initialisation variable allows you to specify exactly where in the - * DOM you want DataTables to inject the various controls it adds to the page - * (for example you might want the pagination controls at the top of the - * table). DIV elements (with or without a custom class) can also be added to - * aid styling. The follow syntax is used: - * <ul> - * <li>The following options are allowed: - * <ul> - * <li>'l' - Length changing</li> - * <li>'f' - Filtering input</li> - * <li>'t' - The table!</li> - * <li>'i' - Information</li> - * <li>'p' - Pagination</li> - * <li>'r' - pRocessing</li> - * </ul> - * </li> - * <li>The following constants are allowed: - * <ul> - * <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li> - * <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li> - * </ul> - * </li> - * <li>The following syntax is expected: - * <ul> - * <li>'<' and '>' - div elements</li> - * <li>'<"class" and '>' - div with a class</li> - * <li>'<"#id" and '>' - div with an ID</li> - * </ul> - * </li> - * <li>Examples: - * <ul> - * <li>'<"wrapper"flipt>'</li> - * <li>'<lf<t>ip>'</li> - * </ul> - * </li> - * </ul> - * @type string - * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b> - * <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i> - * - * @dtopt Options - * @name DataTable.defaults.dom - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "dom": '<"top"i>rt<"bottom"flp><"clear">' - * } ); - * } ); - */ - "sDom": "lfrtip", - - - /** - * Search delay option. This will throttle full table searches that use the - * DataTables provided search input element (it does not effect calls to - * `dt-api search()`, providing a delay before the search is made. - * @type integer - * @default 0 - * - * @dtopt Options - * @name DataTable.defaults.searchDelay - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "searchDelay": 200 - * } ); - * } ) - */ - "searchDelay": null, - - - /** - * DataTables features four different built-in options for the buttons to - * display for pagination control: - * - * * `simple` - 'Previous' and 'Next' buttons only - * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers - * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons - * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus - * page numbers - * - * Further methods can be added using {@link DataTable.ext.oPagination}. - * @type string - * @default simple_numbers - * - * @dtopt Options - * @name DataTable.defaults.pagingType - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "pagingType": "full_numbers" - * } ); - * } ) - */ - "sPaginationType": "simple_numbers", - - - /** - * Enable horizontal scrolling. When a table is too wide to fit into a - * certain layout, or you have a large number of columns in the table, you - * can enable x-scrolling to show the table in a viewport, which can be - * scrolled. This property can be `true` which will allow the table to - * scroll horizontally when needed, or any CSS unit, or a number (in which - * case it will be treated as a pixel measurement). Setting as simply `true` - * is recommended. - * @type boolean|string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Features - * @name DataTable.defaults.scrollX - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollX": true, - * "scrollCollapse": true - * } ); - * } ); - */ - "sScrollX": "", - - - /** - * This property can be used to force a DataTable to use more width than it - * might otherwise do when x-scrolling is enabled. For example if you have a - * table which requires to be well spaced, this parameter is useful for - * "over-sizing" the table, and thus forcing scrolling. This property can by - * any CSS unit, or a number (in which case it will be treated as a pixel - * measurement). - * @type string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Options - * @name DataTable.defaults.scrollXInner - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollX": "100%", - * "scrollXInner": "110%" - * } ); - * } ); - */ - "sScrollXInner": "", - - - /** - * Enable vertical scrolling. Vertical scrolling will constrain the DataTable - * to the given height, and enable scrolling for any data which overflows the - * current viewport. This can be used as an alternative to paging to display - * a lot of data in a small area (although paging and scrolling can both be - * enabled at the same time). This property can be any CSS unit, or a number - * (in which case it will be treated as a pixel measurement). - * @type string - * @default <i>blank string - i.e. disabled</i> - * - * @dtopt Features - * @name DataTable.defaults.scrollY - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "scrollY": "200px", - * "paginate": false - * } ); - * } ); - */ - "sScrollY": "", - - - /** - * __Deprecated__ The functionality provided by this parameter has now been - * superseded by that provided through `ajax`, which should be used instead. - * - * Set the HTTP method that is used to make the Ajax call for server-side - * processing or Ajax sourced data. - * @type string - * @default GET - * - * @dtopt Options - * @dtopt Server-side - * @name DataTable.defaults.serverMethod - * - * @deprecated 1.10. Please use `ajax` for this functionality now. - */ - "sServerMethod": "GET", - - - /** - * DataTables makes use of renderers when displaying HTML elements for - * a table. These renderers can be added or modified by plug-ins to - * generate suitable mark-up for a site. For example the Bootstrap - * integration plug-in for DataTables uses a paging button renderer to - * display pagination buttons in the mark-up required by Bootstrap. - * - * For further information about the renderers available see - * DataTable.ext.renderer - * @type string|object - * @default null - * - * @name DataTable.defaults.renderer - * - */ - "renderer": null - }; - - _fnHungarianMap( DataTable.defaults ); - - - - /* - * Developer note - See note in model.defaults.js about the use of Hungarian - * notation and camel case. - */ - - /** - * Column options that can be given to DataTables at initialisation time. - * @namespace - */ - DataTable.defaults.column = { - /** - * Define which column(s) an order will occur on for this column. This - * allows a column's ordering to take multiple columns into account when - * doing a sort or use the data from a different column. For example first - * name / last name columns make sense to do a multi-column sort over the - * two columns. - * @type array|int - * @default null <i>Takes the value of the column index automatically</i> - * - * @name DataTable.defaults.column.orderData - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderData": [ 0, 1 ], "targets": [ 0 ] }, - * { "orderData": [ 1, 0 ], "targets": [ 1 ] }, - * { "orderData": 2, "targets": [ 2 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "orderData": [ 0, 1 ] }, - * { "orderData": [ 1, 0 ] }, - * { "orderData": 2 }, - * null, - * null - * ] - * } ); - * } ); - */ - "aDataSort": null, - "iDataSort": -1, - - - /** - * You can control the default ordering direction, and even alter the - * behaviour of the sort handler (i.e. only allow ascending ordering etc) - * using this parameter. - * @type array - * @default [ 'asc', 'desc' ] - * - * @name DataTable.defaults.column.orderSequence - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderSequence": [ "asc" ], "targets": [ 1 ] }, - * { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] }, - * { "orderSequence": [ "desc" ], "targets": [ 3 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * { "orderSequence": [ "asc" ] }, - * { "orderSequence": [ "desc", "asc", "asc" ] }, - * { "orderSequence": [ "desc" ] }, - * null - * ] - * } ); - * } ); - */ - "asSorting": [ 'asc', 'desc' ], - - - /** - * Enable or disable filtering on the data in this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.searchable - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "searchable": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "searchable": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bSearchable": true, - - - /** - * Enable or disable ordering on this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.orderable - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderable": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "orderable": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bSortable": true, - - - /** - * Enable or disable the display of this column. - * @type boolean - * @default true - * - * @name DataTable.defaults.column.visible - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "visible": false, "targets": [ 0 ] } - * ] } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "visible": false }, - * null, - * null, - * null, - * null - * ] } ); - * } ); - */ - "bVisible": true, - - - /** - * Developer definable function that is called whenever a cell is created (Ajax source, - * etc) or processed for input (DOM source). This can be used as a compliment to mRender - * allowing you to modify the DOM element (add background colour for example) when the - * element is available. - * @type function - * @param {element} td The TD node that has been created - * @param {*} cellData The Data for the cell - * @param {array|object} rowData The data for the whole row - * @param {int} row The row index for the aoData data store - * @param {int} col The column index for aoColumns - * - * @name DataTable.defaults.column.createdCell - * @dtopt Columns - * - * @example - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [3], - * "createdCell": function (td, cellData, rowData, row, col) { - * if ( cellData == "1.7" ) { - * $(td).css('color', 'blue') - * } - * } - * } ] - * }); - * } ); - */ - "fnCreatedCell": null, - - - /** - * This parameter has been replaced by `data` in DataTables to ensure naming - * consistency. `dataProp` can still be used, as there is backwards - * compatibility in DataTables for this option, but it is strongly - * recommended that you use `data` in preference to `dataProp`. - * @name DataTable.defaults.column.dataProp - */ - - - /** - * This property can be used to read data from any data source property, - * including deeply nested objects / properties. `data` can be given in a - * number of different ways which effect its behaviour: - * - * * `integer` - treated as an array index for the data source. This is the - * default that DataTables uses (incrementally increased for each column). - * * `string` - read an object property from the data source. There are - * three 'special' options that can be used in the string to alter how - * DataTables reads the data from the source object: - * * `.` - Dotted Javascript notation. Just as you use a `.` in - * Javascript to read from nested objects, so to can the options - * specified in `data`. For example: `browser.version` or - * `browser.name`. If your object parameter name contains a period, use - * `\\` to escape it - i.e. `first\\.name`. - * * `[]` - Array notation. DataTables can automatically combine data - * from and array source, joining the data with the characters provided - * between the two brackets. For example: `name[, ]` would provide a - * comma-space separated list from the source array. If no characters - * are provided between the brackets, the original array source is - * returned. - * * `()` - Function notation. Adding `()` to the end of a parameter will - * execute a function of the name given. For example: `browser()` for a - * simple function on the data source, `browser.version()` for a - * function in a nested property or even `browser().version` to get an - * object property if the function called returns an object. Note that - * function notation is recommended for use in `render` rather than - * `data` as it is much simpler to use as a renderer. - * * `null` - use the original data source for the row rather than plucking - * data directly from it. This action has effects on two other - * initialisation options: - * * `defaultContent` - When null is given as the `data` option and - * `defaultContent` is specified for the column, the value defined by - * `defaultContent` will be used for the cell. - * * `render` - When null is used for the `data` option and the `render` - * option is specified for the column, the whole data source for the - * row is used for the renderer. - * * `function` - the function given will be executed whenever DataTables - * needs to set or get the data for a cell in the column. The function - * takes three parameters: - * * Parameters: - * * `{array|object}` The data source for the row - * * `{string}` The type call data requested - this will be 'set' when - * setting data or 'filter', 'display', 'type', 'sort' or undefined - * when gathering data. Note that when `undefined` is given for the - * type DataTables expects to get the raw data for the object back< - * * `{*}` Data to set when the second parameter is 'set'. - * * Return: - * * The return value from the function is not required when 'set' is - * the type of call, but otherwise the return is what will be used - * for the data requested. - * - * Note that `data` is a getter and setter option. If you just require - * formatting of data for output, you will likely want to use `render` which - * is simply a getter and thus simpler to use. - * - * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The - * name change reflects the flexibility of this property and is consistent - * with the naming of mRender. If 'mDataProp' is given, then it will still - * be used by DataTables, as it automatically maps the old name to the new - * if required. - * - * @type string|int|function|null - * @default null <i>Use automatically calculated column index</i> - * - * @name DataTable.defaults.column.data - * @dtopt Columns - * - * @example - * // Read table data from objects - * // JSON structure for each row: - * // { - * // "engine": {value}, - * // "browser": {value}, - * // "platform": {value}, - * // "version": {value}, - * // "grade": {value} - * // } - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/objects.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { "data": "platform" }, - * { "data": "version" }, - * { "data": "grade" } - * ] - * } ); - * } ); - * - * @example - * // Read information from deeply nested objects - * // JSON structure for each row: - * // { - * // "engine": {value}, - * // "browser": {value}, - * // "platform": { - * // "inner": {value} - * // }, - * // "details": [ - * // {value}, {value} - * // ] - * // } - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/deep.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { "data": "platform.inner" }, - * { "data": "platform.details.0" }, - * { "data": "platform.details.1" } - * ] - * } ); - * } ); - * - * @example - * // Using `data` as a function to provide different information for - * // sorting, filtering and display. In this case, currency (price) - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": function ( source, type, val ) { - * if (type === 'set') { - * source.price = val; - * // Store the computed dislay and filter values for efficiency - * source.price_display = val=="" ? "" : "$"+numberFormat(val); - * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val; - * return; - * } - * else if (type === 'display') { - * return source.price_display; - * } - * else if (type === 'filter') { - * return source.price_filter; - * } - * // 'sort', 'type' and undefined all just use the integer - * return source.price; - * } - * } ] - * } ); - * } ); - * - * @example - * // Using default content - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, - * "defaultContent": "Click to edit" - * } ] - * } ); - * } ); - * - * @example - * // Using array notation - outputting a list from an array - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": "name[, ]" - * } ] - * } ); - * } ); - * - */ - "mData": null, - - - /** - * This property is the rendering partner to `data` and it is suggested that - * when you want to manipulate data for display (including filtering, - * sorting etc) without altering the underlying data for the table, use this - * property. `render` can be considered to be the the read only companion to - * `data` which is read / write (then as such more complex). Like `data` - * this option can be given in a number of different ways to effect its - * behaviour: - * - * * `integer` - treated as an array index for the data source. This is the - * default that DataTables uses (incrementally increased for each column). - * * `string` - read an object property from the data source. There are - * three 'special' options that can be used in the string to alter how - * DataTables reads the data from the source object: - * * `.` - Dotted Javascript notation. Just as you use a `.` in - * Javascript to read from nested objects, so to can the options - * specified in `data`. For example: `browser.version` or - * `browser.name`. If your object parameter name contains a period, use - * `\\` to escape it - i.e. `first\\.name`. - * * `[]` - Array notation. DataTables can automatically combine data - * from and array source, joining the data with the characters provided - * between the two brackets. For example: `name[, ]` would provide a - * comma-space separated list from the source array. If no characters - * are provided between the brackets, the original array source is - * returned. - * * `()` - Function notation. Adding `()` to the end of a parameter will - * execute a function of the name given. For example: `browser()` for a - * simple function on the data source, `browser.version()` for a - * function in a nested property or even `browser().version` to get an - * object property if the function called returns an object. - * * `object` - use different data for the different data types requested by - * DataTables ('filter', 'display', 'type' or 'sort'). The property names - * of the object is the data type the property refers to and the value can - * defined using an integer, string or function using the same rules as - * `render` normally does. Note that an `_` option _must_ be specified. - * This is the default value to use if you haven't specified a value for - * the data type requested by DataTables. - * * `function` - the function given will be executed whenever DataTables - * needs to set or get the data for a cell in the column. The function - * takes three parameters: - * * Parameters: - * * {array|object} The data source for the row (based on `data`) - * * {string} The type call data requested - this will be 'filter', - * 'display', 'type' or 'sort'. - * * {array|object} The full data source for the row (not based on - * `data`) - * * Return: - * * The return value from the function is what will be used for the - * data requested. - * - * @type string|int|function|object|null - * @default null Use the data source value. - * - * @name DataTable.defaults.column.render - * @dtopt Columns - * - * @example - * // Create a comma separated list from an array of objects - * $(document).ready( function() { - * $('#example').dataTable( { - * "ajaxSource": "sources/deep.txt", - * "columns": [ - * { "data": "engine" }, - * { "data": "browser" }, - * { - * "data": "platform", - * "render": "[, ].name" - * } - * ] - * } ); - * } ); - * - * @example - * // Execute a function to obtain data - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, // Use the full data source object for the renderer's source - * "render": "browserName()" - * } ] - * } ); - * } ); - * - * @example - * // As an object, extracting different data for the different types - * // This would be used with a data source such as: - * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" } - * // Here the `phone` integer is used for sorting and type detection, while `phone_filter` - * // (which has both forms) is used for filtering for if a user inputs either format, while - * // the formatted phone number is the one that is shown in the table. - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": null, // Use the full data source object for the renderer's source - * "render": { - * "_": "phone", - * "filter": "phone_filter", - * "display": "phone_display" - * } - * } ] - * } ); - * } ); - * - * @example - * // Use as a function to create a link from the data source - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "data": "download_link", - * "render": function ( data, type, full ) { - * return '<a href="'+data+'">Download</a>'; - * } - * } ] - * } ); - * } ); - */ - "mRender": null, - - - /** - * Change the cell type created for the column - either TD cells or TH cells. This - * can be useful as TH cells have semantic meaning in the table body, allowing them - * to act as a header for a row (you may wish to add scope='row' to the TH elements). - * @type string - * @default td - * - * @name DataTable.defaults.column.cellType - * @dtopt Columns - * - * @example - * // Make the first column use TH cells - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ { - * "targets": [ 0 ], - * "cellType": "th" - * } ] - * } ); - * } ); - */ - "sCellType": "td", - - - /** - * Class to give to each cell in this column. - * @type string - * @default <i>Empty string</i> - * - * @name DataTable.defaults.column.class - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "class": "my_class", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "class": "my_class" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sClass": "", - - /** - * When DataTables calculates the column widths to assign to each column, - * it finds the longest string in each column and then constructs a - * temporary table and reads the widths from that. The problem with this - * is that "mmm" is much wider then "iiii", but the latter is a longer - * string - thus the calculation can go wrong (doing it properly and putting - * it into an DOM object and measuring that is horribly(!) slow). Thus as - * a "work around" we provide this option. It will append its value to the - * text that is found to be the longest string for the column - i.e. padding. - * Generally you shouldn't need this! - * @type string - * @default <i>Empty string<i> - * - * @name DataTable.defaults.column.contentPadding - * @dtopt Columns - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * null, - * { - * "contentPadding": "mmm" - * } - * ] - * } ); - * } ); - */ - "sContentPadding": "", - - - /** - * Allows a default value to be given for a column's data, and will be used - * whenever a null data source is encountered (this can be because `data` - * is set to null, or because the data source itself is null). - * @type string - * @default null - * - * @name DataTable.defaults.column.defaultContent - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { - * "data": null, - * "defaultContent": "Edit", - * "targets": [ -1 ] - * } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * null, - * { - * "data": null, - * "defaultContent": "Edit" - * } - * ] - * } ); - * } ); - */ - "sDefaultContent": null, - - - /** - * This parameter is only used in DataTables' server-side processing. It can - * be exceptionally useful to know what columns are being displayed on the - * client side, and to map these to database fields. When defined, the names - * also allow DataTables to reorder information from the server if it comes - * back in an unexpected order (i.e. if you switch your columns around on the - * client-side, your server-side code does not also need updating). - * @type string - * @default <i>Empty string</i> - * - * @name DataTable.defaults.column.name - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "name": "engine", "targets": [ 0 ] }, - * { "name": "browser", "targets": [ 1 ] }, - * { "name": "platform", "targets": [ 2 ] }, - * { "name": "version", "targets": [ 3 ] }, - * { "name": "grade", "targets": [ 4 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "name": "engine" }, - * { "name": "browser" }, - * { "name": "platform" }, - * { "name": "version" }, - * { "name": "grade" } - * ] - * } ); - * } ); - */ - "sName": "", - - - /** - * Defines a data source type for the ordering which can be used to read - * real-time information from the table (updating the internally cached - * version) prior to ordering. This allows ordering to occur on user - * editable elements such as form inputs. - * @type string - * @default std - * - * @name DataTable.defaults.column.orderDataType - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "orderDataType": "dom-text", "targets": [ 2, 3 ] }, - * { "type": "numeric", "targets": [ 3 ] }, - * { "orderDataType": "dom-select", "targets": [ 4 ] }, - * { "orderDataType": "dom-checkbox", "targets": [ 5 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * null, - * null, - * { "orderDataType": "dom-text" }, - * { "orderDataType": "dom-text", "type": "numeric" }, - * { "orderDataType": "dom-select" }, - * { "orderDataType": "dom-checkbox" } - * ] - * } ); - * } ); - */ - "sSortDataType": "std", - - - /** - * The title of this column. - * @type string - * @default null <i>Derived from the 'TH' value for this column in the - * original HTML table.</i> - * - * @name DataTable.defaults.column.title - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "title": "My column title", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "title": "My column title" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sTitle": null, - - - /** - * The type allows you to specify how the data for this column will be - * ordered. Four types (string, numeric, date and html (which will strip - * HTML tags before ordering)) are currently available. Note that only date - * formats understood by Javascript's Date() object will be accepted as type - * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string', - * 'numeric', 'date' or 'html' (by default). Further types can be adding - * through plug-ins. - * @type string - * @default null <i>Auto-detected from raw data</i> - * - * @name DataTable.defaults.column.type - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "type": "html", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "type": "html" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sType": null, - - - /** - * Defining the width of the column, this parameter may take any CSS value - * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not - * been given a specific width through this interface ensuring that the table - * remains readable. - * @type string - * @default null <i>Automatic</i> - * - * @name DataTable.defaults.column.width - * @dtopt Columns - * - * @example - * // Using `columnDefs` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columnDefs": [ - * { "width": "20%", "targets": [ 0 ] } - * ] - * } ); - * } ); - * - * @example - * // Using `columns` - * $(document).ready( function() { - * $('#example').dataTable( { - * "columns": [ - * { "width": "20%" }, - * null, - * null, - * null, - * null - * ] - * } ); - * } ); - */ - "sWidth": null - }; - - _fnHungarianMap( DataTable.defaults.column ); - - - - /** - * DataTables settings object - this holds all the information needed for a - * given table, including configuration, data and current application of the - * table options. DataTables does not have a single instance for each DataTable - * with the settings attached to that instance, but rather instances of the - * DataTable "class" are created on-the-fly as needed (typically by a - * $().dataTable() call) and the settings object is then applied to that - * instance. - * - * Note that this object is related to {@link DataTable.defaults} but this - * one is the internal data store for DataTables's cache of columns. It should - * NOT be manipulated outside of DataTables. Any configuration should be done - * through the initialisation options. - * @namespace - * @todo Really should attach the settings object to individual instances so we - * don't need to create new instances on each $().dataTable() call (if the - * table already exists). It would also save passing oSettings around and - * into every single function. However, this is a very significant - * architecture change for DataTables and will almost certainly break - * backwards compatibility with older installations. This is something that - * will be done in 2.0. - */ - DataTable.models.oSettings = { - /** - * Primary features of DataTables and their enablement state. - * @namespace - */ - "oFeatures": { - - /** - * Flag to say if DataTables should automatically try to calculate the - * optimum table and columns widths (true) or not (false). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bAutoWidth": null, - - /** - * Delay the creation of TR and TD elements until they are actually - * needed by a driven page draw. This can give a significant speed - * increase for Ajax source and Javascript source data, but makes no - * difference at all fro DOM and server-side processing tables. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bDeferRender": null, - - /** - * Enable filtering on the table or not. Note that if this is disabled - * then there is no filtering at all on the table, including fnFilter. - * To just remove the filtering input use sDom and remove the 'f' option. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bFilter": null, - - /** - * Table information element (the 'Showing x of y records' div) enable - * flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bInfo": null, - - /** - * Present a user control allowing the end user to change the page size - * when pagination is enabled. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bLengthChange": null, - - /** - * Pagination enabled or not. Note that if this is disabled then length - * changing must also be disabled. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bPaginate": null, - - /** - * Processing indicator enable flag whenever DataTables is enacting a - * user request - typically an Ajax request for server-side processing. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bProcessing": null, - - /** - * Server-side processing enabled flag - when enabled DataTables will - * get all data from the server for every draw - there is no filtering, - * sorting or paging done on the client-side. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bServerSide": null, - - /** - * Sorting enablement flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSort": null, - - /** - * Multi-column sorting - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortMulti": null, - - /** - * Apply a class to the columns which are being sorted to provide a - * visual highlight or not. This can slow things down when enabled since - * there is a lot of DOM interaction. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortClasses": null, - - /** - * State saving enablement flag. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bStateSave": null - }, - - - /** - * Scrolling settings for a table. - * @namespace - */ - "oScroll": { - /** - * When the table is shorter in height than sScrollY, collapse the - * table container down to the height of the table (when true). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bCollapse": null, - - /** - * Width of the scrollbar for the web-browser's platform. Calculated - * during table initialisation. - * @type int - * @default 0 - */ - "iBarWidth": 0, - - /** - * Viewport width for horizontal scrolling. Horizontal scrolling is - * disabled if an empty string. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sX": null, - - /** - * Width to expand the table to when using x-scrolling. Typically you - * should not need to use this. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @deprecated - */ - "sXInner": null, - - /** - * Viewport height for vertical scrolling. Vertical scrolling is disabled - * if an empty string. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sY": null - }, - - /** - * Language information for the table. - * @namespace - * @extends DataTable.defaults.oLanguage - */ - "oLanguage": { - /** - * Information callback function. See - * {@link DataTable.defaults.fnInfoCallback} - * @type function - * @default null - */ - "fnInfoCallback": null - }, - - /** - * Browser support parameters - * @namespace - */ - "oBrowser": { - /** - * Indicate if the browser incorrectly calculates width:100% inside a - * scrolling element (IE6/7) - * @type boolean - * @default false - */ - "bScrollOversize": false, - - /** - * Determine if the vertical scrollbar is on the right or left of the - * scrolling container - needed for rtl language layout, although not - * all browsers move the scrollbar (Safari). - * @type boolean - * @default false - */ - "bScrollbarLeft": false - }, - - - "ajax": null, - - - /** - * Array referencing the nodes which are used for the features. The - * parameters of this object match what is allowed by sDom - i.e. - * <ul> - * <li>'l' - Length changing</li> - * <li>'f' - Filtering input</li> - * <li>'t' - The table!</li> - * <li>'i' - Information</li> - * <li>'p' - Pagination</li> - * <li>'r' - pRocessing</li> - * </ul> - * @type array - * @default [] - */ - "aanFeatures": [], - - /** - * Store data information - see {@link DataTable.models.oRow} for detailed - * information. - * @type array - * @default [] - */ - "aoData": [], - - /** - * Array of indexes which are in the current display (after filtering etc) - * @type array - * @default [] - */ - "aiDisplay": [], - - /** - * Array of indexes for display - no filtering - * @type array - * @default [] - */ - "aiDisplayMaster": [], - - /** - * Store information about each column that is in use - * @type array - * @default [] - */ - "aoColumns": [], - - /** - * Store information about the table's header - * @type array - * @default [] - */ - "aoHeader": [], - - /** - * Store information about the table's footer - * @type array - * @default [] - */ - "aoFooter": [], - - /** - * Store the applied global search information in case we want to force a - * research or compare the old search to a new one. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @namespace - * @extends DataTable.models.oSearch - */ - "oPreviousSearch": {}, - - /** - * Store the applied search for each column - see - * {@link DataTable.models.oSearch} for the format that is used for the - * filtering information for each column. - * @type array - * @default [] - */ - "aoPreSearchCols": [], - - /** - * Sorting that is applied to the table. Note that the inner arrays are - * used in the following manner: - * <ul> - * <li>Index 0 - column number</li> - * <li>Index 1 - current sorting direction</li> - * </ul> - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @todo These inner arrays should really be objects - */ - "aaSorting": null, - - /** - * Sorting that is always applied to the table (i.e. prefixed in front of - * aaSorting). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "aaSortingFixed": [], - - /** - * Classes to use for the striping of a table. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "asStripeClasses": null, - - /** - * If restoring a table - we should restore its striping classes as well - * @type array - * @default [] - */ - "asDestroyStripes": [], - - /** - * If restoring a table - we should restore its width - * @type int - * @default 0 - */ - "sDestroyWidth": 0, - - /** - * Callback functions array for every time a row is inserted (i.e. on a draw). - * @type array - * @default [] - */ - "aoRowCallback": [], - - /** - * Callback functions for the header on each draw. - * @type array - * @default [] - */ - "aoHeaderCallback": [], - - /** - * Callback function for the footer on each draw. - * @type array - * @default [] - */ - "aoFooterCallback": [], - - /** - * Array of callback functions for draw callback functions - * @type array - * @default [] - */ - "aoDrawCallback": [], - - /** - * Array of callback functions for row created function - * @type array - * @default [] - */ - "aoRowCreatedCallback": [], - - /** - * Callback functions for just before the table is redrawn. A return of - * false will be used to cancel the draw. - * @type array - * @default [] - */ - "aoPreDrawCallback": [], - - /** - * Callback functions for when the table has been initialised. - * @type array - * @default [] - */ - "aoInitComplete": [], - - - /** - * Callbacks for modifying the settings to be stored for state saving, prior to - * saving state. - * @type array - * @default [] - */ - "aoStateSaveParams": [], - - /** - * Callbacks for modifying the settings that have been stored for state saving - * prior to using the stored values to restore the state. - * @type array - * @default [] - */ - "aoStateLoadParams": [], - - /** - * Callbacks for operating on the settings object once the saved state has been - * loaded - * @type array - * @default [] - */ - "aoStateLoaded": [], - - /** - * Cache the table ID for quick access - * @type string - * @default <i>Empty string</i> - */ - "sTableId": "", - - /** - * The TABLE node for the main table - * @type node - * @default null - */ - "nTable": null, - - /** - * Permanent ref to the thead element - * @type node - * @default null - */ - "nTHead": null, - - /** - * Permanent ref to the tfoot element - if it exists - * @type node - * @default null - */ - "nTFoot": null, - - /** - * Permanent ref to the tbody element - * @type node - * @default null - */ - "nTBody": null, - - /** - * Cache the wrapper node (contains all DataTables controlled elements) - * @type node - * @default null - */ - "nTableWrapper": null, - - /** - * Indicate if when using server-side processing the loading of data - * should be deferred until the second draw. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - * @default false - */ - "bDeferLoading": false, - - /** - * Indicate if all required information has been read in - * @type boolean - * @default false - */ - "bInitialised": false, - - /** - * Information about open rows. Each object in the array has the parameters - * 'nTr' and 'nParent' - * @type array - * @default [] - */ - "aoOpenRows": [], - - /** - * Dictate the positioning of DataTables' control elements - see - * {@link DataTable.model.oInit.sDom}. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default null - */ - "sDom": null, - - /** - * Search delay (in mS) - * @type integer - * @default null - */ - "searchDelay": null, - - /** - * Which type of pagination should be used. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default two_button - */ - "sPaginationType": "two_button", - - /** - * The state duration (for `stateSave`) in seconds. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type int - * @default 0 - */ - "iStateDuration": 0, - - /** - * Array of callback functions for state saving. Each array element is an - * object with the following parameters: - * <ul> - * <li>function:fn - function to call. Takes two parameters, oSettings - * and the JSON string to save that has been thus far created. Returns - * a JSON string to be inserted into a json object - * (i.e. '"param": [ 0, 1, 2]')</li> - * <li>string:sName - name of callback</li> - * </ul> - * @type array - * @default [] - */ - "aoStateSave": [], - - /** - * Array of callback functions for state loading. Each array element is an - * object with the following parameters: - * <ul> - * <li>function:fn - function to call. Takes two parameters, oSettings - * and the object stored. May return false to cancel state loading</li> - * <li>string:sName - name of callback</li> - * </ul> - * @type array - * @default [] - */ - "aoStateLoad": [], - - /** - * State that was saved. Useful for back reference - * @type object - * @default null - */ - "oSavedState": null, - - /** - * State that was loaded. Useful for back reference - * @type object - * @default null - */ - "oLoadedState": null, - - /** - * Source url for AJAX data for the table. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - * @default null - */ - "sAjaxSource": null, - - /** - * Property from a given object from which to read the table data from. This - * can be an empty string (when not server-side processing), in which case - * it is assumed an an array is given directly. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sAjaxDataProp": null, - - /** - * Note if draw should be blocked while getting data - * @type boolean - * @default true - */ - "bAjaxDataGet": true, - - /** - * The last jQuery XHR object that was used for server-side data gathering. - * This can be used for working with the XHR information in one of the - * callbacks - * @type object - * @default null - */ - "jqXHR": null, - - /** - * JSON returned from the server in the last Ajax request - * @type object - * @default undefined - */ - "json": undefined, - - /** - * Data submitted as part of the last Ajax request - * @type object - * @default undefined - */ - "oAjaxData": undefined, - - /** - * Function to get the server-side data. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - */ - "fnServerData": null, - - /** - * Functions which are called prior to sending an Ajax request so extra - * parameters can easily be sent to the server - * @type array - * @default [] - */ - "aoServerParams": [], - - /** - * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if - * required). - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type string - */ - "sServerMethod": null, - - /** - * Format numbers for display. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type function - */ - "fnFormatNumber": null, - - /** - * List of options that can be used for the user selectable length menu. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type array - * @default [] - */ - "aLengthMenu": null, - - /** - * Counter for the draws that the table does. Also used as a tracker for - * server-side processing - * @type int - * @default 0 - */ - "iDraw": 0, - - /** - * Indicate if a redraw is being done - useful for Ajax - * @type boolean - * @default false - */ - "bDrawing": false, - - /** - * Draw index (iDraw) of the last error when parsing the returned data - * @type int - * @default -1 - */ - "iDrawError": -1, - - /** - * Paging display length - * @type int - * @default 10 - */ - "_iDisplayLength": 10, - - /** - * Paging start point - aiDisplay index - * @type int - * @default 0 - */ - "_iDisplayStart": 0, - - /** - * Server-side processing - number of records in the result set - * (i.e. before filtering), Use fnRecordsTotal rather than - * this property to get the value of the number of records, regardless of - * the server-side processing setting. - * @type int - * @default 0 - * @private - */ - "_iRecordsTotal": 0, - - /** - * Server-side processing - number of records in the current display set - * (i.e. after filtering). Use fnRecordsDisplay rather than - * this property to get the value of the number of records, regardless of - * the server-side processing setting. - * @type boolean - * @default 0 - * @private - */ - "_iRecordsDisplay": 0, - - /** - * Flag to indicate if jQuery UI marking and classes should be used. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bJUI": null, - - /** - * The classes to use for the table - * @type object - * @default {} - */ - "oClasses": {}, - - /** - * Flag attached to the settings object so you can check in the draw - * callback if filtering has been done in the draw. Deprecated in favour of - * events. - * @type boolean - * @default false - * @deprecated - */ - "bFiltered": false, - - /** - * Flag attached to the settings object so you can check in the draw - * callback if sorting has been done in the draw. Deprecated in favour of - * events. - * @type boolean - * @default false - * @deprecated - */ - "bSorted": false, - - /** - * Indicate that if multiple rows are in the header and there is more than - * one unique cell per column, if the top one (true) or bottom one (false) - * should be used for sorting / title by DataTables. - * Note that this parameter will be set by the initialisation routine. To - * set a default use {@link DataTable.defaults}. - * @type boolean - */ - "bSortCellsTop": null, - - /** - * Initialisation object that is used for the table - * @type object - * @default null - */ - "oInit": null, - - /** - * Destroy callback functions - for plug-ins to attach themselves to the - * destroy so they can clean up markup and events. - * @type array - * @default [] - */ - "aoDestroyCallback": [], - - - /** - * Get the number of records in the current record set, before filtering - * @type function - */ - "fnRecordsTotal": function () - { - return _fnDataSource( this ) == 'ssp' ? - this._iRecordsTotal * 1 : - this.aiDisplayMaster.length; - }, - - /** - * Get the number of records in the current record set, after filtering - * @type function - */ - "fnRecordsDisplay": function () - { - return _fnDataSource( this ) == 'ssp' ? - this._iRecordsDisplay * 1 : - this.aiDisplay.length; - }, - - /** - * Get the display end point - aiDisplay index - * @type function - */ - "fnDisplayEnd": function () - { - var - len = this._iDisplayLength, - start = this._iDisplayStart, - calc = start + len, - records = this.aiDisplay.length, - features = this.oFeatures, - paginate = features.bPaginate; - - if ( features.bServerSide ) { - return paginate === false || len === -1 ? - start + records : - Math.min( start+len, this._iRecordsDisplay ); - } - else { - return ! paginate || calc>records || len===-1 ? - records : - calc; - } - }, - - /** - * The DataTables object for this table - * @type object - * @default null - */ - "oInstance": null, - - /** - * Unique identifier for each instance of the DataTables object. If there - * is an ID on the table node, then it takes that value, otherwise an - * incrementing internal counter is used. - * @type string - * @default null - */ - "sInstance": null, - - /** - * tabindex attribute value that is added to DataTables control elements, allowing - * keyboard navigation of the table and its controls. - */ - "iTabIndex": 0, - - /** - * DIV container for the footer scrolling table if scrolling - */ - "nScrollHead": null, - - /** - * DIV container for the footer scrolling table if scrolling - */ - "nScrollFoot": null, - - /** - * Last applied sort - * @type array - * @default [] - */ - "aLastSort": [], - - /** - * Stored plug-in instances - * @type object - * @default {} - */ - "oPlugins": {} - }; - - /** - * Extension object for DataTables that is used to provide all extension - * options. - * - * Note that the `DataTable.ext` object is available through - * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is - * also aliased to `jQuery.fn.dataTableExt` for historic reasons. - * @namespace - * @extends DataTable.models.ext - */ - - - /** - * DataTables extensions - * - * This namespace acts as a collection area for plug-ins that can be used to - * extend DataTables capabilities. Indeed many of the build in methods - * use this method to provide their own capabilities (sorting methods for - * example). - * - * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy - * reasons - * - * @namespace - */ - DataTable.ext = _ext = { - /** - * Buttons. For use with the Buttons extension for DataTables. This is - * defined here so other extensions can define buttons regardless of load - * order. It is _not_ used by DataTables core. - * - * @type object - * @default {} - */ - buttons: {}, - - - /** - * Element class names - * - * @type object - * @default {} - */ - classes: {}, - - - /** - * Error reporting. - * - * How should DataTables report an error. Can take the value 'alert', - * 'throw', 'none' or a function. - * - * @type string|function - * @default alert - */ - errMode: "alert", - - - /** - * Feature plug-ins. - * - * This is an array of objects which describe the feature plug-ins that are - * available to DataTables. These feature plug-ins are then available for - * use through the `dom` initialisation option. - * - * Each feature plug-in is described by an object which must have the - * following properties: - * - * * `fnInit` - function that is used to initialise the plug-in, - * * `cFeature` - a character so the feature can be enabled by the `dom` - * instillation option. This is case sensitive. - * - * The `fnInit` function has the following input parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * - * And the following return is expected: - * - * * {node|null} The element which contains your feature. Note that the - * return may also be void if your plug-in does not require to inject any - * DOM elements into DataTables control (`dom`) - for example this might - * be useful when developing a plug-in which allows table control via - * keyboard entry - * - * @type array - * - * @example - * $.fn.dataTable.ext.features.push( { - * "fnInit": function( oSettings ) { - * return new TableTools( { "oDTSettings": oSettings } ); - * }, - * "cFeature": "T" - * } ); - */ - feature: [], - - - /** - * Row searching. - * - * This method of searching is complimentary to the default type based - * searching, and a lot more comprehensive as it allows you complete control - * over the searching logic. Each element in this array is a function - * (parameters described below) that is called for every row in the table, - * and your logic decides if it should be included in the searching data set - * or not. - * - * Searching functions have the following input parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * 2. `{array|object}` Data for the row to be processed (same as the - * original format that was passed in as the data source, or an array - * from a DOM data source - * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which - * can be useful to retrieve the `TR` element if you need DOM interaction. - * - * And the following return is expected: - * - * * {boolean} Include the row in the searched result set (true) or not - * (false) - * - * Note that as with the main search ability in DataTables, technically this - * is "filtering", since it is subtractive. However, for consistency in - * naming we call it searching here. - * - * @type array - * @default [] - * - * @example - * // The following example shows custom search being applied to the - * // fourth column (i.e. the data[3] index) based on two input values - * // from the end-user, matching the data in a certain range. - * $.fn.dataTable.ext.search.push( - * function( settings, data, dataIndex ) { - * var min = document.getElementById('min').value * 1; - * var max = document.getElementById('max').value * 1; - * var version = data[3] == "-" ? 0 : data[3]*1; - * - * if ( min == "" && max == "" ) { - * return true; - * } - * else if ( min == "" && version < max ) { - * return true; - * } - * else if ( min < version && "" == max ) { - * return true; - * } - * else if ( min < version && version < max ) { - * return true; - * } - * return false; - * } - * ); - */ - search: [], - - - /** - * Selector extensions - * - * The `selector` option can be used to extend the options available for the - * selector modifier options (`selector-modifier` object data type) that - * each of the three built in selector types offer (row, column and cell + - * their plural counterparts). For example the Select extension uses this - * mechanism to provide an option to select only rows, columns and cells - * that have been marked as selected by the end user (`{selected: true}`), - * which can be used in conjunction with the existing built in selector - * options. - * - * Each property is an array to which functions can be pushed. The functions - * take three attributes: - * - * * Settings object for the host table - * * Options object (`selector-modifier` object type) - * * Array of selected item indexes - * - * The return is an array of the resulting item indexes after the custom - * selector has been applied. - * - * @type object - */ - selector: { - cell: [], - column: [], - row: [] - }, - - - /** - * Internal functions, exposed for used in plug-ins. - * - * Please note that you should not need to use the internal methods for - * anything other than a plug-in (and even then, try to avoid if possible). - * The internal function may change between releases. - * - * @type object - * @default {} - */ - internal: {}, - - - /** - * Legacy configuration options. Enable and disable legacy options that - * are available in DataTables. - * - * @type object - */ - legacy: { - /** - * Enable / disable DataTables 1.9 compatible server-side processing - * requests - * - * @type boolean - * @default null - */ - ajax: null - }, - - - /** - * Pagination plug-in methods. - * - * Each entry in this object is a function and defines which buttons should - * be shown by the pagination rendering method that is used for the table: - * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the - * buttons are displayed in the document, while the functions here tell it - * what buttons to display. This is done by returning an array of button - * descriptions (what each button will do). - * - * Pagination types (the four built in options and any additional plug-in - * options defined here) can be used through the `paginationType` - * initialisation parameter. - * - * The functions defined take two parameters: - * - * 1. `{int} page` The current page index - * 2. `{int} pages` The number of pages in the table - * - * Each function is expected to return an array where each element of the - * array can be one of: - * - * * `first` - Jump to first page when activated - * * `last` - Jump to last page when activated - * * `previous` - Show previous page when activated - * * `next` - Show next page when activated - * * `{int}` - Show page of the index given - * * `{array}` - A nested array containing the above elements to add a - * containing 'DIV' element (might be useful for styling). - * - * Note that DataTables v1.9- used this object slightly differently whereby - * an object with two functions would be defined for each plug-in. That - * ability is still supported by DataTables 1.10+ to provide backwards - * compatibility, but this option of use is now decremented and no longer - * documented in DataTables 1.10+. - * - * @type object - * @default {} - * - * @example - * // Show previous, next and current page buttons only - * $.fn.dataTableExt.oPagination.current = function ( page, pages ) { - * return [ 'previous', page, 'next' ]; - * }; - */ - pager: {}, - - - renderer: { - pageButton: {}, - header: {} - }, - - - /** - * Ordering plug-ins - custom data source - * - * The extension options for ordering of data available here is complimentary - * to the default type based ordering that DataTables typically uses. It - * allows much greater control over the the data that is being used to - * order a column, but is necessarily therefore more complex. - * - * This type of ordering is useful if you want to do ordering based on data - * live from the DOM (for example the contents of an 'input' element) rather - * than just the static string that DataTables knows of. - * - * The way these plug-ins work is that you create an array of the values you - * wish to be ordering for the column in question and then return that - * array. The data in the array much be in the index order of the rows in - * the table (not the currently ordering order!). Which order data gathering - * function is run here depends on the `dt-init columns.orderDataType` - * parameter that is used for the column (if any). - * - * The functions defined take two parameters: - * - * 1. `{object}` DataTables settings object: see - * {@link DataTable.models.oSettings} - * 2. `{int}` Target column index - * - * Each function is expected to return an array: - * - * * `{array}` Data for the column to be ordering upon - * - * @type array - * - * @example - * // Ordering using `input` node values - * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col ) - * { - * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { - * return $('input', td).val(); - * } ); - * } - */ - order: {}, - - - /** - * Type based plug-ins. - * - * Each column in DataTables has a type assigned to it, either by automatic - * detection or by direct assignment using the `type` option for the column. - * The type of a column will effect how it is ordering and search (plug-ins - * can also make use of the column type if required). - * - * @namespace - */ - type: { - /** - * Type detection functions. - * - * The functions defined in this object are used to automatically detect - * a column's type, making initialisation of DataTables super easy, even - * when complex data is in the table. - * - * The functions defined take two parameters: - * - * 1. `{*}` Data from the column cell to be analysed - * 2. `{settings}` DataTables settings object. This can be used to - * perform context specific type detection - for example detection - * based on language settings such as using a comma for a decimal - * place. Generally speaking the options from the settings will not - * be required - * - * Each function is expected to return: - * - * * `{string|null}` Data type detected, or null if unknown (and thus - * pass it on to the other type detection functions. - * - * @type array - * - * @example - * // Currency type detection plug-in: - * $.fn.dataTable.ext.type.detect.push( - * function ( data, settings ) { - * // Check the numeric part - * if ( ! $.isNumeric( data.substring(1) ) ) { - * return null; - * } - * - * // Check prefixed by currency - * if ( data.charAt(0) == '$' || data.charAt(0) == '£' ) { - * return 'currency'; - * } - * return null; - * } - * ); - */ - detect: [], - - - /** - * Type based search formatting. - * - * The type based searching functions can be used to pre-format the - * data to be search on. For example, it can be used to strip HTML - * tags or to de-format telephone numbers for numeric only searching. - * - * Note that is a search is not defined for a column of a given type, - * no search formatting will be performed. - * - * Pre-processing of searching data plug-ins - When you assign the sType - * for a column (or have it automatically detected for you by DataTables - * or a type detection plug-in), you will typically be using this for - * custom sorting, but it can also be used to provide custom searching - * by allowing you to pre-processing the data and returning the data in - * the format that should be searched upon. This is done by adding - * functions this object with a parameter name which matches the sType - * for that target column. This is the corollary of <i>afnSortData</i> - * for searching data. - * - * The functions defined take a single parameter: - * - * 1. `{*}` Data from the column cell to be prepared for searching - * - * Each function is expected to return: - * - * * `{string|null}` Formatted string that will be used for the searching. - * - * @type object - * @default {} - * - * @example - * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) { - * return d.replace(/\n/g," ").replace( /<.*?>/g, "" ); - * } - */ - search: {}, - - - /** - * Type based ordering. - * - * The column type tells DataTables what ordering to apply to the table - * when a column is sorted upon. The order for each type that is defined, - * is defined by the functions available in this object. - * - * Each ordering option can be described by three properties added to - * this object: - * - * * `{type}-pre` - Pre-formatting function - * * `{type}-asc` - Ascending order function - * * `{type}-desc` - Descending order function - * - * All three can be used together, only `{type}-pre` or only - * `{type}-asc` and `{type}-desc` together. It is generally recommended - * that only `{type}-pre` is used, as this provides the optimal - * implementation in terms of speed, although the others are provided - * for compatibility with existing Javascript sort functions. - * - * `{type}-pre`: Functions defined take a single parameter: - * - * 1. `{*}` Data from the column cell to be prepared for ordering - * - * And return: - * - * * `{*}` Data to be sorted upon - * - * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort - * functions, taking two parameters: - * - * 1. `{*}` Data to compare to the second parameter - * 2. `{*}` Data to compare to the first parameter - * - * And returning: - * - * * `{*}` Ordering match: <0 if first parameter should be sorted lower - * than the second parameter, ===0 if the two parameters are equal and - * >0 if the first parameter should be sorted height than the second - * parameter. - * - * @type object - * @default {} - * - * @example - * // Numeric ordering of formatted numbers with a pre-formatter - * $.extend( $.fn.dataTable.ext.type.order, { - * "string-pre": function(x) { - * a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" ); - * return parseFloat( a ); - * } - * } ); - * - * @example - * // Case-sensitive string ordering, with no pre-formatting method - * $.extend( $.fn.dataTable.ext.order, { - * "string-case-asc": function(x,y) { - * return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - * }, - * "string-case-desc": function(x,y) { - * return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - * } - * } ); - */ - order: {} - }, - - /** - * Unique DataTables instance counter - * - * @type int - * @private - */ - _unique: 0, - - - // - // Depreciated - // The following properties are retained for backwards compatiblity only. - // The should not be used in new projects and will be removed in a future - // version - // - - /** - * Version check function. - * @type function - * @depreciated Since 1.10 - */ - fnVersionCheck: DataTable.fnVersionCheck, - - - /** - * Index for what 'this' index API functions should use - * @type int - * @deprecated Since v1.10 - */ - iApiIndex: 0, - - - /** - * jQuery UI class container - * @type object - * @deprecated Since v1.10 - */ - oJUIClasses: {}, - - - /** - * Software version - * @type string - * @deprecated Since v1.10 - */ - sVersion: DataTable.version - }; - - - // - // Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts - // - $.extend( _ext, { - afnFiltering: _ext.search, - aTypes: _ext.type.detect, - ofnSearch: _ext.type.search, - oSort: _ext.type.order, - afnSortData: _ext.order, - aoFeatures: _ext.feature, - oApi: _ext.internal, - oStdClasses: _ext.classes, - oPagination: _ext.pager - } ); - - - $.extend( DataTable.ext.classes, { - "sTable": "dataTable", - "sNoFooter": "no-footer", - - /* Paging buttons */ - "sPageButton": "paginate_button", - "sPageButtonActive": "current", - "sPageButtonDisabled": "disabled", - - /* Striping classes */ - "sStripeOdd": "odd", - "sStripeEven": "even", - - /* Empty row */ - "sRowEmpty": "dataTables_empty", - - /* Features */ - "sWrapper": "dataTables_wrapper", - "sFilter": "dataTables_filter", - "sInfo": "dataTables_info", - "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */ - "sLength": "dataTables_length", - "sProcessing": "dataTables_processing", - - /* Sorting */ - "sSortAsc": "sorting_asc", - "sSortDesc": "sorting_desc", - "sSortable": "sorting", /* Sortable in both directions */ - "sSortableAsc": "sorting_asc_disabled", - "sSortableDesc": "sorting_desc_disabled", - "sSortableNone": "sorting_disabled", - "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ - - /* Filtering */ - "sFilterInput": "", - - /* Page length */ - "sLengthSelect": "", - - /* Scrolling */ - "sScrollWrapper": "dataTables_scroll", - "sScrollHead": "dataTables_scrollHead", - "sScrollHeadInner": "dataTables_scrollHeadInner", - "sScrollBody": "dataTables_scrollBody", - "sScrollFoot": "dataTables_scrollFoot", - "sScrollFootInner": "dataTables_scrollFootInner", - - /* Misc */ - "sHeaderTH": "", - "sFooterTH": "", - - // Deprecated - "sSortJUIAsc": "", - "sSortJUIDesc": "", - "sSortJUI": "", - "sSortJUIAscAllowed": "", - "sSortJUIDescAllowed": "", - "sSortJUIWrapper": "", - "sSortIcon": "", - "sJUIHeader": "", - "sJUIFooter": "" - } ); - - - (function() { - - // Reused strings for better compression. Closure compiler appears to have a - // weird edge case where it is trying to expand strings rather than use the - // variable version. This results in about 200 bytes being added, for very - // little preference benefit since it this run on script load only. - var _empty = ''; - _empty = ''; - - var _stateDefault = _empty + 'ui-state-default'; - var _sortIcon = _empty + 'css_right ui-icon ui-icon-'; - var _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix'; - - $.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, { - /* Full numbers paging buttons */ - "sPageButton": "fg-button ui-button "+_stateDefault, - "sPageButtonActive": "ui-state-disabled", - "sPageButtonDisabled": "ui-state-disabled", - - /* Features */ - "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ - "ui-buttonset-multi paging_", /* Note that the type is postfixed */ - - /* Sorting */ - "sSortAsc": _stateDefault+" sorting_asc", - "sSortDesc": _stateDefault+" sorting_desc", - "sSortable": _stateDefault+" sorting", - "sSortableAsc": _stateDefault+" sorting_asc_disabled", - "sSortableDesc": _stateDefault+" sorting_desc_disabled", - "sSortableNone": _stateDefault+" sorting_disabled", - "sSortJUIAsc": _sortIcon+"triangle-1-n", - "sSortJUIDesc": _sortIcon+"triangle-1-s", - "sSortJUI": _sortIcon+"carat-2-n-s", - "sSortJUIAscAllowed": _sortIcon+"carat-1-n", - "sSortJUIDescAllowed": _sortIcon+"carat-1-s", - "sSortJUIWrapper": "DataTables_sort_wrapper", - "sSortIcon": "DataTables_sort_icon", - - /* Scrolling */ - "sScrollHead": "dataTables_scrollHead "+_stateDefault, - "sScrollFoot": "dataTables_scrollFoot "+_stateDefault, - - /* Misc */ - "sHeaderTH": _stateDefault, - "sFooterTH": _stateDefault, - "sJUIHeader": _headerFooter+" ui-corner-tl ui-corner-tr", - "sJUIFooter": _headerFooter+" ui-corner-bl ui-corner-br" - } ); - - }()); - - - - var extPagination = DataTable.ext.pager; - - function _numbers ( page, pages ) { - var - numbers = [], - buttons = extPagination.numbers_length, - half = Math.floor( buttons / 2 ), - i = 1; - - if ( pages <= buttons ) { - numbers = _range( 0, pages ); - } - else if ( page <= half ) { - numbers = _range( 0, buttons-2 ); - numbers.push( 'ellipsis' ); - numbers.push( pages-1 ); - } - else if ( page >= pages - 1 - half ) { - numbers = _range( pages-(buttons-2), pages ); - numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6 - numbers.splice( 0, 0, 0 ); - } - else { - numbers = _range( page-half+2, page+half-1 ); - numbers.push( 'ellipsis' ); - numbers.push( pages-1 ); - numbers.splice( 0, 0, 'ellipsis' ); - numbers.splice( 0, 0, 0 ); - } - - numbers.DT_el = 'span'; - return numbers; - } - - - $.extend( extPagination, { - simple: function ( page, pages ) { - return [ 'previous', 'next' ]; - }, - - full: function ( page, pages ) { - return [ 'first', 'previous', 'next', 'last' ]; - }, - - simple_numbers: function ( page, pages ) { - return [ 'previous', _numbers(page, pages), 'next' ]; - }, - - full_numbers: function ( page, pages ) { - return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ]; - }, - - // For testing and plug-ins to use - _numbers: _numbers, - - // Number of number buttons (including ellipsis) to show. _Must be odd!_ - numbers_length: 7 - } ); - - - $.extend( true, DataTable.ext.renderer, { - pageButton: { - _: function ( settings, host, idx, buttons, page, pages ) { - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass, counter=0; - - var attach = function( container, buttons ) { - var i, ien, node, button; - var clickHandler = function ( e ) { - _fnPageChange( settings, e.data.action, true ); - }; - - for ( i=0, ien=buttons.length ; i<ien ; i++ ) { - button = buttons[i]; - - if ( $.isArray( button ) ) { - var inner = $( '<'+(button.DT_el || 'div')+'/>' ) - .appendTo( container ); - attach( inner, button ); - } - else { - btnDisplay = ''; - btnClass = ''; - - switch ( button ) { - case 'ellipsis': - container.append('<span class="ellipsis">…</span>'); - break; - - case 'first': - btnDisplay = lang.sFirst; - btnClass = button + (page > 0 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages-1 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages-1 ? - '' : ' '+classes.sPageButtonDisabled); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - classes.sPageButtonActive : ''; - break; - } - - if ( btnDisplay ) { - node = $('<a>', { - 'class': classes.sPageButton+' '+btnClass, - 'aria-controls': settings.sTableId, - 'data-dt-idx': counter, - 'tabindex': settings.iTabIndex, - 'id': idx === 0 && typeof button === 'string' ? - settings.sTableId +'_'+ button : - null - } ) - .html( btnDisplay ) - .appendTo( container ); - - _fnBindAction( - node, {action: button}, clickHandler - ); - - counter++; - } - } - } - }; - - // IE9 throws an 'unknown error' if document.activeElement is used - // inside an iframe or frame. Try / catch the error. Not good for - // accessibility, but neither are frames. - var activeEl; - - try { - // Because this approach is destroying and recreating the paging - // elements, focus is lost on the select button which is bad for - // accessibility. So we want to restore focus once the draw has - // completed - activeEl = $(document.activeElement).data('dt-idx'); - } - catch (e) {} - - attach( $(host).empty(), buttons ); - - if ( activeEl ) { - $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); - } - } - } - } ); - - - - // Built in type detection. See model.ext.aTypes for information about - // what is required from this methods. - $.extend( DataTable.ext.type.detect, [ - // Plain numbers - first since V8 detects some plain numbers as dates - // e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...). - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _isNumber( d, decimal ) ? 'num'+decimal : null; - }, - - // Dates (only those recognised by the browser's Date.parse) - function ( d, settings ) - { - // V8 will remove any unknown characters at the start and end of the - // expression, leading to false matches such as `$245.12` or `10%` being - // a valid date. See forum thread 18941 for detail. - if ( d && !(d instanceof Date) && ( ! _re_date_start.test(d) || ! _re_date_end.test(d) ) ) { - return null; - } - var parsed = Date.parse(d); - return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null; - }, - - // Formatted numbers - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null; - }, - - // HTML numeric - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null; - }, - - // HTML numeric, formatted - function ( d, settings ) - { - var decimal = settings.oLanguage.sDecimal; - return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null; - }, - - // HTML (this is strict checking - there must be html) - function ( d, settings ) - { - return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ? - 'html' : null; - } - ] ); - - - - // Filter formatting functions. See model.ext.ofnSearch for information about - // what is required from these methods. - // - // Note that additional search methods are added for the html numbers and - // html formatted numbers by `_addNumericSort()` when we know what the decimal - // place is - - - $.extend( DataTable.ext.type.search, { - html: function ( data ) { - return _empty(data) ? - data : - typeof data === 'string' ? - data - .replace( _re_new_lines, " " ) - .replace( _re_html, "" ) : - ''; - }, - - string: function ( data ) { - return _empty(data) ? - data : - typeof data === 'string' ? - data.replace( _re_new_lines, " " ) : - data; - } - } ); - - - - var __numericReplace = function ( d, decimalPlace, re1, re2 ) { - if ( d !== 0 && (!d || d === '-') ) { - return -Infinity; - } - - // If a decimal place other than `.` is used, it needs to be given to the - // function so we can detect it and replace with a `.` which is the only - // decimal place Javascript recognises - it is not locale aware. - if ( decimalPlace ) { - d = _numToDecimal( d, decimalPlace ); - } - - if ( d.replace ) { - if ( re1 ) { - d = d.replace( re1, '' ); - } - - if ( re2 ) { - d = d.replace( re2, '' ); - } - } - - return d * 1; - }; - - - // Add the numeric 'deformatting' functions for sorting and search. This is done - // in a function to provide an easy ability for the language options to add - // additional methods if a non-period decimal place is used. - function _addNumericSort ( decimalPlace ) { - $.each( - { - // Plain numbers - "num": function ( d ) { - return __numericReplace( d, decimalPlace ); - }, - - // Formatted numbers - "num-fmt": function ( d ) { - return __numericReplace( d, decimalPlace, _re_formatted_numeric ); - }, - - // HTML numeric - "html-num": function ( d ) { - return __numericReplace( d, decimalPlace, _re_html ); - }, - - // HTML numeric, formatted - "html-num-fmt": function ( d ) { - return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric ); - } - }, - function ( key, fn ) { - // Add the ordering method - _ext.type.order[ key+decimalPlace+'-pre' ] = fn; - - // For HTML types add a search formatter that will strip the HTML - if ( key.match(/^html\-/) ) { - _ext.type.search[ key+decimalPlace ] = _ext.type.search.html; - } - } - ); - } - - - // Default sort methods - $.extend( _ext.type.order, { - // Dates - "date-pre": function ( d ) { - return Date.parse( d ) || 0; - }, - - // html - "html-pre": function ( a ) { - return _empty(a) ? - '' : - a.replace ? - a.replace( /<.*?>/g, "" ).toLowerCase() : - a+''; - }, - - // string - "string-pre": function ( a ) { - // This is a little complex, but faster than always calling toString, - // http://jsperf.com/tostring-v-check - return _empty(a) ? - '' : - typeof a === 'string' ? - a.toLowerCase() : - ! a.toString ? - '' : - a.toString(); - }, - - // string-asc and -desc are retained only for compatibility with the old - // sort methods - "string-asc": function ( x, y ) { - return ((x < y) ? -1 : ((x > y) ? 1 : 0)); - }, - - "string-desc": function ( x, y ) { - return ((x < y) ? 1 : ((x > y) ? -1 : 0)); - } - } ); - - - // Numeric sorting types - order doesn't matter here - _addNumericSort( '' ); - - - $.extend( true, DataTable.ext.renderer, { - header: { - _: function ( settings, cell, column, classes ) { - // No additional mark-up required - // Attach a sort listener to update on sort - note that using the - // `DT` namespace will allow the event to be removed automatically - // on destroy, while the `dt` namespaced event is the one we are - // listening for - $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { - if ( settings !== ctx ) { // need to check this this is the host - return; // table, not a nested one - } - - var colIdx = column.idx; - - cell - .removeClass( - column.sSortingClass +' '+ - classes.sSortAsc +' '+ - classes.sSortDesc - ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortAsc : columns[ colIdx ] == 'desc' ? - classes.sSortDesc : - column.sSortingClass - ); - } ); - }, - - jqueryui: function ( settings, cell, column, classes ) { - $('<div/>') - .addClass( classes.sSortJUIWrapper ) - .append( cell.contents() ) - .append( $('<span/>') - .addClass( classes.sSortIcon+' '+column.sSortingClassJUI ) - ) - .appendTo( cell ); - - // Attach a sort listener to update on sort - $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { - if ( settings !== ctx ) { - return; - } - - var colIdx = column.idx; - - cell - .removeClass( classes.sSortAsc +" "+classes.sSortDesc ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortAsc : columns[ colIdx ] == 'desc' ? - classes.sSortDesc : - column.sSortingClass - ); - - cell - .find( 'span.'+classes.sSortIcon ) - .removeClass( - classes.sSortJUIAsc +" "+ - classes.sSortJUIDesc +" "+ - classes.sSortJUI +" "+ - classes.sSortJUIAscAllowed +" "+ - classes.sSortJUIDescAllowed - ) - .addClass( columns[ colIdx ] == 'asc' ? - classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ? - classes.sSortJUIDesc : - column.sSortingClassJUI - ); - } ); - } - } - } ); - - /* - * Public helper functions. These aren't used internally by DataTables, or - * called by any of the options passed into DataTables, but they can be used - * externally by developers working with DataTables. They are helper functions - * to make working with DataTables a little bit easier. - */ - - /** - * Helpers for `columns.render`. - * - * The options defined here can be used with the `columns.render` initialisation - * option to provide a display renderer. The following functions are defined: - * - * * `number` - Will format numeric data (defined by `columns.data`) for - * display, retaining the original unformatted data for sorting and filtering. - * It takes 4 parameters: - * * `string` - Thousands grouping separator - * * `string` - Decimal point indicator - * * `integer` - Number of decimal points to show - * * `string` (optional) - Prefix. - * - * @example - * // Column definition using the number renderer - * { - * data: "salary", - * render: $.fn.dataTable.render.number( '\'', '.', 0, '$' ) - * } - * - * @namespace - */ - DataTable.render = { - number: function ( thousands, decimal, precision, prefix ) { - return { - display: function ( d ) { - if ( typeof d !== 'number' && typeof d !== 'string' ) { - return d; - } - - var negative = d < 0 ? '-' : ''; - d = Math.abs( parseFloat( d ) ); - - var intPart = parseInt( d, 10 ); - var floatPart = precision ? - decimal+(d - intPart).toFixed( precision ).substring( 2 ): - ''; - - return negative + (prefix||'') + - intPart.toString().replace( - /\B(?=(\d{3})+(?!\d))/g, thousands - ) + - floatPart; - } - }; - } - }; - - - /* - * This is really a good bit rubbish this method of exposing the internal methods - * publicly... - To be fixed in 2.0 using methods on the prototype - */ - - - /** - * Create a wrapper function for exporting an internal functions to an external API. - * @param {string} fn API function name - * @returns {function} wrapped function - * @memberof DataTable#internal - */ - function _fnExternApiFunc (fn) - { - return function() { - var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat( - Array.prototype.slice.call(arguments) - ); - return DataTable.ext.internal[fn].apply( this, args ); - }; - } - - - /** - * Reference to internal functions for use by plug-in developers. Note that - * these methods are references to internal functions and are considered to be - * private. If you use these methods, be aware that they are liable to change - * between versions. - * @namespace - */ - $.extend( DataTable.ext.internal, { - _fnExternApiFunc: _fnExternApiFunc, - _fnBuildAjax: _fnBuildAjax, - _fnAjaxUpdate: _fnAjaxUpdate, - _fnAjaxParameters: _fnAjaxParameters, - _fnAjaxUpdateDraw: _fnAjaxUpdateDraw, - _fnAjaxDataSrc: _fnAjaxDataSrc, - _fnAddColumn: _fnAddColumn, - _fnColumnOptions: _fnColumnOptions, - _fnAdjustColumnSizing: _fnAdjustColumnSizing, - _fnVisibleToColumnIndex: _fnVisibleToColumnIndex, - _fnColumnIndexToVisible: _fnColumnIndexToVisible, - _fnVisbleColumns: _fnVisbleColumns, - _fnGetColumns: _fnGetColumns, - _fnColumnTypes: _fnColumnTypes, - _fnApplyColumnDefs: _fnApplyColumnDefs, - _fnHungarianMap: _fnHungarianMap, - _fnCamelToHungarian: _fnCamelToHungarian, - _fnLanguageCompat: _fnLanguageCompat, - _fnBrowserDetect: _fnBrowserDetect, - _fnAddData: _fnAddData, - _fnAddTr: _fnAddTr, - _fnNodeToDataIndex: _fnNodeToDataIndex, - _fnNodeToColumnIndex: _fnNodeToColumnIndex, - _fnGetCellData: _fnGetCellData, - _fnSetCellData: _fnSetCellData, - _fnSplitObjNotation: _fnSplitObjNotation, - _fnGetObjectDataFn: _fnGetObjectDataFn, - _fnSetObjectDataFn: _fnSetObjectDataFn, - _fnGetDataMaster: _fnGetDataMaster, - _fnClearTable: _fnClearTable, - _fnDeleteIndex: _fnDeleteIndex, - _fnInvalidate: _fnInvalidate, - _fnGetRowElements: _fnGetRowElements, - _fnCreateTr: _fnCreateTr, - _fnBuildHead: _fnBuildHead, - _fnDrawHead: _fnDrawHead, - _fnDraw: _fnDraw, - _fnReDraw: _fnReDraw, - _fnAddOptionsHtml: _fnAddOptionsHtml, - _fnDetectHeader: _fnDetectHeader, - _fnGetUniqueThs: _fnGetUniqueThs, - _fnFeatureHtmlFilter: _fnFeatureHtmlFilter, - _fnFilterComplete: _fnFilterComplete, - _fnFilterCustom: _fnFilterCustom, - _fnFilterColumn: _fnFilterColumn, - _fnFilter: _fnFilter, - _fnFilterCreateSearch: _fnFilterCreateSearch, - _fnEscapeRegex: _fnEscapeRegex, - _fnFilterData: _fnFilterData, - _fnFeatureHtmlInfo: _fnFeatureHtmlInfo, - _fnUpdateInfo: _fnUpdateInfo, - _fnInfoMacros: _fnInfoMacros, - _fnInitialise: _fnInitialise, - _fnInitComplete: _fnInitComplete, - _fnLengthChange: _fnLengthChange, - _fnFeatureHtmlLength: _fnFeatureHtmlLength, - _fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate, - _fnPageChange: _fnPageChange, - _fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing, - _fnProcessingDisplay: _fnProcessingDisplay, - _fnFeatureHtmlTable: _fnFeatureHtmlTable, - _fnScrollDraw: _fnScrollDraw, - _fnApplyToChildren: _fnApplyToChildren, - _fnCalculateColumnWidths: _fnCalculateColumnWidths, - _fnThrottle: _fnThrottle, - _fnConvertToWidth: _fnConvertToWidth, - _fnScrollingWidthAdjust: _fnScrollingWidthAdjust, - _fnGetWidestNode: _fnGetWidestNode, - _fnGetMaxLenString: _fnGetMaxLenString, - _fnStringToCss: _fnStringToCss, - _fnScrollBarWidth: _fnScrollBarWidth, - _fnSortFlatten: _fnSortFlatten, - _fnSort: _fnSort, - _fnSortAria: _fnSortAria, - _fnSortListener: _fnSortListener, - _fnSortAttachListener: _fnSortAttachListener, - _fnSortingClasses: _fnSortingClasses, - _fnSortData: _fnSortData, - _fnSaveState: _fnSaveState, - _fnLoadState: _fnLoadState, - _fnSettingsFromNode: _fnSettingsFromNode, - _fnLog: _fnLog, - _fnMap: _fnMap, - _fnBindAction: _fnBindAction, - _fnCallbackReg: _fnCallbackReg, - _fnCallbackFire: _fnCallbackFire, - _fnLengthOverflow: _fnLengthOverflow, - _fnRenderer: _fnRenderer, - _fnDataSource: _fnDataSource, - _fnRowAttributes: _fnRowAttributes, - _fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant - // in 1.10, so this dead-end function is - // added to prevent errors - } ); - - - // jQuery access - $.fn.dataTable = DataTable; - - // Legacy aliases - $.fn.dataTableSettings = DataTable.settings; - $.fn.dataTableExt = DataTable.ext; - - // With a capital `D` we return a DataTables API instance rather than a - // jQuery object - $.fn.DataTable = function ( opts ) { - return $(this).dataTable( opts ).api(); - }; - - // All properties that are available to $.fn.dataTable should also be - // available on $.fn.DataTable - $.each( DataTable, function ( prop, val ) { - $.fn.DataTable[ prop ] = val; - } ); - - - // Information about events fired by DataTables - for documentation. - /** - * Draw event, fired whenever the table is redrawn on the page, at the same - * point as fnDrawCallback. This may be useful for binding events or - * performing calculations when the table is altered at all. - * @name DataTable#draw.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Search event, fired when the searching applied to the table (using the - * built-in global search, or column filters) is altered. - * @name DataTable#search.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Page change event, fired when the paging of the table is altered. - * @name DataTable#page.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Order event, fired when the ordering applied to the table is altered. - * @name DataTable#order.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * DataTables initialisation complete event, fired when the table is fully - * drawn, including Ajax data loaded, if Ajax data is required. - * @name DataTable#init.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The JSON object request from the server - only - * present if client-side Ajax sourced data is used</li></ol> - */ - - /** - * State save event, fired when the table has changed state a new state save - * is required. This event allows modification of the state saving object - * prior to actually doing the save, including addition or other state - * properties (for plug-ins) or modification of a DataTables core property. - * @name DataTable#stateSaveParams.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The state information to be saved - */ - - /** - * State load event, fired when the table is loading state from the stored - * data, but prior to the settings object being modified by the saved state - * - allowing modification of the saved state is required or loading of - * state for a plug-in. - * @name DataTable#stateLoadParams.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The saved state information - */ - - /** - * State loaded event, fired when state has been loaded from stored data and - * the settings object has been modified by the loaded data. - * @name DataTable#stateLoaded.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {object} json The saved state information - */ - - /** - * Processing event, fired when DataTables is doing some kind of processing - * (be it, order, searcg or anything else). It can be used to indicate to - * the end user that there is something happening, or that something has - * finished. - * @name DataTable#processing.dt - * @event - * @param {event} e jQuery event object - * @param {object} oSettings DataTables settings object - * @param {boolean} bShow Flag for if DataTables is doing processing or not - */ - - /** - * Ajax (XHR) event, fired whenever an Ajax request is completed from a - * request to made to the server for new data. This event is called before - * DataTables processed the returned data, so it can also be used to pre- - * process the data returned from the server, if needed. - * - * Note that this trigger is called in `fnServerData`, if you override - * `fnServerData` and which to use this event, you need to trigger it in you - * success function. - * @name DataTable#xhr.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {object} json JSON returned from the server - * - * @example - * // Use a custom property returned from the server in another DOM element - * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { - * $('#status').html( json.status ); - * } ); - * - * @example - * // Pre-process the data returned from the server - * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { - * for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) { - * json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two; - * } - * // Note no return - manipulate the data directly in the JSON object. - * } ); - */ - - /** - * Destroy event, fired when the DataTable is destroyed by calling fnDestroy - * or passing the bDestroy:true parameter in the initialisation object. This - * can be used to remove bound events, added DOM nodes, etc. - * @name DataTable#destroy.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Page length change event, fired when number of records to show on each - * page (the length) is changed. - * @name DataTable#length.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {integer} len New length - */ - - /** - * Column sizing has changed. - * @name DataTable#column-sizing.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - */ - - /** - * Column visibility has changed. - * @name DataTable#column-visibility.dt - * @event - * @param {event} e jQuery event object - * @param {object} o DataTables settings object {@link DataTable.models.oSettings} - * @param {int} column Column index - * @param {bool} vis `false` if column now hidden, or `true` if visible - */ - - return $.fn.dataTable; -})); - -}(window, document)); - diff --git a/dashboard/lib/datatables/sort_asc.png b/dashboard/lib/datatables/sort_asc.png deleted file mode 100644 index e1ba61a8055fcb18273f2468d335572204667b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*bWaz@5R22v2@;zYta_*?F5u6Q zWR@in#&u+WgT?Hi<}D3B3<dtPKf3L(#%G;lkAsbPmH>}GOXuX|8Oj3tosHiJ3*4TN zC7>_x-r1O=t(?KoTC+`+>7&2GzdqLHBg&F)2Q?&EGZ+}|Rpsc~9`m>jw35No)z4*} HQ$iB}HK{Sd diff --git a/dashboard/lib/datatables/sort_asc_disabled.png b/dashboard/lib/datatables/sort_asc_disabled.png deleted file mode 100644 index fb11dfe24a6c564cb7ddf8bc96703ebb121df1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX(Vi}jAsXkC6BcOhI9!^3NY?Do zDX;f`c1`y6n0RgO@$!H7ch<T~&R05SUEJ8^Q1D3B?anEg_j{VPewQ3)o33=v`u75$ u@NwC)H>ZT&|Jn0dmaqO^XNm-CGtk!Ur<_=Jws3;%W$<+Mb6Mw<&;$T1GdZXL diff --git a/dashboard/lib/datatables/sort_both.png b/dashboard/lib/datatables/sort_both.png deleted file mode 100644 index af5bc7c5a10b9d6d57cb641aeec752428a07f0ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX6FglULp08By<o`a;2_ZY@ahDQ zIZn@cq>cxyy87-Q;~nRxO8@-UU*I^KVWyN+&SiMHu5xDOu|HNvwzODfTdXjhVyNu1 z#7^XbGKZ7<gEZFeRPCMIsy$+yhaA3~(<<ARU4F{HcWVEZS94u?w%>LW3XeONb<yeJ z>$RKLeE*WhqbYpIXPIqK@r4)v+qN8um%99%MPpS9d#7Ed7SL@Bp00i_>zopr0H-Zb Aj{pDw diff --git a/dashboard/lib/datatables/sort_desc.png b/dashboard/lib/datatables/sort_desc.png deleted file mode 100644 index 0e156deb5f61d18f9e2ec5da4f6a8c94a5b4fb41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*R8JSj5R22v2@<S}6GRp?u4>yo z(czD9$NuDl3Ljm9c#_#4$vXUz=f1~&WY3aa=h!;z7fOEN>ySP9QA=6C-^Dmb&tuM= z4Z&=WZU;2WF>e%GI&mWJk^K!jrbro{W;-I>FeCfLGJl3}+Z^2)3Kw?+EoAU?^>bP0 Hl+XkKC^<KP diff --git a/dashboard/lib/datatables/sort_desc_disabled.png b/dashboard/lib/datatables/sort_desc_disabled.png deleted file mode 100644 index c9fdd8a1502fda301682e907afde86bc450da10f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRXk)AG&AsXkC6C_xhx$boC`TY4@ zxy7GKb-~?6->j|Q{b@g3TV7E(Grjn^aLC2o)_ptHrtUEoT$S@q)~)7U@V;W{6)!%@ u>N?4t-1qslpJw9!O?PJ&w0Cby<YFk^=EPF?qfY~934^DrpUXO@geCx6y*UB^ diff --git a/dashboard/lib/flot-spline/jquery.flot.spline.js b/dashboard/lib/flot-spline/jquery.flot.spline.js deleted file mode 100644 index 71f1c413..00000000 --- a/dashboard/lib/flot-spline/jquery.flot.spline.js +++ /dev/null @@ -1,212 +0,0 @@ -/** - * Flot plugin that provides spline interpolation for line graphs - * author: Alex Bardas < alex.bardas@gmail.com > - * modified by: Avi Kohn https://github.com/AMKohn - * based on the spline interpolation described at: - * http://scaledinnovation.com/analytics/splines/aboutSplines.html - * - * Example usage: (add in plot options series object) - * for linespline: - * series: { - * ... - * lines: { - * show: false - * }, - * splines: { - * show: true, - * tension: x, (float between 0 and 1, defaults to 0.5), - * lineWidth: y (number, defaults to 2), - * fill: z (float between 0 .. 1 or false, as in flot documentation) - * }, - * ... - * } - * areaspline: - * series: { - * ... - * lines: { - * show: true, - * lineWidth: 0, (line drawing will not execute) - * fill: x, (float between 0 .. 1, as in flot documentation) - * ... - * }, - * splines: { - * show: true, - * tension: 0.5 (float between 0 and 1) - * }, - * ... - * } - * - */ - -(function($) { - 'use strict' - - /** - * @param {Number} x0, y0, x1, y1: coordinates of the end (knot) points of the segment - * @param {Number} x2, y2: the next knot (not connected, but needed to calculate p2) - * @param {Number} tension: control how far the control points spread - * @return {Array}: p1 -> control point, from x1 back toward x0 - * p2 -> the next control point, returned to become the next segment's p1 - * - * @api private - */ - function getControlPoints(x0, y0, x1, y1, x2, y2, tension) { - - var pow = Math.pow, - sqrt = Math.sqrt, - d01, d12, fa, fb, p1x, p1y, p2x, p2y; - - // Scaling factors: distances from this knot to the previous and following knots. - d01 = sqrt(pow(x1 - x0, 2) + pow(y1 - y0, 2)); - d12 = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2)); - - fa = tension * d01 / (d01 + d12); - fb = tension - fa; - - p1x = x1 + fa * (x0 - x2); - p1y = y1 + fa * (y0 - y2); - - p2x = x1 - fb * (x0 - x2); - p2y = y1 - fb * (y0 - y2); - - return [p1x, p1y, p2x, p2y]; - } - - var line = []; - - function drawLine(points, ctx, height, fill, seriesColor) { - var c = $.color.parse(seriesColor); - - c.a = typeof fill == "number" ? fill : .3; - c.normalize(); - c = c.toString(); - - ctx.beginPath(); - ctx.moveTo(points[0][0], points[0][1]); - - var plength = points.length; - - for (var i = 0; i < plength; i++) { - ctx[points[i][3]].apply(ctx, points[i][2]); - } - - ctx.stroke(); - - ctx.lineWidth = 0; - ctx.lineTo(points[plength - 1][0], height); - ctx.lineTo(points[0][0], height); - - ctx.closePath(); - - if (fill !== false) { - ctx.fillStyle = c; - ctx.fill(); - } - } - - /** - * @param {Object} ctx: canvas context - * @param {String} type: accepted strings: 'bezier' or 'quadratic' (defaults to quadratic) - * @param {Array} points: 2 points for which to draw the interpolation - * @param {Array} cpoints: control points for those segment points - * - * @api private - */ - function queue(ctx, type, points, cpoints) { - if (type === void 0 || (type !== 'bezier' && type !== 'quadratic')) { - type = 'quadratic'; - } - type = type + 'CurveTo'; - - if (line.length == 0) line.push([points[0], points[1], cpoints.concat(points.slice(2)), type]); - else if (type == "quadraticCurveTo" && points.length == 2) { - cpoints = cpoints.slice(0, 2).concat(points); - - line.push([points[0], points[1], cpoints, type]); - } - else line.push([points[2], points[3], cpoints.concat(points.slice(2)), type]); - } - - /** - * @param {Object} plot - * @param {Object} ctx: canvas context - * @param {Object} series - * - * @api private - */ - - function drawSpline(plot, ctx, series) { - // Not interested if spline is not requested - if (series.splines.show !== true) { - return; - } - - var cp = [], - // array of control points - tension = series.splines.tension || 0.5, - idx, x, y, points = series.datapoints.points, - ps = series.datapoints.pointsize, - plotOffset = plot.getPlotOffset(), - len = points.length, - pts = []; - - line = []; - - // Cannot display a linespline/areaspline if there are less than 3 points - if (len / ps < 4) { - $.extend(series.lines, series.splines); - return; - } - - for (idx = 0; idx < len; idx += ps) { - x = points[idx]; - y = points[idx + 1]; - if (x == null || x < series.xaxis.min || x > series.xaxis.max || y < series.yaxis.min || y > series.yaxis.max) { - continue; - } - - pts.push(series.xaxis.p2c(x) + plotOffset.left, series.yaxis.p2c(y) + plotOffset.top); - } - - len = pts.length; - - // Draw an open curve, not connected at the ends - for (idx = 0; idx < len - 2; idx += 2) { - cp = cp.concat(getControlPoints.apply(this, pts.slice(idx, idx + 6).concat([tension]))); - } - - ctx.save(); - ctx.strokeStyle = series.color; - ctx.lineWidth = series.splines.lineWidth; - - queue(ctx, 'quadratic', pts.slice(0, 4), cp.slice(0, 2)); - - for (idx = 2; idx < len - 3; idx += 2) { - queue(ctx, 'bezier', pts.slice(idx, idx + 4), cp.slice(2 * idx - 2, 2 * idx + 2)); - } - - queue(ctx, 'quadratic', pts.slice(len - 2, len), [cp[2 * len - 10], cp[2 * len - 9], pts[len - 4], pts[len - 3]]); - - drawLine(line, ctx, plot.height() + 10, series.splines.fill, series.color); - - ctx.restore(); - } - - $.plot.plugins.push({ - init: function(plot) { - plot.hooks.drawSeries.push(drawSpline); - }, - options: { - series: { - splines: { - show: false, - lineWidth: 2, - tension: 0.5, - fill: false - } - } - }, - name: 'spline', - version: '0.8.2' - }); -})(jQuery); diff --git a/dashboard/lib/flot/jquery.flot.axislabels.js b/dashboard/lib/flot/jquery.flot.axislabels.js deleted file mode 100644 index e126710d..00000000 --- a/dashboard/lib/flot/jquery.flot.axislabels.js +++ /dev/null @@ -1,87 +0,0 @@ -/* -Flot plugin for labeling axis - - (xy)axis: { - label: "label string", - labelPos: "high" or "low" - } - -This plugin allows you to label an axis without much fuss, by -replacing one of the extreme ticks with the chosen label string. Set -labelPos to "high" or "low" to replace respectively the maximum or the -minimum value of the ticks. User set axis.tickFormatter are respected -and multiple axes supported. - -Rui Pereira -rui (dot) pereira (at) gmail (dot) com -*/ -(function ($) { - - function labelAxis(val, axis){ - var ticks, opts = axis.options; - - // generator - var tmpopts = axis.n == 1? opts: (typeof opts.alignedTo != 'undefined')? opts.alignedTo.options: null; - // first axis or some axis aligned wrt it - if (tmpopts && (tmpopts.autoscaleMargin == null || - (tmpopts.labelPos == 'high' && tmpopts.max != null) || - (tmpopts.labelPos == 'low' && tmpopts.min != null))) - // cut ticks not seen - ticks = $.grep(axis.tickGenerator(axis), function(v){ - return (v >= axis.min && v <= axis.max); - }); - // standard tick generator - else ticks = axis.tickGenerator(axis); - - // formatter - if ((opts.labelPos == 'high' && val == ticks[ticks.length-1]) || - (opts.labelPos == 'low' && val == ticks[0])) - return opts.label; - else { - // user set tickFormatter - if ($.isFunction(opts.userFormatter)){ - var tmp = opts.userFormatter; - // avoid infinite loops - opts.userFormatter = null; - return tmp(val, axis); - } else { - // scientific notation for small values - if ((axis.datamax != 0 && Math.abs(axis.datamax) < 1e-5) || - (axis.datamin != 0 && Math.abs(axis.datamin) < 1e-5)) - return val.toPrecision(2); - else return val.toFixed(axis.tickDecimals); - } - } - } - - function init(plot){ - plot.hooks.processOptions.push(function(plot, options){ - // separate X and Y - $.each({x: options.xaxes, y: options.yaxes}, function(direction, axes){ - // get only axes with labels - $.each($.grep(axes, function(v){ - return (typeof v.label != 'undefined' && v.label); - }), function(i, axis){ - if ($.isFunction(axis.tickFormatter)) - axis.userFormatter = axis.tickFormatter; - if (typeof axis.alignTicksWithAxis != 'undefined') - $.each(plot.getAxes(), function(k,v){ - if (v.n == axis.alignTicksWithAxis && v.direction == direction) - axis.alignedTo = v; - }); - axis.tickFormatter = labelAxis; - }); - }); - }); - } - - var options = { xaxis: {label: null, labelPos: 'high'}, - yaxis: {label: null, labelPos: 'high'} }; - - $.plot.plugins.push({ - init: init, - options: options, - name: "axislabels", - version: "0.1" - }); -})(jQuery); \ No newline at end of file diff --git a/dashboard/lib/flot/jquery.flot.canvas.js b/dashboard/lib/flot/jquery.flot.canvas.js deleted file mode 100644 index 29328d58..00000000 --- a/dashboard/lib/flot/jquery.flot.canvas.js +++ /dev/null @@ -1,345 +0,0 @@ -/* Flot plugin for drawing all elements of a plot on the canvas. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -Flot normally produces certain elements, like axis labels and the legend, using -HTML elements. This permits greater interactivity and customization, and often -looks better, due to cross-browser canvas text inconsistencies and limitations. - -It can also be desirable to render the plot entirely in canvas, particularly -if the goal is to save it as an image, or if Flot is being used in a context -where the HTML DOM does not exist, as is the case within Node.js. This plugin -switches out Flot's standard drawing operations for canvas-only replacements. - -Currently the plugin supports only axis labels, but it will eventually allow -every element of the plot to be rendered directly to canvas. - -The plugin supports these options: - -{ - canvas: boolean -} - -The "canvas" option controls whether full canvas drawing is enabled, making it -possible to toggle on and off. This is useful when a plot uses HTML text in the -browser, but needs to redraw with canvas text when exporting as an image. - -*/ - -(function($) { - - var options = { - canvas: true - }; - - var render, getTextInfo, addText; - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - function init(plot, classes) { - - var Canvas = classes.Canvas; - - // We only want to replace the functions once; the second time around - // we would just get our new function back. This whole replacing of - // prototype functions is a disaster, and needs to be changed ASAP. - - if (render == null) { - getTextInfo = Canvas.prototype.getTextInfo, - addText = Canvas.prototype.addText, - render = Canvas.prototype.render; - } - - // Finishes rendering the canvas, including overlaid text - - Canvas.prototype.render = function() { - - if (!plot.getOptions().canvas) { - return render.call(this); - } - - var context = this.context, - cache = this._textCache; - - // For each text layer, render elements marked as active - - context.save(); - context.textBaseline = "middle"; - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - var layerCache = cache[layerKey]; - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey], - updateStyles = true; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var info = styleCache[key], - positions = info.positions, - lines = info.lines; - - // Since every element at this level of the cache have the - // same font and fill styles, we can just change them once - // using the values from the first element. - - if (updateStyles) { - context.fillStyle = info.font.color; - context.font = info.font.definition; - updateStyles = false; - } - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - for (var j = 0, line; line = position.lines[j]; j++) { - context.fillText(lines[j].text, line[0], line[1]); - } - } else { - positions.splice(i--, 1); - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - } - } - - context.restore(); - }; - - // Creates (if necessary) and returns a text info object. - // - // When the canvas option is set, the object looks like this: - // - // { - // width: Width of the text's bounding box. - // height: Height of the text's bounding box. - // positions: Array of positions at which this text is drawn. - // lines: [{ - // height: Height of this line. - // widths: Width of this line. - // text: Text on this line. - // }], - // font: { - // definition: Canvas font property string. - // color: Color of the text. - // }, - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // lines: Array of [x, y] coordinates at which to draw the line. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - if (!plot.getOptions().canvas) { - return getTextInfo.call(this, layer, text, font, angle, width); - } - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number - - text = "" + text; - - // If the font is a font-spec object, generate a CSS definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - if (info == null) { - - var context = this.context; - - // If the font was provided as CSS, create a div with those - // classes and examine it to generate a canvas font spec. - - if (typeof font !== "object") { - - var element = $("<div> </div>") - .css("position", "absolute") - .addClass(typeof font === "string" ? font : null) - .appendTo(this.getTextLayer(layer)); - - font = { - lineHeight: element.height(), - style: element.css("font-style"), - variant: element.css("font-variant"), - weight: element.css("font-weight"), - family: element.css("font-family"), - color: element.css("color") - }; - - // Setting line-height to 1, without units, sets it equal - // to the font-size, even if the font-size is abstract, - // like 'smaller'. This enables us to read the real size - // via the element's height, working around browsers that - // return the literal 'smaller' value. - - font.size = element.css("line-height", 1).height(); - - element.remove(); - } - - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px " + font.family; - - // Create a new info object, initializing the dimensions to - // zero so we can count them up line-by-line. - - info = styleCache[text] = { - width: 0, - height: 0, - positions: [], - lines: [], - font: { - definition: textStyle, - color: font.color - } - }; - - context.save(); - context.font = textStyle; - - // Canvas can't handle multi-line strings; break on various - // newlines, including HTML brs, to build a list of lines. - // Note that we could split directly on regexps, but IE < 9 is - // broken; revisit when we drop IE 7/8 support. - - var lines = (text + "").replace(/<br ?\/?>|\r\n|\r/g, "\n").split("\n"); - - for (var i = 0; i < lines.length; ++i) { - - var lineText = lines[i], - measured = context.measureText(lineText); - - info.width = Math.max(measured.width, info.width); - info.height += font.lineHeight; - - info.lines.push({ - text: lineText, - width: measured.width, - height: font.lineHeight - }); - } - - context.restore(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - if (!plot.getOptions().canvas) { - return addText.call(this, layer, x, y, text, font, angle, width, halign, valign); - } - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions, - lines = info.lines; - - // Text is drawn with baseline 'middle', which we need to account - // for by adding half a line's height to the y position. - - y += info.height / lines.length / 2; - - // Tweak the initial y-position to match vertical alignment - - if (valign == "middle") { - y = Math.round(y - info.height / 2); - } else if (valign == "bottom") { - y = Math.round(y - info.height); - } else { - y = Math.round(y); - } - - // FIXME: LEGACY BROWSER FIX - // AFFECTS: Opera < 12.00 - - // Offset the y coordinate, since Opera is off pretty - // consistently compared to the other browsers. - - if (!!(window.opera && window.opera.version().split(".")[0] < 12)) { - y -= 2; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - position = { - active: true, - lines: [], - x: x, - y: y - }; - - positions.push(position); - - // Fill in the x & y positions of each line, adjusting them - // individually for horizontal alignment. - - for (var i = 0, line; line = lines[i]; i++) { - if (halign == "center") { - position.lines.push([Math.round(x - line.width / 2), y]); - } else if (halign == "right") { - position.lines.push([Math.round(x - line.width), y]); - } else { - position.lines.push([Math.round(x), y]); - } - y += line.height; - } - }; - } - - $.plot.plugins.push({ - init: init, - options: options, - name: "canvas", - version: "1.0" - }); - -})(jQuery); diff --git a/dashboard/lib/flot/jquery.flot.js b/dashboard/lib/flot/jquery.flot.js deleted file mode 100644 index 21b35f97..00000000 --- a/dashboard/lib/flot/jquery.flot.js +++ /dev/null @@ -1,3168 +0,0 @@ -/* Javascript plotting library for jQuery, version 0.8.3. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -*/ - -// first an inline dependency, jquery.colorhelpers.js, we inline it here -// for convenience - -/* Plugin for jQuery for working with colors. - * - * Version 1.1. - * - * Inspiration from jQuery color animation plugin by John Resig. - * - * Released under the MIT license by Ole Laursen, October 2009. - * - * Examples: - * - * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() - * var c = $.color.extract($("#mydiv"), 'background-color'); - * console.log(c.r, c.g, c.b, c.a); - * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" - * - * Note that .scale() and .add() return the same modified object - * instead of making a new one. - * - * V. 1.1: Fix error handling so e.g. parsing an empty string does - * produce a color rather than just crashing. - */ -(function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i<c.length;++i)o[c.charAt(i)]+=d;return o.normalize()};o.scale=function(c,f){for(var i=0;i<c.length;++i)o[c.charAt(i)]*=f;return o.normalize()};o.toString=function(){if(o.a>=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return value<min?min:value>max?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); - -// the actual Flot code -(function($) { - - // Cache the prototype hasOwnProperty for faster access - - var hasOwnProperty = Object.prototype.hasOwnProperty; - - // A shim to provide 'detach' to jQuery versions prior to 1.4. Using a DOM - // operation produces the same effect as detach, i.e. removing the element - // without touching its jQuery data. - - // Do not merge this into Flot 0.9, since it requires jQuery 1.4.4+. - - if (!$.fn.detach) { - $.fn.detach = function() { - return this.each(function() { - if (this.parentNode) { - this.parentNode.removeChild( this ); - } - }); - }; - } - - /////////////////////////////////////////////////////////////////////////// - // The Canvas object is a wrapper around an HTML5 <canvas> tag. - // - // @constructor - // @param {string} cls List of classes to apply to the canvas. - // @param {element} container Element onto which to append the canvas. - // - // Requiring a container is a little iffy, but unfortunately canvas - // operations don't work unless the canvas is attached to the DOM. - - function Canvas(cls, container) { - - var element = container.children("." + cls)[0]; - - if (element == null) { - - element = document.createElement("canvas"); - element.className = cls; - - $(element).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) - .appendTo(container); - - // If HTML5 Canvas isn't available, fall back to [Ex|Flash]canvas - - if (!element.getContext) { - if (window.G_vmlCanvasManager) { - element = window.G_vmlCanvasManager.initElement(element); - } else { - throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); - } - } - } - - this.element = element; - - var context = this.context = element.getContext("2d"); - - // Determine the screen's ratio of physical to device-independent - // pixels. This is the ratio between the canvas width that the browser - // advertises and the number of pixels actually present in that space. - - // The iPhone 4, for example, has a device-independent width of 320px, - // but its screen is actually 640px wide. It therefore has a pixel - // ratio of 2, while most normal devices have a ratio of 1. - - var devicePixelRatio = window.devicePixelRatio || 1, - backingStoreRatio = - context.webkitBackingStorePixelRatio || - context.mozBackingStorePixelRatio || - context.msBackingStorePixelRatio || - context.oBackingStorePixelRatio || - context.backingStorePixelRatio || 1; - - this.pixelRatio = devicePixelRatio / backingStoreRatio; - - // Size the canvas to match the internal dimensions of its container - - this.resize(container.width(), container.height()); - - // Collection of HTML div layers for text overlaid onto the canvas - - this.textContainer = null; - this.text = {}; - - // Cache of text fragments and metrics, so we can avoid expensively - // re-calculating them when the plot is re-rendered in a loop. - - this._textCache = {}; - } - - // Resizes the canvas to the given dimensions. - // - // @param {number} width New width of the canvas, in pixels. - // @param {number} width New height of the canvas, in pixels. - - Canvas.prototype.resize = function(width, height) { - - if (width <= 0 || height <= 0) { - throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height); - } - - var element = this.element, - context = this.context, - pixelRatio = this.pixelRatio; - - // Resize the canvas, increasing its density based on the display's - // pixel ratio; basically giving it more pixels without increasing the - // size of its element, to take advantage of the fact that retina - // displays have that many more pixels in the same advertised space. - - // Resizing should reset the state (excanvas seems to be buggy though) - - if (this.width != width) { - element.width = width * pixelRatio; - element.style.width = width + "px"; - this.width = width; - } - - if (this.height != height) { - element.height = height * pixelRatio; - element.style.height = height + "px"; - this.height = height; - } - - // Save the context, so we can reset in case we get replotted. The - // restore ensure that we're really back at the initial state, and - // should be safe even if we haven't saved the initial state yet. - - context.restore(); - context.save(); - - // Scale the coordinate space to match the display density; so even though we - // may have twice as many pixels, we still want lines and other drawing to - // appear at the same size; the extra pixels will just make them crisper. - - context.scale(pixelRatio, pixelRatio); - }; - - // Clears the entire canvas area, not including any overlaid HTML text - - Canvas.prototype.clear = function() { - this.context.clearRect(0, 0, this.width, this.height); - }; - - // Finishes rendering the canvas, including managing the text overlay. - - Canvas.prototype.render = function() { - - var cache = this._textCache; - - // For each text layer, add elements marked as active that haven't - // already been rendered, and remove those that are no longer active. - - for (var layerKey in cache) { - if (hasOwnProperty.call(cache, layerKey)) { - - var layer = this.getTextLayer(layerKey), - layerCache = cache[layerKey]; - - layer.hide(); - - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - - var positions = styleCache[key].positions; - - for (var i = 0, position; position = positions[i]; i++) { - if (position.active) { - if (!position.rendered) { - layer.append(position.element); - position.rendered = true; - } - } else { - positions.splice(i--, 1); - if (position.rendered) { - position.element.detach(); - } - } - } - - if (positions.length == 0) { - delete styleCache[key]; - } - } - } - } - } - - layer.show(); - } - } - }; - - // Creates (if necessary) and returns the text overlay container. - // - // @param {string} classes String of space-separated CSS classes used to - // uniquely identify the text layer. - // @return {object} The jQuery-wrapped text-layer div. - - Canvas.prototype.getTextLayer = function(classes) { - - var layer = this.text[classes]; - - // Create the text layer if it doesn't exist - - if (layer == null) { - - // Create the text layer container, if it doesn't exist - - if (this.textContainer == null) { - this.textContainer = $("<div class='flot-text'></div>") - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0, - 'font-size': "smaller", - color: "#545454" - }) - .insertAfter(this.element); - } - - layer = this.text[classes] = $("<div></div>") - .addClass(classes) - .css({ - position: "absolute", - top: 0, - left: 0, - bottom: 0, - right: 0 - }) - .appendTo(this.textContainer); - } - - return layer; - }; - - // Creates (if necessary) and returns a text info object. - // - // The object looks like this: - // - // { - // width: Width of the text's wrapper div. - // height: Height of the text's wrapper div. - // element: The jQuery-wrapped HTML div containing the text. - // positions: Array of positions at which this text is drawn. - // } - // - // The positions array contains objects that look like this: - // - // { - // active: Flag indicating whether the text should be visible. - // rendered: Flag indicating whether the text is currently visible. - // element: The jQuery-wrapped HTML div containing the text. - // x: X coordinate at which to draw the text. - // y: Y coordinate at which to draw the text. - // } - // - // Each position after the first receives a clone of the original element. - // - // The idea is that that the width, height, and general 'identity' of the - // text is constant no matter where it is placed; the placements are a - // secondary property. - // - // Canvas maintains a cache of recently-used text info objects; getTextInfo - // either returns the cached element or creates a new entry. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {string} text Text string to retrieve info for. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @return {object} a text info object. - - Canvas.prototype.getTextInfo = function(layer, text, font, angle, width) { - - var textStyle, layerCache, styleCache, info; - - // Cast the value to a string, in case we were given a number or such - - text = "" + text; - - // If the font is a font-spec object, generate a CSS font definition - - if (typeof font === "object") { - textStyle = font.style + " " + font.variant + " " + font.weight + " " + font.size + "px/" + font.lineHeight + "px " + font.family; - } else { - textStyle = font; - } - - // Retrieve (or create) the cache for the text's layer and styles - - layerCache = this._textCache[layer]; - - if (layerCache == null) { - layerCache = this._textCache[layer] = {}; - } - - styleCache = layerCache[textStyle]; - - if (styleCache == null) { - styleCache = layerCache[textStyle] = {}; - } - - info = styleCache[text]; - - // If we can't find a matching element in our cache, create a new one - - if (info == null) { - - var element = $("<div></div>").html(text) - .css({ - position: "absolute", - 'max-width': width, - top: -9999 - }) - .appendTo(this.getTextLayer(layer)); - - if (typeof font === "object") { - element.css({ - font: textStyle, - color: font.color - }); - } else if (typeof font === "string") { - element.addClass(font); - } - - info = styleCache[text] = { - width: element.outerWidth(true), - height: element.outerHeight(true), - element: element, - positions: [] - }; - - element.detach(); - } - - return info; - }; - - // Adds a text string to the canvas text overlay. - // - // The text isn't drawn immediately; it is marked as rendering, which will - // result in its addition to the canvas on the next render pass. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number} x X coordinate at which to draw the text. - // @param {number} y Y coordinate at which to draw the text. - // @param {string} text Text string to draw. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which to rotate the text, in degrees. - // Angle is currently unused, it will be implemented in the future. - // @param {number=} width Maximum width of the text before it wraps. - // @param {string=} halign Horizontal alignment of the text; either "left", - // "center" or "right". - // @param {string=} valign Vertical alignment of the text; either "top", - // "middle" or "bottom". - - Canvas.prototype.addText = function(layer, x, y, text, font, angle, width, halign, valign) { - - var info = this.getTextInfo(layer, text, font, angle, width), - positions = info.positions; - - // Tweak the div's position to match the text's alignment - - if (halign == "center") { - x -= info.width / 2; - } else if (halign == "right") { - x -= info.width; - } - - if (valign == "middle") { - y -= info.height / 2; - } else if (valign == "bottom") { - y -= info.height; - } - - // Determine whether this text already exists at this position. - // If so, mark it for inclusion in the next render pass. - - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = true; - return; - } - } - - // If the text doesn't exist at this position, create a new entry - - // For the very first position we'll re-use the original element, - // while for subsequent ones we'll clone it. - - position = { - active: true, - rendered: false, - element: positions.length ? info.element.clone() : info.element, - x: x, - y: y - }; - - positions.push(position); - - // Move the element to its final position within the container - - position.element.css({ - top: Math.round(y), - left: Math.round(x), - 'text-align': halign // In case the text wraps - }); - }; - - // Removes one or more text strings from the canvas text overlay. - // - // If no parameters are given, all text within the layer is removed. - // - // Note that the text is not immediately removed; it is simply marked as - // inactive, which will result in its removal on the next render pass. - // This avoids the performance penalty for 'clear and redraw' behavior, - // where we potentially get rid of all text on a layer, but will likely - // add back most or all of it later, as when redrawing axes, for example. - // - // @param {string} layer A string of space-separated CSS classes uniquely - // identifying the layer containing this text. - // @param {number=} x X coordinate of the text. - // @param {number=} y Y coordinate of the text. - // @param {string=} text Text string to remove. - // @param {(string|object)=} font Either a string of space-separated CSS - // classes or a font-spec object, defining the text's font and style. - // @param {number=} angle Angle at which the text is rotated, in degrees. - // Angle is currently unused, it will be implemented in the future. - - Canvas.prototype.removeText = function(layer, x, y, text, font, angle) { - if (text == null) { - var layerCache = this._textCache[layer]; - if (layerCache != null) { - for (var styleKey in layerCache) { - if (hasOwnProperty.call(layerCache, styleKey)) { - var styleCache = layerCache[styleKey]; - for (var key in styleCache) { - if (hasOwnProperty.call(styleCache, key)) { - var positions = styleCache[key].positions; - for (var i = 0, position; position = positions[i]; i++) { - position.active = false; - } - } - } - } - } - } - } else { - var positions = this.getTextInfo(layer, text, font, angle).positions; - for (var i = 0, position; position = positions[i]; i++) { - if (position.x == x && position.y == y) { - position.active = false; - } - } - } - }; - - /////////////////////////////////////////////////////////////////////////// - // The top-level container for the entire plot. - - function Plot(placeholder, data_, options_, plugins) { - // data is on the form: - // [ series1, series2 ... ] - // where series is either just the data as [ [x1, y1], [x2, y2], ... ] - // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } - - var series = [], - options = { - // the color theme used for graphs - colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], - legend: { - show: true, - noColumns: 1, // number of colums in legend table - labelFormatter: null, // fn: string -> string - labelBoxBorderColor: "#ccc", // border color for the little label boxes - container: null, // container (as jQuery object) to put legend in, null means default on top of graph - position: "ne", // position of default legend container within plot - margin: 5, // distance from grid edge to default legend container within plot - backgroundColor: null, // null means auto-detect - backgroundOpacity: 0.85, // set to 0 to avoid background - sorted: null // default to no legend sorting - }, - xaxis: { - show: null, // null = auto-detect, true = always, false = never - position: "bottom", // or "top" - mode: null, // null or "time" - font: null, // null (derived from CSS in placeholder) or object like { size: 11, lineHeight: 13, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } - color: null, // base color, labels, ticks - tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" - transform: null, // null or f: number -> number to transform axis - inverseTransform: null, // if transform is set, this should be the inverse function - min: null, // min. value to show, null means set automatically - max: null, // max. value to show, null means set automatically - autoscaleMargin: null, // margin in % to add if auto-setting min/max - ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks - tickFormatter: null, // fn: number -> string - labelWidth: null, // size of tick labels in pixels - labelHeight: null, - reserveSpace: null, // whether to reserve space even if axis isn't shown - tickLength: null, // size in pixels of ticks, or "full" for whole line - alignTicksWithAxis: null, // axis number or null for no sync - tickDecimals: null, // no. of decimals, null means auto - tickSize: null, // number or [number, "unit"] - minTickSize: null // number or [number, "unit"] - }, - yaxis: { - autoscaleMargin: 0.02, - position: "left" // or "right" - }, - xaxes: [], - yaxes: [], - series: { - points: { - show: false, - radius: 3, - lineWidth: 2, // in pixels - fill: true, - fillColor: "#ffffff", - symbol: "circle" // or callback - }, - lines: { - // we don't put in show: false so we can see - // whether lines were actively disabled - lineWidth: 2, // in pixels - fill: false, - fillColor: null, - steps: false - // Omit 'zero', so we can later default its value to - // match that of the 'fill' option. - }, - bars: { - show: false, - lineWidth: 2, // in pixels - barWidth: 1, // in units of the x axis - fill: true, - fillColor: null, - align: "left", // "left", "right", or "center" - horizontal: false, - zero: true - }, - shadowSize: 3, - highlightColor: null - }, - grid: { - show: true, - aboveData: false, - color: "#afafaf", // primary color used for outline and labels - backgroundColor: null, // null for transparent, else color - borderColor: null, // set if different from the grid color - tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" - margin: 0, // distance from the canvas edge to the grid - labelMargin: 5, // in pixels - axisMargin: 8, // in pixels - borderWidth: 2, // in pixels - minBorderMargin: null, // in pixels, null means taken from points radius - markings: null, // array of ranges or fn: axes -> array of ranges - markingsColor: "#f4f4f4", - markingsLineWidth: 2, - // interactive stuff - clickable: false, - hoverable: false, - autoHighlight: true, // highlight in case mouse is near - mouseActiveRadius: 10 // how far the mouse can be away to activate an item - }, - interaction: { - redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow - }, - hooks: {} - }, - surface = null, // the canvas for the plot itself - overlay = null, // canvas for interactive stuff on top of plot - eventHolder = null, // jQuery object that events should be bound to - ctx = null, octx = null, - xaxes = [], yaxes = [], - plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, - plotWidth = 0, plotHeight = 0, - hooks = { - processOptions: [], - processRawData: [], - processDatapoints: [], - processOffset: [], - drawBackground: [], - drawSeries: [], - draw: [], - bindEvents: [], - drawOverlay: [], - shutdown: [] - }, - plot = this; - - // public functions - plot.setData = setData; - plot.setupGrid = setupGrid; - plot.draw = draw; - plot.getPlaceholder = function() { return placeholder; }; - plot.getCanvas = function() { return surface.element; }; - plot.getPlotOffset = function() { return plotOffset; }; - plot.width = function () { return plotWidth; }; - plot.height = function () { return plotHeight; }; - plot.offset = function () { - var o = eventHolder.offset(); - o.left += plotOffset.left; - o.top += plotOffset.top; - return o; - }; - plot.getData = function () { return series; }; - plot.getAxes = function () { - var res = {}, i; - $.each(xaxes.concat(yaxes), function (_, axis) { - if (axis) - res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; - }); - return res; - }; - plot.getXAxes = function () { return xaxes; }; - plot.getYAxes = function () { return yaxes; }; - plot.c2p = canvasToAxisCoords; - plot.p2c = axisToCanvasCoords; - plot.getOptions = function () { return options; }; - plot.highlight = highlight; - plot.unhighlight = unhighlight; - plot.triggerRedrawOverlay = triggerRedrawOverlay; - plot.pointOffset = function(point) { - return { - left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), - top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) - }; - }; - plot.shutdown = shutdown; - plot.destroy = function () { - shutdown(); - placeholder.removeData("plot").empty(); - - series = []; - options = null; - surface = null; - overlay = null; - eventHolder = null; - ctx = null; - octx = null; - xaxes = []; - yaxes = []; - hooks = null; - highlights = []; - plot = null; - }; - plot.resize = function () { - var width = placeholder.width(), - height = placeholder.height(); - surface.resize(width, height); - overlay.resize(width, height); - }; - - // public attributes - plot.hooks = hooks; - - // initialize - initPlugins(plot); - parseOptions(options_); - setupCanvases(); - setData(data_); - setupGrid(); - draw(); - bindEvents(); - - - function executeHooks(hook, args) { - args = [plot].concat(args); - for (var i = 0; i < hook.length; ++i) - hook[i].apply(this, args); - } - - function initPlugins() { - - // References to key classes, allowing plugins to modify them - - var classes = { - Canvas: Canvas - }; - - for (var i = 0; i < plugins.length; ++i) { - var p = plugins[i]; - p.init(plot, classes); - if (p.options) - $.extend(true, options, p.options); - } - } - - function parseOptions(opts) { - - $.extend(true, options, opts); - - // $.extend merges arrays, rather than replacing them. When less - // colors are provided than the size of the default palette, we - // end up with those colors plus the remaining defaults, which is - // not expected behavior; avoid it by replacing them here. - - if (opts && opts.colors) { - options.colors = opts.colors; - } - - if (options.xaxis.color == null) - options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - if (options.yaxis.color == null) - options.yaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - if (options.xaxis.tickColor == null) // grid.tickColor for back-compatibility - options.xaxis.tickColor = options.grid.tickColor || options.xaxis.color; - if (options.yaxis.tickColor == null) // grid.tickColor for back-compatibility - options.yaxis.tickColor = options.grid.tickColor || options.yaxis.color; - - if (options.grid.borderColor == null) - options.grid.borderColor = options.grid.color; - if (options.grid.tickColor == null) - options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); - - // Fill in defaults for axis options, including any unspecified - // font-spec fields, if a font-spec was provided. - - // If no x/y axis options were provided, create one of each anyway, - // since the rest of the code assumes that they exist. - - var i, axisOptions, axisCount, - fontSize = placeholder.css("font-size"), - fontSizeDefault = fontSize ? +fontSize.replace("px", "") : 11, - fontDefaults = { - style: placeholder.css("font-style"), - size: Math.round(0.8 * fontSizeDefault), - variant: placeholder.css("font-variant"), - weight: placeholder.css("font-weight"), - family: placeholder.css("font-family") - }; - - axisCount = options.xaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.xaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.xaxis, axisOptions); - options.xaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.12); - } - } - } - - axisCount = options.yaxes.length || 1; - for (i = 0; i < axisCount; ++i) { - - axisOptions = options.yaxes[i]; - if (axisOptions && !axisOptions.tickColor) { - axisOptions.tickColor = axisOptions.color; - } - - axisOptions = $.extend(true, {}, options.yaxis, axisOptions); - options.yaxes[i] = axisOptions; - - if (axisOptions.font) { - axisOptions.font = $.extend({}, fontDefaults, axisOptions.font); - if (!axisOptions.font.color) { - axisOptions.font.color = axisOptions.color; - } - if (!axisOptions.font.lineHeight) { - axisOptions.font.lineHeight = Math.round(axisOptions.font.size * 1.12); - } - } - } - - // backwards compatibility, to be removed in future - if (options.xaxis.noTicks && options.xaxis.ticks == null) - options.xaxis.ticks = options.xaxis.noTicks; - if (options.yaxis.noTicks && options.yaxis.ticks == null) - options.yaxis.ticks = options.yaxis.noTicks; - if (options.x2axis) { - options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); - options.xaxes[1].position = "top"; - // Override the inherit to allow the axis to auto-scale - if (options.x2axis.min == null) { - options.xaxes[1].min = null; - } - if (options.x2axis.max == null) { - options.xaxes[1].max = null; - } - } - if (options.y2axis) { - options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); - options.yaxes[1].position = "right"; - // Override the inherit to allow the axis to auto-scale - if (options.y2axis.min == null) { - options.yaxes[1].min = null; - } - if (options.y2axis.max == null) { - options.yaxes[1].max = null; - } - } - if (options.grid.coloredAreas) - options.grid.markings = options.grid.coloredAreas; - if (options.grid.coloredAreasColor) - options.grid.markingsColor = options.grid.coloredAreasColor; - if (options.lines) - $.extend(true, options.series.lines, options.lines); - if (options.points) - $.extend(true, options.series.points, options.points); - if (options.bars) - $.extend(true, options.series.bars, options.bars); - if (options.shadowSize != null) - options.series.shadowSize = options.shadowSize; - if (options.highlightColor != null) - options.series.highlightColor = options.highlightColor; - - // save options on axes for future reference - for (i = 0; i < options.xaxes.length; ++i) - getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; - for (i = 0; i < options.yaxes.length; ++i) - getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; - - // add hooks from options - for (var n in hooks) - if (options.hooks[n] && options.hooks[n].length) - hooks[n] = hooks[n].concat(options.hooks[n]); - - executeHooks(hooks.processOptions, [options]); - } - - function setData(d) { - series = parseData(d); - fillInSeriesOptions(); - processData(); - } - - function parseData(d) { - var res = []; - for (var i = 0; i < d.length; ++i) { - var s = $.extend(true, {}, options.series); - - if (d[i].data != null) { - s.data = d[i].data; // move the data instead of deep-copy - delete d[i].data; - - $.extend(true, s, d[i]); - - d[i].data = s.data; - } - else - s.data = d[i]; - res.push(s); - } - - return res; - } - - function axisNumber(obj, coord) { - var a = obj[coord + "axis"]; - if (typeof a == "object") // if we got a real axis, extract number - a = a.n; - if (typeof a != "number") - a = 1; // default to first axis - return a; - } - - function allAxes() { - // return flat array without annoying null entries - return $.grep(xaxes.concat(yaxes), function (a) { return a; }); - } - - function canvasToAxisCoords(pos) { - // return an object with x/y corresponding to all used axes - var res = {}, i, axis; - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) - res["x" + axis.n] = axis.c2p(pos.left); - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) - res["y" + axis.n] = axis.c2p(pos.top); - } - - if (res.x1 !== undefined) - res.x = res.x1; - if (res.y1 !== undefined) - res.y = res.y1; - - return res; - } - - function axisToCanvasCoords(pos) { - // get canvas coords from the first pair of x/y found in pos - var res = {}, i, axis, key; - - for (i = 0; i < xaxes.length; ++i) { - axis = xaxes[i]; - if (axis && axis.used) { - key = "x" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "x"; - - if (pos[key] != null) { - res.left = axis.p2c(pos[key]); - break; - } - } - } - - for (i = 0; i < yaxes.length; ++i) { - axis = yaxes[i]; - if (axis && axis.used) { - key = "y" + axis.n; - if (pos[key] == null && axis.n == 1) - key = "y"; - - if (pos[key] != null) { - res.top = axis.p2c(pos[key]); - break; - } - } - } - - return res; - } - - function getOrCreateAxis(axes, number) { - if (!axes[number - 1]) - axes[number - 1] = { - n: number, // save the number for future reference - direction: axes == xaxes ? "x" : "y", - options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) - }; - - return axes[number - 1]; - } - - function fillInSeriesOptions() { - - var neededColors = series.length, maxIndex = -1, i; - - // Subtract the number of series that already have fixed colors or - // color indexes from the number that we still need to generate. - - for (i = 0; i < series.length; ++i) { - var sc = series[i].color; - if (sc != null) { - neededColors--; - if (typeof sc == "number" && sc > maxIndex) { - maxIndex = sc; - } - } - } - - // If any of the series have fixed color indexes, then we need to - // generate at least as many colors as the highest index. - - if (neededColors <= maxIndex) { - neededColors = maxIndex + 1; - } - - // Generate all the colors, using first the option colors and then - // variations on those colors once they're exhausted. - - var c, colors = [], colorPool = options.colors, - colorPoolSize = colorPool.length, variation = 0; - - for (i = 0; i < neededColors; i++) { - - c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); - - // Each time we exhaust the colors in the pool we adjust - // a scaling factor used to produce more variations on - // those colors. The factor alternates negative/positive - // to produce lighter/darker colors. - - // Reset the variation after every few cycles, or else - // it will end up producing only white or black colors. - - if (i % colorPoolSize == 0 && i) { - if (variation >= 0) { - if (variation < 0.5) { - variation = -variation - 0.2; - } else variation = 0; - } else variation = -variation; - } - - colors[i] = c.scale('rgb', 1 + variation); - } - - // Finalize the series options, filling in their colors - - var colori = 0, s; - for (i = 0; i < series.length; ++i) { - s = series[i]; - - // assign colors - if (s.color == null) { - s.color = colors[colori].toString(); - ++colori; - } - else if (typeof s.color == "number") - s.color = colors[s.color].toString(); - - // turn on lines automatically in case nothing is set - if (s.lines.show == null) { - var v, show = true; - for (v in s) - if (s[v] && s[v].show) { - show = false; - break; - } - if (show) - s.lines.show = true; - } - - // If nothing was provided for lines.zero, default it to match - // lines.fill, since areas by default should extend to zero. - - if (s.lines.zero == null) { - s.lines.zero = !!s.lines.fill; - } - - // setup axes - s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); - s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); - } - } - - function processData() { - var topSentry = Number.POSITIVE_INFINITY, - bottomSentry = Number.NEGATIVE_INFINITY, - fakeInfinity = Number.MAX_VALUE, - i, j, k, m, length, - s, points, ps, x, y, axis, val, f, p, - data, format; - - function updateAxis(axis, min, max) { - if (min < axis.datamin && min != -fakeInfinity) - axis.datamin = min; - if (max > axis.datamax && max != fakeInfinity) - axis.datamax = max; - } - - $.each(allAxes(), function (_, axis) { - // init axis - axis.datamin = topSentry; - axis.datamax = bottomSentry; - axis.used = false; - }); - - for (i = 0; i < series.length; ++i) { - s = series[i]; - s.datapoints = { points: [] }; - - executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); - } - - // first pass: clean and copy data - for (i = 0; i < series.length; ++i) { - s = series[i]; - - data = s.data; - format = s.datapoints.format; - - if (!format) { - format = []; - // find out how to copy - format.push({ x: true, number: true, required: true }); - format.push({ y: true, number: true, required: true }); - - if (s.bars.show || (s.lines.show && s.lines.fill)) { - var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); - format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); - if (s.bars.horizontal) { - delete format[format.length - 1].y; - format[format.length - 1].x = true; - } - } - - s.datapoints.format = format; - } - - if (s.datapoints.pointsize != null) - continue; // already filled in - - s.datapoints.pointsize = format.length; - - ps = s.datapoints.pointsize; - points = s.datapoints.points; - - var insertSteps = s.lines.show && s.lines.steps; - s.xaxis.used = s.yaxis.used = true; - - for (j = k = 0; j < data.length; ++j, k += ps) { - p = data[j]; - - var nullify = p == null; - if (!nullify) { - for (m = 0; m < ps; ++m) { - val = p[m]; - f = format[m]; - - if (f) { - if (f.number && val != null) { - val = +val; // convert to number - if (isNaN(val)) - val = null; - else if (val == Infinity) - val = fakeInfinity; - else if (val == -Infinity) - val = -fakeInfinity; - } - - if (val == null) { - if (f.required) - nullify = true; - - if (f.defaultValue != null) - val = f.defaultValue; - } - } - - points[k + m] = val; - } - } - - if (nullify) { - for (m = 0; m < ps; ++m) { - val = points[k + m]; - if (val != null) { - f = format[m]; - // extract min/max info - if (f.autoscale !== false) { - if (f.x) { - updateAxis(s.xaxis, val, val); - } - if (f.y) { - updateAxis(s.yaxis, val, val); - } - } - } - points[k + m] = null; - } - } - else { - // a little bit of line specific stuff that - // perhaps shouldn't be here, but lacking - // better means... - if (insertSteps && k > 0 - && points[k - ps] != null - && points[k - ps] != points[k] - && points[k - ps + 1] != points[k + 1]) { - // copy the point to make room for a middle point - for (m = 0; m < ps; ++m) - points[k + ps + m] = points[k + m]; - - // middle point has same y - points[k + 1] = points[k - ps + 1]; - - // we've added a point, better reflect that - k += ps; - } - } - } - } - - // give the hooks a chance to run - for (i = 0; i < series.length; ++i) { - s = series[i]; - - executeHooks(hooks.processDatapoints, [ s, s.datapoints]); - } - - // second pass: find datamax/datamin for auto-scaling - for (i = 0; i < series.length; ++i) { - s = series[i]; - points = s.datapoints.points; - ps = s.datapoints.pointsize; - format = s.datapoints.format; - - var xmin = topSentry, ymin = topSentry, - xmax = bottomSentry, ymax = bottomSentry; - - for (j = 0; j < points.length; j += ps) { - if (points[j] == null) - continue; - - for (m = 0; m < ps; ++m) { - val = points[j + m]; - f = format[m]; - if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) - continue; - - if (f.x) { - if (val < xmin) - xmin = val; - if (val > xmax) - xmax = val; - } - if (f.y) { - if (val < ymin) - ymin = val; - if (val > ymax) - ymax = val; - } - } - } - - if (s.bars.show) { - // make sure we got room for the bar on the dancing floor - var delta; - - switch (s.bars.align) { - case "left": - delta = 0; - break; - case "right": - delta = -s.bars.barWidth; - break; - default: - delta = -s.bars.barWidth / 2; - } - - if (s.bars.horizontal) { - ymin += delta; - ymax += delta + s.bars.barWidth; - } - else { - xmin += delta; - xmax += delta + s.bars.barWidth; - } - } - - updateAxis(s.xaxis, xmin, xmax); - updateAxis(s.yaxis, ymin, ymax); - } - - $.each(allAxes(), function (_, axis) { - if (axis.datamin == topSentry) - axis.datamin = null; - if (axis.datamax == bottomSentry) - axis.datamax = null; - }); - } - - function setupCanvases() { - - // Make sure the placeholder is clear of everything except canvases - // from a previous plot in this container that we'll try to re-use. - - placeholder.css("padding", 0) // padding messes up the positioning - .children().filter(function(){ - return !$(this).hasClass("flot-overlay") && !$(this).hasClass('flot-base'); - }).remove(); - - if (placeholder.css("position") == 'static') - placeholder.css("position", "relative"); // for positioning labels and overlay - - surface = new Canvas("flot-base", placeholder); - overlay = new Canvas("flot-overlay", placeholder); // overlay canvas for interactive features - - ctx = surface.context; - octx = overlay.context; - - // define which element we're listening for events on - eventHolder = $(overlay.element).unbind(); - - // If we're re-using a plot object, shut down the old one - - var existing = placeholder.data("plot"); - - if (existing) { - existing.shutdown(); - overlay.clear(); - } - - // save in case we get replotted - placeholder.data("plot", plot); - } - - function bindEvents() { - // bind events - if (options.grid.hoverable) { - eventHolder.mousemove(onMouseMove); - - // Use bind, rather than .mouseleave, because we officially - // still support jQuery 1.2.6, which doesn't define a shortcut - // for mouseenter or mouseleave. This was a bug/oversight that - // was fixed somewhere around 1.3.x. We can return to using - // .mouseleave when we drop support for 1.2.6. - - eventHolder.bind("mouseleave", onMouseLeave); - } - - if (options.grid.clickable) - eventHolder.click(onClick); - - executeHooks(hooks.bindEvents, [eventHolder]); - } - - function shutdown() { - if (redrawTimeout) - clearTimeout(redrawTimeout); - - eventHolder.unbind("mousemove", onMouseMove); - eventHolder.unbind("mouseleave", onMouseLeave); - eventHolder.unbind("click", onClick); - - executeHooks(hooks.shutdown, [eventHolder]); - } - - function setTransformationHelpers(axis) { - // set helper functions on the axis, assumes plot area - // has been computed already - - function identity(x) { return x; } - - var s, m, t = axis.options.transform || identity, - it = axis.options.inverseTransform; - - // precompute how much the axis is scaling a point - // in canvas space - if (axis.direction == "x") { - s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); - m = Math.min(t(axis.max), t(axis.min)); - } - else { - s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); - s = -s; - m = Math.max(t(axis.max), t(axis.min)); - } - - // data point to canvas coordinate - if (t == identity) // slight optimization - axis.p2c = function (p) { return (p - m) * s; }; - else - axis.p2c = function (p) { return (t(p) - m) * s; }; - // canvas coordinate to data point - if (!it) - axis.c2p = function (c) { return m + c / s; }; - else - axis.c2p = function (c) { return it(m + c / s); }; - } - - function measureTickLabels(axis) { - - var opts = axis.options, - ticks = axis.ticks || [], - labelWidth = opts.labelWidth || 0, - labelHeight = opts.labelHeight || 0, - maxWidth = labelWidth || (axis.direction == "x" ? Math.floor(surface.width / (ticks.length || 1)) : null), - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = opts.font || "flot-tick-label tickLabel"; - - for (var i = 0; i < ticks.length; ++i) { - - var t = ticks[i]; - - if (!t.label) - continue; - - var info = surface.getTextInfo(layer, t.label, font, null, maxWidth); - - labelWidth = Math.max(labelWidth, info.width); - labelHeight = Math.max(labelHeight, info.height); - } - - axis.labelWidth = opts.labelWidth || labelWidth; - axis.labelHeight = opts.labelHeight || labelHeight; - } - - function allocateAxisBoxFirstPhase(axis) { - // find the bounding box of the axis by looking at label - // widths/heights and ticks, make room by diminishing the - // plotOffset; this first phase only looks at one - // dimension per axis, the other dimension depends on the - // other axes so will have to wait - - var lw = axis.labelWidth, - lh = axis.labelHeight, - pos = axis.options.position, - isXAxis = axis.direction === "x", - tickLength = axis.options.tickLength, - axisMargin = options.grid.axisMargin, - padding = options.grid.labelMargin, - innermost = true, - outermost = true, - first = true, - found = false; - - // Determine the axis's position in its direction and on its side - - $.each(isXAxis ? xaxes : yaxes, function(i, a) { - if (a && (a.show || a.reserveSpace)) { - if (a === axis) { - found = true; - } else if (a.options.position === pos) { - if (found) { - outermost = false; - } else { - innermost = false; - } - } - if (!found) { - first = false; - } - } - }); - - // The outermost axis on each side has no margin - - if (outermost) { - axisMargin = 0; - } - - // The ticks for the first axis in each direction stretch across - - if (tickLength == null) { - tickLength = first ? "full" : 5; - } - - if (!isNaN(+tickLength)) - padding += +tickLength; - - if (isXAxis) { - lh += padding; - - if (pos == "bottom") { - plotOffset.bottom += lh + axisMargin; - axis.box = { top: surface.height - plotOffset.bottom, height: lh }; - } - else { - axis.box = { top: plotOffset.top + axisMargin, height: lh }; - plotOffset.top += lh + axisMargin; - } - } - else { - lw += padding; - - if (pos == "left") { - axis.box = { left: plotOffset.left + axisMargin, width: lw }; - plotOffset.left += lw + axisMargin; - } - else { - plotOffset.right += lw + axisMargin; - axis.box = { left: surface.width - plotOffset.right, width: lw }; - } - } - - // save for future reference - axis.position = pos; - axis.tickLength = tickLength; - axis.box.padding = padding; - axis.innermost = innermost; - } - - function allocateAxisBoxSecondPhase(axis) { - // now that all axis boxes have been placed in one - // dimension, we can set the remaining dimension coordinates - if (axis.direction == "x") { - axis.box.left = plotOffset.left - axis.labelWidth / 2; - axis.box.width = surface.width - plotOffset.left - plotOffset.right + axis.labelWidth; - } - else { - axis.box.top = plotOffset.top - axis.labelHeight / 2; - axis.box.height = surface.height - plotOffset.bottom - plotOffset.top + axis.labelHeight; - } - } - - function adjustLayoutForThingsStickingOut() { - // possibly adjust plot offset to ensure everything stays - // inside the canvas and isn't clipped off - - var minMargin = options.grid.minBorderMargin, - axis, i; - - // check stuff from the plot (FIXME: this should just read - // a value from the series, otherwise it's impossible to - // customize) - if (minMargin == null) { - minMargin = 0; - for (i = 0; i < series.length; ++i) - minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); - } - - var margins = { - left: minMargin, - right: minMargin, - top: minMargin, - bottom: minMargin - }; - - // check axis labels, note we don't check the actual - // labels but instead use the overall width/height to not - // jump as much around with replots - $.each(allAxes(), function (_, axis) { - if (axis.reserveSpace && axis.ticks && axis.ticks.length) { - if (axis.direction === "x") { - margins.left = Math.max(margins.left, axis.labelWidth / 2); - margins.right = Math.max(margins.right, axis.labelWidth / 2); - } else { - margins.bottom = Math.max(margins.bottom, axis.labelHeight / 2); - margins.top = Math.max(margins.top, axis.labelHeight / 2); - } - } - }); - - plotOffset.left = Math.ceil(Math.max(margins.left, plotOffset.left)); - plotOffset.right = Math.ceil(Math.max(margins.right, plotOffset.right)); - plotOffset.top = Math.ceil(Math.max(margins.top, plotOffset.top)); - plotOffset.bottom = Math.ceil(Math.max(margins.bottom, plotOffset.bottom)); - } - - function setupGrid() { - var i, axes = allAxes(), showGrid = options.grid.show; - - // Initialize the plot's offset from the edge of the canvas - - for (var a in plotOffset) { - var margin = options.grid.margin || 0; - plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; - } - - executeHooks(hooks.processOffset, [plotOffset]); - - // If the grid is visible, add its border width to the offset - - for (var a in plotOffset) { - if(typeof(options.grid.borderWidth) == "object") { - plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; - } - else { - plotOffset[a] += showGrid ? options.grid.borderWidth : 0; - } - } - - $.each(axes, function (_, axis) { - var axisOpts = axis.options; - axis.show = axisOpts.show == null ? axis.used : axisOpts.show; - axis.reserveSpace = axisOpts.reserveSpace == null ? axis.show : axisOpts.reserveSpace; - setRange(axis); - }); - - if (showGrid) { - - var allocatedAxes = $.grep(axes, function (axis) { - return axis.show || axis.reserveSpace; - }); - - $.each(allocatedAxes, function (_, axis) { - // make the ticks - setupTickGeneration(axis); - setTicks(axis); - snapRangeToTicks(axis, axis.ticks); - // find labelWidth/Height for axis - measureTickLabels(axis); - }); - - // with all dimensions calculated, we can compute the - // axis bounding boxes, start from the outside - // (reverse order) - for (i = allocatedAxes.length - 1; i >= 0; --i) - allocateAxisBoxFirstPhase(allocatedAxes[i]); - - // make sure we've got enough space for things that - // might stick out - adjustLayoutForThingsStickingOut(); - - $.each(allocatedAxes, function (_, axis) { - allocateAxisBoxSecondPhase(axis); - }); - } - - plotWidth = surface.width - plotOffset.left - plotOffset.right; - plotHeight = surface.height - plotOffset.bottom - plotOffset.top; - - // now we got the proper plot dimensions, we can compute the scaling - $.each(axes, function (_, axis) { - setTransformationHelpers(axis); - }); - - if (showGrid) { - drawAxisLabels(); - } - - insertLegend(); - } - - function setRange(axis) { - var opts = axis.options, - min = +(opts.min != null ? opts.min : axis.datamin), - max = +(opts.max != null ? opts.max : axis.datamax), - delta = max - min; - - if (delta == 0.0) { - // degenerate case - var widen = max == 0 ? 1 : 0.01; - - if (opts.min == null) - min -= widen; - // always widen max if we couldn't widen min to ensure we - // don't fall into min == max which doesn't work - if (opts.max == null || opts.min != null) - max += widen; - } - else { - // consider autoscaling - var margin = opts.autoscaleMargin; - if (margin != null) { - if (opts.min == null) { - min -= delta * margin; - // make sure we don't go below zero if all values - // are positive - if (min < 0 && axis.datamin != null && axis.datamin >= 0) - min = 0; - } - if (opts.max == null) { - max += delta * margin; - if (max > 0 && axis.datamax != null && axis.datamax <= 0) - max = 0; - } - } - } - axis.min = min; - axis.max = max; - } - - function setupTickGeneration(axis) { - var opts = axis.options; - - // estimate number of ticks - var noTicks; - if (typeof opts.ticks == "number" && opts.ticks > 0) - noTicks = opts.ticks; - else - // heuristic based on the model a*sqrt(x) fitted to - // some data points that seemed reasonable - noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? surface.width : surface.height); - - var delta = (axis.max - axis.min) / noTicks, - dec = -Math.floor(Math.log(delta) / Math.LN10), - maxDec = opts.tickDecimals; - - if (maxDec != null && dec > maxDec) { - dec = maxDec; - } - - var magn = Math.pow(10, -dec), - norm = delta / magn, // norm is between 1.0 and 10.0 - size; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - // special case for 2.5, requires an extra decimal - if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { - size = 2.5; - ++dec; - } - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - - if (opts.minTickSize != null && size < opts.minTickSize) { - size = opts.minTickSize; - } - - axis.delta = delta; - axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); - axis.tickSize = opts.tickSize || size; - - // Time mode was moved to a plug-in in 0.8, and since so many people use it - // we'll add an especially friendly reminder to make sure they included it. - - if (opts.mode == "time" && !axis.tickGenerator) { - throw new Error("Time mode requires the flot.time plugin."); - } - - // Flot supports base-10 axes; any other mode else is handled by a plug-in, - // like flot.time.js. - - if (!axis.tickGenerator) { - - axis.tickGenerator = function (axis) { - - var ticks = [], - start = floorInBase(axis.min, axis.tickSize), - i = 0, - v = Number.NaN, - prev; - - do { - prev = v; - v = start + i * axis.tickSize; - ticks.push(v); - ++i; - } while (v < axis.max && v != prev); - return ticks; - }; - - axis.tickFormatter = function (value, axis) { - - var factor = axis.tickDecimals ? Math.pow(10, axis.tickDecimals) : 1; - var formatted = "" + Math.round(value * factor) / factor; - - // If tickDecimals was specified, ensure that we have exactly that - // much precision; otherwise default to the value's own precision. - - if (axis.tickDecimals != null) { - var decimal = formatted.indexOf("."); - var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; - if (precision < axis.tickDecimals) { - return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); - } - } - - return formatted; - }; - } - - if ($.isFunction(opts.tickFormatter)) - axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; - - if (opts.alignTicksWithAxis != null) { - var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; - if (otherAxis && otherAxis.used && otherAxis != axis) { - // consider snapping min/max to outermost nice ticks - var niceTicks = axis.tickGenerator(axis); - if (niceTicks.length > 0) { - if (opts.min == null) - axis.min = Math.min(axis.min, niceTicks[0]); - if (opts.max == null && niceTicks.length > 1) - axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); - } - - axis.tickGenerator = function (axis) { - // copy ticks, scaled to this axis - var ticks = [], v, i; - for (i = 0; i < otherAxis.ticks.length; ++i) { - v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); - v = axis.min + v * (axis.max - axis.min); - ticks.push(v); - } - return ticks; - }; - - // we might need an extra decimal since forced - // ticks don't necessarily fit naturally - if (!axis.mode && opts.tickDecimals == null) { - var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), - ts = axis.tickGenerator(axis); - - // only proceed if the tick interval rounded - // with an extra decimal doesn't give us a - // zero at end - if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) - axis.tickDecimals = extraDec; - } - } - } - } - - function setTicks(axis) { - var oticks = axis.options.ticks, ticks = []; - if (oticks == null || (typeof oticks == "number" && oticks > 0)) - ticks = axis.tickGenerator(axis); - else if (oticks) { - if ($.isFunction(oticks)) - // generate the ticks - ticks = oticks(axis); - else - ticks = oticks; - } - - // clean up/labelify the supplied ticks, copy them over - var i, v; - axis.ticks = []; - for (i = 0; i < ticks.length; ++i) { - var label = null; - var t = ticks[i]; - if (typeof t == "object") { - v = +t[0]; - if (t.length > 1) - label = t[1]; - } - else - v = +t; - if (label == null) - label = axis.tickFormatter(v, axis); - if (!isNaN(v)) - axis.ticks.push({ v: v, label: label }); - } - } - - function snapRangeToTicks(axis, ticks) { - if (axis.options.autoscaleMargin && ticks.length > 0) { - // snap to ticks - if (axis.options.min == null) - axis.min = Math.min(axis.min, ticks[0].v); - if (axis.options.max == null && ticks.length > 1) - axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); - } - } - - function draw() { - - surface.clear(); - - executeHooks(hooks.drawBackground, [ctx]); - - var grid = options.grid; - - // draw background, if any - if (grid.show && grid.backgroundColor) - drawBackground(); - - if (grid.show && !grid.aboveData) { - drawGrid(); - } - - for (var i = 0; i < series.length; ++i) { - executeHooks(hooks.drawSeries, [ctx, series[i]]); - drawSeries(series[i]); - } - - executeHooks(hooks.draw, [ctx]); - - if (grid.show && grid.aboveData) { - drawGrid(); - } - - surface.render(); - - // A draw implies that either the axes or data have changed, so we - // should probably update the overlay highlights as well. - - triggerRedrawOverlay(); - } - - function extractRange(ranges, coord) { - var axis, from, to, key, axes = allAxes(); - - for (var i = 0; i < axes.length; ++i) { - axis = axes[i]; - if (axis.direction == coord) { - key = coord + axis.n + "axis"; - if (!ranges[key] && axis.n == 1) - key = coord + "axis"; // support x1axis as xaxis - if (ranges[key]) { - from = ranges[key].from; - to = ranges[key].to; - break; - } - } - } - - // backwards-compat stuff - to be removed in future - if (!ranges[key]) { - axis = coord == "x" ? xaxes[0] : yaxes[0]; - from = ranges[coord + "1"]; - to = ranges[coord + "2"]; - } - - // auto-reverse as an added bonus - if (from != null && to != null && from > to) { - var tmp = from; - from = to; - to = tmp; - } - - return { from: from, to: to, axis: axis }; - } - - function drawBackground() { - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); - ctx.fillRect(0, 0, plotWidth, plotHeight); - ctx.restore(); - } - - function drawGrid() { - var i, axes, bw, bc; - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // draw markings - var markings = options.grid.markings; - if (markings) { - if ($.isFunction(markings)) { - axes = plot.getAxes(); - // xmin etc. is backwards compatibility, to be - // removed in the future - axes.xmin = axes.xaxis.min; - axes.xmax = axes.xaxis.max; - axes.ymin = axes.yaxis.min; - axes.ymax = axes.yaxis.max; - - markings = markings(axes); - } - - for (i = 0; i < markings.length; ++i) { - var m = markings[i], - xrange = extractRange(m, "x"), - yrange = extractRange(m, "y"); - - // fill in missing - if (xrange.from == null) - xrange.from = xrange.axis.min; - if (xrange.to == null) - xrange.to = xrange.axis.max; - if (yrange.from == null) - yrange.from = yrange.axis.min; - if (yrange.to == null) - yrange.to = yrange.axis.max; - - // clip - if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || - yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) - continue; - - xrange.from = Math.max(xrange.from, xrange.axis.min); - xrange.to = Math.min(xrange.to, xrange.axis.max); - yrange.from = Math.max(yrange.from, yrange.axis.min); - yrange.to = Math.min(yrange.to, yrange.axis.max); - - var xequal = xrange.from === xrange.to, - yequal = yrange.from === yrange.to; - - if (xequal && yequal) { - continue; - } - - // then draw - xrange.from = Math.floor(xrange.axis.p2c(xrange.from)); - xrange.to = Math.floor(xrange.axis.p2c(xrange.to)); - yrange.from = Math.floor(yrange.axis.p2c(yrange.from)); - yrange.to = Math.floor(yrange.axis.p2c(yrange.to)); - - if (xequal || yequal) { - var lineWidth = m.lineWidth || options.grid.markingsLineWidth, - subPixel = lineWidth % 2 ? 0.5 : 0; - ctx.beginPath(); - ctx.strokeStyle = m.color || options.grid.markingsColor; - ctx.lineWidth = lineWidth; - if (xequal) { - ctx.moveTo(xrange.to + subPixel, yrange.from); - ctx.lineTo(xrange.to + subPixel, yrange.to); - } else { - ctx.moveTo(xrange.from, yrange.to + subPixel); - ctx.lineTo(xrange.to, yrange.to + subPixel); - } - ctx.stroke(); - } else { - ctx.fillStyle = m.color || options.grid.markingsColor; - ctx.fillRect(xrange.from, yrange.to, - xrange.to - xrange.from, - yrange.from - yrange.to); - } - } - } - - // draw the ticks - axes = allAxes(); - bw = options.grid.borderWidth; - - for (var j = 0; j < axes.length; ++j) { - var axis = axes[j], box = axis.box, - t = axis.tickLength, x, y, xoff, yoff; - if (!axis.show || axis.ticks.length == 0) - continue; - - ctx.lineWidth = 1; - - // find the edges - if (axis.direction == "x") { - x = 0; - if (t == "full") - y = (axis.position == "top" ? 0 : plotHeight); - else - y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); - } - else { - y = 0; - if (t == "full") - x = (axis.position == "left" ? 0 : plotWidth); - else - x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); - } - - // draw tick bar - if (!axis.innermost) { - ctx.strokeStyle = axis.options.color; - ctx.beginPath(); - xoff = yoff = 0; - if (axis.direction == "x") - xoff = plotWidth + 1; - else - yoff = plotHeight + 1; - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") { - y = Math.floor(y) + 0.5; - } else { - x = Math.floor(x) + 0.5; - } - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - ctx.stroke(); - } - - // draw ticks - - ctx.strokeStyle = axis.options.tickColor; - - ctx.beginPath(); - for (i = 0; i < axis.ticks.length; ++i) { - var v = axis.ticks[i].v; - - xoff = yoff = 0; - - if (isNaN(v) || v < axis.min || v > axis.max - // skip those lying on the axes if we got a border - || (t == "full" - && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) - && (v == axis.min || v == axis.max))) - continue; - - if (axis.direction == "x") { - x = axis.p2c(v); - yoff = t == "full" ? -plotHeight : t; - - if (axis.position == "top") - yoff = -yoff; - } - else { - y = axis.p2c(v); - xoff = t == "full" ? -plotWidth : t; - - if (axis.position == "left") - xoff = -xoff; - } - - if (ctx.lineWidth == 1) { - if (axis.direction == "x") - x = Math.floor(x) + 0.5; - else - y = Math.floor(y) + 0.5; - } - - ctx.moveTo(x, y); - ctx.lineTo(x + xoff, y + yoff); - } - - ctx.stroke(); - } - - - // draw border - if (bw) { - // If either borderWidth or borderColor is an object, then draw the border - // line by line instead of as one rectangle - bc = options.grid.borderColor; - if(typeof bw == "object" || typeof bc == "object") { - if (typeof bw !== "object") { - bw = {top: bw, right: bw, bottom: bw, left: bw}; - } - if (typeof bc !== "object") { - bc = {top: bc, right: bc, bottom: bc, left: bc}; - } - - if (bw.top > 0) { - ctx.strokeStyle = bc.top; - ctx.lineWidth = bw.top; - ctx.beginPath(); - ctx.moveTo(0 - bw.left, 0 - bw.top/2); - ctx.lineTo(plotWidth, 0 - bw.top/2); - ctx.stroke(); - } - - if (bw.right > 0) { - ctx.strokeStyle = bc.right; - ctx.lineWidth = bw.right; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); - ctx.lineTo(plotWidth + bw.right / 2, plotHeight); - ctx.stroke(); - } - - if (bw.bottom > 0) { - ctx.strokeStyle = bc.bottom; - ctx.lineWidth = bw.bottom; - ctx.beginPath(); - ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); - ctx.lineTo(0, plotHeight + bw.bottom / 2); - ctx.stroke(); - } - - if (bw.left > 0) { - ctx.strokeStyle = bc.left; - ctx.lineWidth = bw.left; - ctx.beginPath(); - ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); - ctx.lineTo(0- bw.left/2, 0); - ctx.stroke(); - } - } - else { - ctx.lineWidth = bw; - ctx.strokeStyle = options.grid.borderColor; - ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); - } - } - - ctx.restore(); - } - - function drawAxisLabels() { - - $.each(allAxes(), function (_, axis) { - var box = axis.box, - legacyStyles = axis.direction + "Axis " + axis.direction + axis.n + "Axis", - layer = "flot-" + axis.direction + "-axis flot-" + axis.direction + axis.n + "-axis " + legacyStyles, - font = axis.options.font || "flot-tick-label tickLabel", - tick, x, y, halign, valign; - - // Remove text before checking for axis.show and ticks.length; - // otherwise plugins, like flot-tickrotor, that draw their own - // tick labels will end up with both theirs and the defaults. - - surface.removeText(layer); - - if (!axis.show || axis.ticks.length == 0) - return; - - for (var i = 0; i < axis.ticks.length; ++i) { - - tick = axis.ticks[i]; - if (!tick.label || tick.v < axis.min || tick.v > axis.max) - continue; - - if (axis.direction == "x") { - halign = "center"; - x = plotOffset.left + axis.p2c(tick.v); - if (axis.position == "bottom") { - y = box.top + box.padding; - } else { - y = box.top + box.height - box.padding; - valign = "bottom"; - } - } else { - valign = "middle"; - y = plotOffset.top + axis.p2c(tick.v); - if (axis.position == "left") { - x = box.left + box.width - box.padding; - halign = "right"; - } else { - x = box.left + box.padding; - } - } - - surface.addText(layer, x, y, tick.label, font, null, null, halign, valign); - } - }); - } - - function drawSeries(series) { - if (series.lines.show) - drawSeriesLines(series); - if (series.bars.show) - drawSeriesBars(series); - if (series.points.show) - drawSeriesPoints(series); - } - - function drawSeriesLines(series) { - function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - prevx = null, prevy = null; - - ctx.beginPath(); - for (var i = ps; i < points.length; i += ps) { - var x1 = points[i - ps], y1 = points[i - ps + 1], - x2 = points[i], y2 = points[i + 1]; - - if (x1 == null || x2 == null) - continue; - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min) { - if (y2 < axisy.min) - continue; // line segment is outside - // compute new intersection point - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min) { - if (y1 < axisy.min) - continue; - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max) { - if (y2 > axisy.max) - continue; - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max) { - if (y1 > axisy.max) - continue; - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (x1 != prevx || y1 != prevy) - ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); - - prevx = x2; - prevy = y2; - ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); - } - ctx.stroke(); - } - - function plotLineArea(datapoints, axisx, axisy) { - var points = datapoints.points, - ps = datapoints.pointsize, - bottom = Math.min(Math.max(0, axisy.min), axisy.max), - i = 0, top, areaOpen = false, - ypos = 1, segmentStart = 0, segmentEnd = 0; - - // we process each segment in two turns, first forward - // direction to sketch out top, then once we hit the - // end we go backwards to sketch the bottom - while (true) { - if (ps > 0 && i > points.length + ps) - break; - - i += ps; // ps is negative if going backwards - - var x1 = points[i - ps], - y1 = points[i - ps + ypos], - x2 = points[i], y2 = points[i + ypos]; - - if (areaOpen) { - if (ps > 0 && x1 != null && x2 == null) { - // at turning point - segmentEnd = i; - ps = -ps; - ypos = 2; - continue; - } - - if (ps < 0 && i == segmentStart + ps) { - // done with the reverse sweep - ctx.fill(); - areaOpen = false; - ps = -ps; - ypos = 1; - i = segmentStart = segmentEnd + ps; - continue; - } - } - - if (x1 == null || x2 == null) - continue; - - // clip x values - - // clip with xmin - if (x1 <= x2 && x1 < axisx.min) { - if (x2 < axisx.min) - continue; - y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.min; - } - else if (x2 <= x1 && x2 < axisx.min) { - if (x1 < axisx.min) - continue; - y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.min; - } - - // clip with xmax - if (x1 >= x2 && x1 > axisx.max) { - if (x2 > axisx.max) - continue; - y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x1 = axisx.max; - } - else if (x2 >= x1 && x2 > axisx.max) { - if (x1 > axisx.max) - continue; - y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; - x2 = axisx.max; - } - - if (!areaOpen) { - // open area - ctx.beginPath(); - ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); - areaOpen = true; - } - - // now first check the case where both is outside - if (y1 >= axisy.max && y2 >= axisy.max) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); - continue; - } - else if (y1 <= axisy.min && y2 <= axisy.min) { - ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); - continue; - } - - // else it's a bit more complicated, there might - // be a flat maxed out rectangle first, then a - // triangular cutout or reverse; to find these - // keep track of the current x values - var x1old = x1, x2old = x2; - - // clip the y values, without shortcutting, we - // go through all cases in turn - - // clip with ymin - if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { - x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.min; - } - else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { - x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.min; - } - - // clip with ymax - if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { - x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y1 = axisy.max; - } - else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { - x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; - y2 = axisy.max; - } - - // if the x value was changed we got a rectangle - // to fill - if (x1 != x1old) { - ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); - // it goes to (x1, y1), but we fill that below - } - - // fill triangular section, this sometimes result - // in redundant points if (x1, y1) hasn't changed - // from previous line to, but we just ignore that - ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - - // fill the other rectangle if it's there - if (x2 != x2old) { - ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); - ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); - } - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - ctx.lineJoin = "round"; - - var lw = series.lines.lineWidth, - sw = series.shadowSize; - // FIXME: consider another form of shadow when filling is turned on - if (lw > 0 && sw > 0) { - // draw shadow as a thick and thin line with transparency - ctx.lineWidth = sw; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - // position shadow at angle from the mid of line - var angle = Math.PI/18; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); - ctx.lineWidth = sw/2; - plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); - if (fillStyle) { - ctx.fillStyle = fillStyle; - plotLineArea(series.datapoints, series.xaxis, series.yaxis); - } - - if (lw > 0) - plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); - ctx.restore(); - } - - function drawSeriesPoints(series) { - function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - var x = points[i], y = points[i + 1]; - if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - continue; - - ctx.beginPath(); - x = axisx.p2c(x); - y = axisy.p2c(y) + offset; - if (symbol == "circle") - ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); - else - symbol(ctx, x, y, radius, shadow); - ctx.closePath(); - - if (fillStyle) { - ctx.fillStyle = fillStyle; - ctx.fill(); - } - ctx.stroke(); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - var lw = series.points.lineWidth, - sw = series.shadowSize, - radius = series.points.radius, - symbol = series.points.symbol; - - // If the user sets the line width to 0, we change it to a very - // small value. A line width of 0 seems to force the default of 1. - // Doing the conditional here allows the shadow setting to still be - // optional even with a lineWidth of 0. - - if( lw == 0 ) - lw = 0.0001; - - if (lw > 0 && sw > 0) { - // draw shadow in two steps - var w = sw / 2; - ctx.lineWidth = w; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - plotPoints(series.datapoints, radius, null, w + w/2, true, - series.xaxis, series.yaxis, symbol); - - ctx.strokeStyle = "rgba(0,0,0,0.2)"; - plotPoints(series.datapoints, radius, null, w/2, true, - series.xaxis, series.yaxis, symbol); - } - - ctx.lineWidth = lw; - ctx.strokeStyle = series.color; - plotPoints(series.datapoints, radius, - getFillStyle(series.points, series.color), 0, false, - series.xaxis, series.yaxis, symbol); - ctx.restore(); - } - - function drawBar(x, y, b, barLeft, barRight, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { - var left, right, bottom, top, - drawLeft, drawRight, drawTop, drawBottom, - tmp; - - // in horizontal mode, we start the bar from the left - // instead of from the bottom so it appears to be - // horizontal rather than vertical - if (horizontal) { - drawBottom = drawRight = drawTop = true; - drawLeft = false; - left = b; - right = x; - top = y + barLeft; - bottom = y + barRight; - - // account for negative bars - if (right < left) { - tmp = right; - right = left; - left = tmp; - drawLeft = true; - drawRight = false; - } - } - else { - drawLeft = drawRight = drawTop = true; - drawBottom = false; - left = x + barLeft; - right = x + barRight; - bottom = b; - top = y; - - // account for negative bars - if (top < bottom) { - tmp = top; - top = bottom; - bottom = tmp; - drawBottom = true; - drawTop = false; - } - } - - // clip - if (right < axisx.min || left > axisx.max || - top < axisy.min || bottom > axisy.max) - return; - - if (left < axisx.min) { - left = axisx.min; - drawLeft = false; - } - - if (right > axisx.max) { - right = axisx.max; - drawRight = false; - } - - if (bottom < axisy.min) { - bottom = axisy.min; - drawBottom = false; - } - - if (top > axisy.max) { - top = axisy.max; - drawTop = false; - } - - left = axisx.p2c(left); - bottom = axisy.p2c(bottom); - right = axisx.p2c(right); - top = axisy.p2c(top); - - // fill the bar - if (fillStyleCallback) { - c.fillStyle = fillStyleCallback(bottom, top); - c.fillRect(left, top, right - left, bottom - top) - } - - // draw outline - if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { - c.beginPath(); - - // FIXME: inline moveTo is buggy with excanvas - c.moveTo(left, bottom); - if (drawLeft) - c.lineTo(left, top); - else - c.moveTo(left, top); - if (drawTop) - c.lineTo(right, top); - else - c.moveTo(right, top); - if (drawRight) - c.lineTo(right, bottom); - else - c.moveTo(right, bottom); - if (drawBottom) - c.lineTo(left, bottom); - else - c.moveTo(left, bottom); - c.stroke(); - } - } - - function drawSeriesBars(series) { - function plotBars(datapoints, barLeft, barRight, fillStyleCallback, axisx, axisy) { - var points = datapoints.points, ps = datapoints.pointsize; - - for (var i = 0; i < points.length; i += ps) { - if (points[i] == null) - continue; - drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); - } - } - - ctx.save(); - ctx.translate(plotOffset.left, plotOffset.top); - - // FIXME: figure out a way to add shadows (for instance along the right edge) - ctx.lineWidth = series.bars.lineWidth; - ctx.strokeStyle = series.color; - - var barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; - plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, fillStyleCallback, series.xaxis, series.yaxis); - ctx.restore(); - } - - function getFillStyle(filloptions, seriesColor, bottom, top) { - var fill = filloptions.fill; - if (!fill) - return null; - - if (filloptions.fillColor) - return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); - - var c = $.color.parse(seriesColor); - c.a = typeof fill == "number" ? fill : 0.4; - c.normalize(); - return c.toString(); - } - - function insertLegend() { - - if (options.legend.container != null) { - $(options.legend.container).html(""); - } else { - placeholder.find(".legend").remove(); - } - - if (!options.legend.show) { - return; - } - - var fragments = [], entries = [], rowStarted = false, - lf = options.legend.labelFormatter, s, label; - - // Build a list of legend entries, with each having a label and a color - - for (var i = 0; i < series.length; ++i) { - s = series[i]; - if (s.label) { - label = lf ? lf(s.label, s) : s.label; - if (label) { - entries.push({ - label: label, - color: s.color - }); - } - } - } - - // Sort the legend using either the default or a custom comparator - - if (options.legend.sorted) { - if ($.isFunction(options.legend.sorted)) { - entries.sort(options.legend.sorted); - } else if (options.legend.sorted == "reverse") { - entries.reverse(); - } else { - var ascending = options.legend.sorted != "descending"; - entries.sort(function(a, b) { - return a.label == b.label ? 0 : ( - (a.label < b.label) != ascending ? 1 : -1 // Logical XOR - ); - }); - } - } - - // Generate markup for the list of entries, in their final order - - for (var i = 0; i < entries.length; ++i) { - - var entry = entries[i]; - - if (i % options.legend.noColumns == 0) { - if (rowStarted) - fragments.push('</tr>'); - fragments.push('<tr>'); - rowStarted = true; - } - - fragments.push( - '<td class="legendColorBox"><div style="border:1px solid ' + options.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + entry.color + ';overflow:hidden"></div></div></td>' + - '<td class="legendLabel">' + entry.label + '</td>' - ); - } - - if (rowStarted) - fragments.push('</tr>'); - - if (fragments.length == 0) - return; - - var table = '<table style="font-size:smaller;color:' + options.grid.color + '">' + fragments.join("") + '</table>'; - if (options.legend.container != null) - $(options.legend.container).html(table); - else { - var pos = "", - p = options.legend.position, - m = options.legend.margin; - if (m[0] == null) - m = [m, m]; - if (p.charAt(0) == "n") - pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; - else if (p.charAt(0) == "s") - pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; - if (p.charAt(1) == "e") - pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; - else if (p.charAt(1) == "w") - pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; - var legend = $('<div class="legend">' + table.replace('style="', 'style="position:absolute;' + pos +';') + '</div>').appendTo(placeholder); - if (options.legend.backgroundOpacity != 0.0) { - // put in the transparent background - // separately to avoid blended labels and - // label boxes - var c = options.legend.backgroundColor; - if (c == null) { - c = options.grid.backgroundColor; - if (c && typeof c == "string") - c = $.color.parse(c); - else - c = $.color.extract(legend, 'background-color'); - c.a = 1; - c = c.toString(); - } - var div = legend.children(); - $('<div style="position:absolute;width:' + div.width() + 'px;height:' + div.height() + 'px;' + pos +'background-color:' + c + ';"> </div>').prependTo(legend).css('opacity', options.legend.backgroundOpacity); - } - } - } - - - // interactive features - - var highlights = [], - redrawTimeout = null; - - // returns the data item the mouse is over, or null if none is found - function findNearbyItem(mouseX, mouseY, seriesFilter) { - var maxDistance = options.grid.mouseActiveRadius, - smallestDistance = maxDistance * maxDistance + 1, - item = null, foundPoint = false, i, j, ps; - - for (i = series.length - 1; i >= 0; --i) { - if (!seriesFilter(series[i])) - continue; - - var s = series[i], - axisx = s.xaxis, - axisy = s.yaxis, - points = s.datapoints.points, - mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster - my = axisy.c2p(mouseY), - maxx = maxDistance / axisx.scale, - maxy = maxDistance / axisy.scale; - - ps = s.datapoints.pointsize; - // with inverse transforms, we can't use the maxx/maxy - // optimization, sadly - if (axisx.options.inverseTransform) - maxx = Number.MAX_VALUE; - if (axisy.options.inverseTransform) - maxy = Number.MAX_VALUE; - - if (s.lines.show || s.points.show) { - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1]; - if (x == null) - continue; - - // For points and lines, the cursor must be within a - // certain distance to the data point - if (x - mx > maxx || x - mx < -maxx || - y - my > maxy || y - my < -maxy) - continue; - - // We have to calculate distances in pixels, not in - // data units, because the scales of the axes may be different - var dx = Math.abs(axisx.p2c(x) - mouseX), - dy = Math.abs(axisy.p2c(y) - mouseY), - dist = dx * dx + dy * dy; // we save the sqrt - - // use <= to ensure last point takes precedence - // (last generally means on top of) - if (dist < smallestDistance) { - smallestDistance = dist; - item = [i, j / ps]; - } - } - } - - if (s.bars.show && !item) { // no other point can be nearby - - var barLeft, barRight; - - switch (s.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -s.bars.barWidth; - break; - default: - barLeft = -s.bars.barWidth / 2; - } - - barRight = barLeft + s.bars.barWidth; - - for (j = 0; j < points.length; j += ps) { - var x = points[j], y = points[j + 1], b = points[j + 2]; - if (x == null) - continue; - - // for a bar graph, the cursor must be inside the bar - if (series[i].bars.horizontal ? - (mx <= Math.max(b, x) && mx >= Math.min(b, x) && - my >= y + barLeft && my <= y + barRight) : - (mx >= x + barLeft && mx <= x + barRight && - my >= Math.min(b, y) && my <= Math.max(b, y))) - item = [i, j / ps]; - } - } - } - - if (item) { - i = item[0]; - j = item[1]; - ps = series[i].datapoints.pointsize; - - return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), - dataIndex: j, - series: series[i], - seriesIndex: i }; - } - - return null; - } - - function onMouseMove(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return s["hoverable"] != false; }); - } - - function onMouseLeave(e) { - if (options.grid.hoverable) - triggerClickHoverEvent("plothover", e, - function (s) { return false; }); - } - - function onClick(e) { - triggerClickHoverEvent("plotclick", e, - function (s) { return s["clickable"] != false; }); - } - - // trigger click or hover event (they send the same parameters - // so we share their code) - function triggerClickHoverEvent(eventname, event, seriesFilter) { - var offset = eventHolder.offset(), - canvasX = event.pageX - offset.left - plotOffset.left, - canvasY = event.pageY - offset.top - plotOffset.top, - pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); - - pos.pageX = event.pageX; - pos.pageY = event.pageY; - - var item = findNearbyItem(canvasX, canvasY, seriesFilter); - - if (item) { - // fill in mouse pos for any listeners out there - item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); - item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); - } - - if (options.grid.autoHighlight) { - // clear auto-highlights - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.auto == eventname && - !(item && h.series == item.series && - h.point[0] == item.datapoint[0] && - h.point[1] == item.datapoint[1])) - unhighlight(h.series, h.point); - } - - if (item) - highlight(item.series, item.datapoint, eventname); - } - - placeholder.trigger(eventname, [ pos, item ]); - } - - function triggerRedrawOverlay() { - var t = options.interaction.redrawOverlayInterval; - if (t == -1) { // skip event queue - drawOverlay(); - return; - } - - if (!redrawTimeout) - redrawTimeout = setTimeout(drawOverlay, t); - } - - function drawOverlay() { - redrawTimeout = null; - - // draw highlights - octx.save(); - overlay.clear(); - octx.translate(plotOffset.left, plotOffset.top); - - var i, hi; - for (i = 0; i < highlights.length; ++i) { - hi = highlights[i]; - - if (hi.series.bars.show) - drawBarHighlight(hi.series, hi.point); - else - drawPointHighlight(hi.series, hi.point); - } - octx.restore(); - - executeHooks(hooks.drawOverlay, [octx]); - } - - function highlight(s, point, auto) { - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i == -1) { - highlights.push({ series: s, point: point, auto: auto }); - - triggerRedrawOverlay(); - } - else if (!auto) - highlights[i].auto = false; - } - - function unhighlight(s, point) { - if (s == null && point == null) { - highlights = []; - triggerRedrawOverlay(); - return; - } - - if (typeof s == "number") - s = series[s]; - - if (typeof point == "number") { - var ps = s.datapoints.pointsize; - point = s.datapoints.points.slice(ps * point, ps * (point + 1)); - } - - var i = indexOfHighlight(s, point); - if (i != -1) { - highlights.splice(i, 1); - - triggerRedrawOverlay(); - } - } - - function indexOfHighlight(s, p) { - for (var i = 0; i < highlights.length; ++i) { - var h = highlights[i]; - if (h.series == s && h.point[0] == p[0] - && h.point[1] == p[1]) - return i; - } - return -1; - } - - function drawPointHighlight(series, point) { - var x = point[0], y = point[1], - axisx = series.xaxis, axisy = series.yaxis, - highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); - - if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) - return; - - var pointRadius = series.points.radius + series.points.lineWidth / 2; - octx.lineWidth = pointRadius; - octx.strokeStyle = highlightColor; - var radius = 1.5 * pointRadius; - x = axisx.p2c(x); - y = axisy.p2c(y); - - octx.beginPath(); - if (series.points.symbol == "circle") - octx.arc(x, y, radius, 0, 2 * Math.PI, false); - else - series.points.symbol(octx, x, y, radius, false); - octx.closePath(); - octx.stroke(); - } - - function drawBarHighlight(series, point) { - var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), - fillStyle = highlightColor, - barLeft; - - switch (series.bars.align) { - case "left": - barLeft = 0; - break; - case "right": - barLeft = -series.bars.barWidth; - break; - default: - barLeft = -series.bars.barWidth / 2; - } - - octx.lineWidth = series.bars.lineWidth; - octx.strokeStyle = highlightColor; - - drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, - function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); - } - - function getColorOrGradient(spec, bottom, top, defaultColor) { - if (typeof spec == "string") - return spec; - else { - // assume this is a gradient spec; IE currently only - // supports a simple vertical gradient properly, so that's - // what we support too - var gradient = ctx.createLinearGradient(0, top, 0, bottom); - - for (var i = 0, l = spec.colors.length; i < l; ++i) { - var c = spec.colors[i]; - if (typeof c != "string") { - var co = $.color.parse(defaultColor); - if (c.brightness != null) - co = co.scale('rgb', c.brightness); - if (c.opacity != null) - co.a *= c.opacity; - c = co.toString(); - } - gradient.addColorStop(i / (l - 1), c); - } - - return gradient; - } - } - } - - // Add the plot function to the top level of the jQuery object - - $.plot = function(placeholder, data, options) { - //var t0 = new Date(); - var plot = new Plot($(placeholder), data, options, $.plot.plugins); - //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); - return plot; - }; - - $.plot.version = "0.8.3"; - - $.plot.plugins = []; - - // Also add the plot function as a chainable property - - $.fn.plot = function(data, options) { - return this.each(function() { - $.plot(this, data, options); - }); - }; - - // round to nearby lower multiple of base - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - -})(jQuery); diff --git a/dashboard/lib/flot/jquery.flot.resize.js b/dashboard/lib/flot/jquery.flot.resize.js deleted file mode 100644 index 8a626dda..00000000 --- a/dashboard/lib/flot/jquery.flot.resize.js +++ /dev/null @@ -1,59 +0,0 @@ -/* Flot plugin for automatically redrawing plots as the placeholder resizes. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -It works by listening for changes on the placeholder div (through the jQuery -resize event plugin) - if the size changes, it will redraw the plot. - -There are no options. If you need to disable the plugin for some plots, you -can just fix the size of their placeholders. - -*/ - -/* Inline dependency: - * jQuery resize event - v1.1 - 3/14/2010 - * http://benalman.com/projects/jquery-resize-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this); - -(function ($) { - var options = { }; // no options - - function init(plot) { - function onResize() { - var placeholder = plot.getPlaceholder(); - - // somebody might have hidden us and we can't plot - // when we don't have the dimensions - if (placeholder.width() == 0 || placeholder.height() == 0) - return; - - plot.resize(); - plot.setupGrid(); - plot.draw(); - } - - function bindEvents(plot, eventHolder) { - plot.getPlaceholder().resize(onResize); - } - - function shutdown(plot, eventHolder) { - plot.getPlaceholder().unbind("resize", onResize); - } - - plot.hooks.bindEvents.push(bindEvents); - plot.hooks.shutdown.push(shutdown); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'resize', - version: '1.0' - }); -})(jQuery); diff --git a/dashboard/lib/flot/jquery.flot.time.js b/dashboard/lib/flot/jquery.flot.time.js deleted file mode 100644 index 34c1d121..00000000 --- a/dashboard/lib/flot/jquery.flot.time.js +++ /dev/null @@ -1,432 +0,0 @@ -/* Pretty handling of time axes. - -Copyright (c) 2007-2014 IOLA and Ole Laursen. -Licensed under the MIT license. - -Set axis.mode to "time" to enable. See the section "Time series data" in -API.txt for details. - -*/ - -(function($) { - - var options = { - xaxis: { - timezone: null, // "browser" for local to the client or timezone for timezone-js - timeformat: null, // format string to use - twelveHourClock: false, // 12 or 24 time in time mode - monthNames: null // list of names of months - } - }; - - // round to nearby lower multiple of base - - function floorInBase(n, base) { - return base * Math.floor(n / base); - } - - // Returns a string with the date d formatted according to fmt. - // A subset of the Open Group's strftime format is supported. - - function formatDate(d, fmt, monthNames, dayNames) { - - if (typeof d.strftime == "function") { - return d.strftime(fmt); - } - - var leftPad = function(n, pad) { - n = "" + n; - pad = "" + (pad == null ? "0" : pad); - return n.length == 1 ? pad + n : n; - }; - - var r = []; - var escape = false; - var hours = d.getHours(); - var isAM = hours < 12; - - if (monthNames == null) { - monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - } - - if (dayNames == null) { - dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - } - - var hours12; - - if (hours > 12) { - hours12 = hours - 12; - } else if (hours == 0) { - hours12 = 12; - } else { - hours12 = hours; - } - - for (var i = 0; i < fmt.length; ++i) { - - var c = fmt.charAt(i); - - if (escape) { - switch (c) { - case 'a': c = "" + dayNames[d.getDay()]; break; - case 'b': c = "" + monthNames[d.getMonth()]; break; - case 'd': c = leftPad(d.getDate()); break; - case 'e': c = leftPad(d.getDate(), " "); break; - case 'h': // For back-compat with 0.7; remove in 1.0 - case 'H': c = leftPad(hours); break; - case 'I': c = leftPad(hours12); break; - case 'l': c = leftPad(hours12, " "); break; - case 'm': c = leftPad(d.getMonth() + 1); break; - case 'M': c = leftPad(d.getMinutes()); break; - // quarters not in Open Group's strftime specification - case 'q': - c = "" + (Math.floor(d.getMonth() / 3) + 1); break; - case 'S': c = leftPad(d.getSeconds()); break; - case 'y': c = leftPad(d.getFullYear() % 100); break; - case 'Y': c = "" + d.getFullYear(); break; - case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; - case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; - case 'w': c = "" + d.getDay(); break; - } - r.push(c); - escape = false; - } else { - if (c == "%") { - escape = true; - } else { - r.push(c); - } - } - } - - return r.join(""); - } - - // To have a consistent view of time-based data independent of which time - // zone the client happens to be in we need a date-like object independent - // of time zones. This is done through a wrapper that only calls the UTC - // versions of the accessor methods. - - function makeUtcWrapper(d) { - - function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { - sourceObj[sourceMethod] = function() { - return targetObj[targetMethod].apply(targetObj, arguments); - }; - }; - - var utc = { - date: d - }; - - // support strftime, if found - - if (d.strftime != undefined) { - addProxyMethod(utc, "strftime", d, "strftime"); - } - - addProxyMethod(utc, "getTime", d, "getTime"); - addProxyMethod(utc, "setTime", d, "setTime"); - - var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; - - for (var p = 0; p < props.length; p++) { - addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); - addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); - } - - return utc; - }; - - // select time zone strategy. This returns a date-like object tied to the - // desired timezone - - function dateGenerator(ts, opts) { - if (opts.timezone == "browser") { - return new Date(ts); - } else if (!opts.timezone || opts.timezone == "utc") { - return makeUtcWrapper(new Date(ts)); - } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { - var d = new timezoneJS.Date(); - // timezone-js is fickle, so be sure to set the time zone before - // setting the time. - d.setTimezone(opts.timezone); - d.setTime(ts); - return d; - } else { - return makeUtcWrapper(new Date(ts)); - } - } - - // map of app. size of time units in milliseconds - - var timeUnitSize = { - "second": 1000, - "minute": 60 * 1000, - "hour": 60 * 60 * 1000, - "day": 24 * 60 * 60 * 1000, - "month": 30 * 24 * 60 * 60 * 1000, - "quarter": 3 * 30 * 24 * 60 * 60 * 1000, - "year": 365.2425 * 24 * 60 * 60 * 1000 - }; - - // the allowed tick sizes, after 1 year we use - // an integer algorithm - - var baseSpec = [ - [1, "second"], [2, "second"], [5, "second"], [10, "second"], - [30, "second"], - [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], - [30, "minute"], - [1, "hour"], [2, "hour"], [4, "hour"], - [8, "hour"], [12, "hour"], - [1, "day"], [2, "day"], [3, "day"], - [0.25, "month"], [0.5, "month"], [1, "month"], - [2, "month"] - ]; - - // we don't know which variant(s) we'll need yet, but generating both is - // cheap - - var specMonths = baseSpec.concat([[3, "month"], [6, "month"], - [1, "year"]]); - var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], - [1, "year"]]); - - function init(plot) { - plot.hooks.processOptions.push(function (plot, options) { - $.each(plot.getAxes(), function(axisName, axis) { - - var opts = axis.options; - - if (opts.mode == "time") { - axis.tickGenerator = function(axis) { - - var ticks = []; - var d = dateGenerator(axis.min, opts); - var minSize = 0; - - // make quarter use a possibility if quarters are - // mentioned in either of these options - - var spec = (opts.tickSize && opts.tickSize[1] === - "quarter") || - (opts.minTickSize && opts.minTickSize[1] === - "quarter") ? specQuarters : specMonths; - - if (opts.minTickSize != null) { - if (typeof opts.tickSize == "number") { - minSize = opts.tickSize; - } else { - minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; - } - } - - for (var i = 0; i < spec.length - 1; ++i) { - if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] - + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 - && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { - break; - } - } - - var size = spec[i][0]; - var unit = spec[i][1]; - - // special-case the possibility of several years - - if (unit == "year") { - - // if given a minTickSize in years, just use it, - // ensuring that it's an integer - - if (opts.minTickSize != null && opts.minTickSize[1] == "year") { - size = Math.floor(opts.minTickSize[0]); - } else { - - var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); - var norm = (axis.delta / timeUnitSize.year) / magn; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - } - - // minimum size for years is 1 - - if (size < 1) { - size = 1; - } - } - - axis.tickSize = opts.tickSize || [size, unit]; - var tickSize = axis.tickSize[0]; - unit = axis.tickSize[1]; - - var step = tickSize * timeUnitSize[unit]; - - if (unit == "second") { - d.setSeconds(floorInBase(d.getSeconds(), tickSize)); - } else if (unit == "minute") { - d.setMinutes(floorInBase(d.getMinutes(), tickSize)); - } else if (unit == "hour") { - d.setHours(floorInBase(d.getHours(), tickSize)); - } else if (unit == "month") { - d.setMonth(floorInBase(d.getMonth(), tickSize)); - } else if (unit == "quarter") { - d.setMonth(3 * floorInBase(d.getMonth() / 3, - tickSize)); - } else if (unit == "year") { - d.setFullYear(floorInBase(d.getFullYear(), tickSize)); - } - - // reset smaller components - - d.setMilliseconds(0); - - if (step >= timeUnitSize.minute) { - d.setSeconds(0); - } - if (step >= timeUnitSize.hour) { - d.setMinutes(0); - } - if (step >= timeUnitSize.day) { - d.setHours(0); - } - if (step >= timeUnitSize.day * 4) { - d.setDate(1); - } - if (step >= timeUnitSize.month * 2) { - d.setMonth(floorInBase(d.getMonth(), 3)); - } - if (step >= timeUnitSize.quarter * 2) { - d.setMonth(floorInBase(d.getMonth(), 6)); - } - if (step >= timeUnitSize.year) { - d.setMonth(0); - } - - var carry = 0; - var v = Number.NaN; - var prev; - - do { - - prev = v; - v = d.getTime(); - ticks.push(v); - - if (unit == "month" || unit == "quarter") { - if (tickSize < 1) { - - // a bit complicated - we'll divide the - // month/quarter up but we need to take - // care of fractions so we don't end up in - // the middle of a day - - d.setDate(1); - var start = d.getTime(); - d.setMonth(d.getMonth() + - (unit == "quarter" ? 3 : 1)); - var end = d.getTime(); - d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); - carry = d.getHours(); - d.setHours(0); - } else { - d.setMonth(d.getMonth() + - tickSize * (unit == "quarter" ? 3 : 1)); - } - } else if (unit == "year") { - d.setFullYear(d.getFullYear() + tickSize); - } else { - d.setTime(v + step); - } - } while (v < axis.max && v != prev); - - return ticks; - }; - - axis.tickFormatter = function (v, axis) { - - var d = dateGenerator(v, axis.options); - - // first check global format - - if (opts.timeformat != null) { - return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); - } - - // possibly use quarters if quarters are mentioned in - // any of these places - - var useQuarters = (axis.options.tickSize && - axis.options.tickSize[1] == "quarter") || - (axis.options.minTickSize && - axis.options.minTickSize[1] == "quarter"); - - var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; - var span = axis.max - axis.min; - var suffix = (opts.twelveHourClock) ? " %p" : ""; - var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; - var fmt; - - if (t < timeUnitSize.minute) { - fmt = hourCode + ":%M:%S" + suffix; - } else if (t < timeUnitSize.day) { - if (span < 2 * timeUnitSize.day) { - fmt = hourCode + ":%M" + suffix; - } else { - fmt = "%b %d " + hourCode + ":%M" + suffix; - } - } else if (t < timeUnitSize.month) { - fmt = "%b %d"; - } else if ((useQuarters && t < timeUnitSize.quarter) || - (!useQuarters && t < timeUnitSize.year)) { - if (span < timeUnitSize.year) { - fmt = "%b"; - } else { - fmt = "%b %Y"; - } - } else if (useQuarters && t < timeUnitSize.year) { - if (span < timeUnitSize.year) { - fmt = "Q%q"; - } else { - fmt = "Q%q %Y"; - } - } else { - fmt = "%Y"; - } - - var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); - - return rt; - }; - } - }); - }); - } - - $.plot.plugins.push({ - init: init, - options: options, - name: 'time', - version: '1.0' - }); - - // Time-axis support used to be in Flot core, which exposed the - // formatDate function on the plot object. Various plugins depend - // on the function, so we need to re-expose it here. - - $.plot.formatDate = formatDate; - $.plot.dateGenerator = dateGenerator; - -})(jQuery); diff --git a/dashboard/lib/font-awesome/FontAwesome.otf b/dashboard/lib/font-awesome/FontAwesome.otf deleted file mode 100644 index d4de13e832d567ff29c5b4e9561b8c370348cc9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124988 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ÐT?>-5aYhU|+1c>&YMpPK5x#-mbV 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 CDx5C> diff --git a/dashboard/lib/font-awesome/font-awesome.css b/dashboard/lib/font-awesome/font-awesome.css deleted file mode 100644 index a209b42b..00000000 --- a/dashboard/lib/font-awesome/font-awesome.css +++ /dev/null @@ -1,2199 +0,0 @@ -/*! - * Font Awesome 4.6.3 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('fontawesome-webfont.eot?v=4.6.3'); - src: url('fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('fontawesome-webfont.woff?v=4.6.3') format('woff'), url('fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('fontawesome-webfont.svg?v=4.6.3#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-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"; -} -.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/dashboard/lib/font-awesome/fontawesome-webfont.eot b/dashboard/lib/font-awesome/fontawesome-webfont.eot deleted file mode 100644 index c7b00d2ba8896fd29de846b19f89fcf0d56ad152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76518 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%0A7dSkOOi@@JBNJ#6fTo95 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%0DyT{kunD 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⋙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 diff --git a/dashboard/lib/font-awesome/fontawesome-webfont.svg b/dashboard/lib/font-awesome/fontawesome-webfont.svg deleted file mode 100644 index 8b66187f..00000000 --- a/dashboard/lib/font-awesome/fontawesome-webfont.svg +++ /dev/null @@ -1,685 +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="	" horiz-adv-x="448" /> -<glyph unicode=" " horiz-adv-x="448" /> -<glyph unicode="¨" horiz-adv-x="1792" /> -<glyph unicode="©" horiz-adv-x="1792" /> -<glyph unicode="®" horiz-adv-x="1792" /> -<glyph unicode="´" horiz-adv-x="1792" /> -<glyph unicode="Æ" horiz-adv-x="1792" /> -<glyph unicode="Ø" horiz-adv-x="1792" /> -<glyph unicode=" " horiz-adv-x="768" /> -<glyph unicode=" " horiz-adv-x="1537" /> -<glyph unicode=" " horiz-adv-x="768" /> -<glyph unicode=" " horiz-adv-x="1537" /> -<glyph unicode=" " horiz-adv-x="512" /> -<glyph unicode=" " horiz-adv-x="384" /> -<glyph unicode=" " horiz-adv-x="256" /> -<glyph unicode=" " horiz-adv-x="256" /> -<glyph unicode=" " horiz-adv-x="192" /> -<glyph unicode=" " horiz-adv-x="307" /> -<glyph unicode=" " horiz-adv-x="85" /> -<glyph unicode=" " horiz-adv-x="307" /> -<glyph unicode=" " horiz-adv-x="384" /> -<glyph unicode="™" horiz-adv-x="1792" /> -<glyph unicode="∞" horiz-adv-x="1792" /> -<glyph unicode="≠" horiz-adv-x="1792" /> -<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4 q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4 t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16 q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24 q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -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.5 t-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 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12 q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270 q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5 t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317 q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" horiz-adv-x="1792" d="M441 864q32 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640 q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" horiz-adv-x="1024" d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" /> -<glyph unicode="" 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="" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5 q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96 q16 0 16 -16z" /> -<glyph unicode="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" horiz-adv-x="1792" d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111 q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" /> -<glyph unicode="" d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14 t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57 q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285 q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42 q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 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 M1600 640q0 -143 -55.5 -273.5t-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.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298 t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -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="" d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300 l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" /> -<glyph unicode="" d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5 t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5 t-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 103t-279.5 279.5t-103 385.5t103 385.5 t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457 q-67 -192 -92 -234q-16 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521 q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661 q3 -1 7 1t7 4l3 2q11 9 11 17z" /> -<glyph unicode="" horiz-adv-x="2304" d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10 t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5 t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5 h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96 t9.5 -70.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5 q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127 l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272 t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249 q-18 -19 -45 -19z" /> -<glyph unicode="" horiz-adv-x="2176" d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136 t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56 t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136 t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1792" d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72 t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45 t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4 q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" /> -<glyph unicode="" horiz-adv-x="2304" d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55 q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5 q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101 q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35 q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5 q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19 t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74 t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233 l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" /> -<glyph unicode="" d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2 q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10 q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 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="" horiz-adv-x="1535" d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5 l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5 q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9 q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37 t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38 l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147l-4 -4t-5 -4q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148q-34 23 -76 23 q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26l-12 224 q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5 q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841 q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5 q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5 q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" /> -<glyph unicode="" d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5 q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 43 17 117zM1536 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="" d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114 q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5 t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 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="" horiz-adv-x="1664" d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35 q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5 t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" /> -<glyph unicode="" d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115 q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15 t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 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.5h960 q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2304" d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7 q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158 q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" /> -<glyph unicode="" d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104 q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108 l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" /> -<glyph unicode="" horiz-adv-x="1664" d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5 t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5 t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114 q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50 q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5 t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46 q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5 q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177 t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" /> -<glyph unicode="" d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 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 585h109v110 h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 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="" d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5 q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/dashboard/lib/font-awesome/fontawesome-webfont.ttf b/dashboard/lib/font-awesome/fontawesome-webfont.ttf deleted file mode 100644 index f221e50a2ef60738ba30932d834530cdfe55cb3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152796 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 ALjV8( diff --git a/dashboard/lib/font-awesome/fontawesome-webfont.woff b/dashboard/lib/font-awesome/fontawesome-webfont.woff deleted file mode 100644 index 6e7483cf61b490c08ed644d6ef802c69472eb247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90412 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%0Ded40&XED0GYFoIh+AV*?9!MR5pBW?X_8Bp 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%0A5^V#1^G^y=WBu4!YwI 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 IH>08b4`|GD*#H0l diff --git a/dashboard/lib/font-awesome/fontawesome-webfont.woff2 b/dashboard/lib/font-awesome/fontawesome-webfont.woff2 deleted file mode 100644 index 7eb74fd127ee5eddf3b95fee6a20dc1684b0963b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71896 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≠dR0E9ICQ{-tcR;@{R^I5P#1GUH!p=-{c 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 diff --git a/dashboard/lib/ionicons/css/ionicons.css b/dashboard/lib/ionicons/css/ionicons.css deleted file mode 100644 index 885aa6bd..00000000 --- a/dashboard/lib/ionicons/css/ionicons.css +++ /dev/null @@ -1,1480 +0,0 @@ -@charset "UTF-8"; -/*! - Ionicons, v2.0.0 - Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ - https://twitter.com/benjsperry https://twitter.com/ionicframework - MIT License: https://github.com/driftyco/ionicons - - Android-style icons originally built by Google’s - Material Design Icons: https://github.com/google/material-design-icons - used under CC BY http://creativecommons.org/licenses/by/4.0/ - Modified icons to fit ionicon’s grid from original. -*/ -@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.0"); src: url("../fonts/ionicons.eot?v=2.0.0#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"), url("../fonts/ionicons.woff?v=2.0.0") format("woff"), url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg"); font-weight: normal; font-style: normal; } -.ion, .ionicons, .ion-alert:before, .ion-alert-circled:before, .ion-android-add:before, .ion-android-add-circle:before, .ion-android-alarm-clock:before, .ion-android-alert:before, .ion-android-apps:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down:before, .ion-android-arrow-dropdown:before, .ion-android-arrow-dropdown-circle:before, .ion-android-arrow-dropleft:before, .ion-android-arrow-dropleft-circle:before, .ion-android-arrow-dropright:before, .ion-android-arrow-dropright-circle:before, .ion-android-arrow-dropup:before, .ion-android-arrow-dropup-circle:before, .ion-android-arrow-forward:before, .ion-android-arrow-up:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .ion-android-person-add:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .ion-ios-arrow-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .ion-ios-book:before, .ion-ios-book-outline:before, .ion-ios-bookmarks:before, .ion-ios-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before, .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .ion-ios-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .ion-ios-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .ion-ios-pie:before, .ion-ios-pie-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } - -.ion-alert:before { content: "\f101"; } - -.ion-alert-circled:before { content: "\f100"; } - -.ion-android-add:before { content: "\f2c7"; } - -.ion-android-add-circle:before { content: "\f359"; } - -.ion-android-alarm-clock:before { content: "\f35a"; } - -.ion-android-alert:before { content: "\f35b"; } - -.ion-android-apps:before { content: "\f35c"; } - -.ion-android-archive:before { content: "\f2c9"; } - -.ion-android-arrow-back:before { content: "\f2ca"; } - -.ion-android-arrow-down:before { content: "\f35d"; } - -.ion-android-arrow-dropdown:before { content: "\f35f"; } - -.ion-android-arrow-dropdown-circle:before { content: "\f35e"; } - -.ion-android-arrow-dropleft:before { content: "\f361"; } - -.ion-android-arrow-dropleft-circle:before { content: "\f360"; } - -.ion-android-arrow-dropright:before { content: "\f363"; } - -.ion-android-arrow-dropright-circle:before { content: "\f362"; } - -.ion-android-arrow-dropup:before { content: "\f365"; } - -.ion-android-arrow-dropup-circle:before { content: "\f364"; } - -.ion-android-arrow-forward:before { content: "\f30f"; } - -.ion-android-arrow-up:before { content: "\f366"; } - -.ion-android-attach:before { content: "\f367"; } - -.ion-android-bar:before { content: "\f368"; } - -.ion-android-bicycle:before { content: "\f369"; } - -.ion-android-boat:before { content: "\f36a"; } - -.ion-android-bookmark:before { content: "\f36b"; } - -.ion-android-bulb:before { content: "\f36c"; } - -.ion-android-bus:before { content: "\f36d"; } - -.ion-android-calendar:before { content: "\f2d1"; } - -.ion-android-call:before { content: "\f2d2"; } - -.ion-android-camera:before { content: "\f2d3"; } - -.ion-android-cancel:before { content: "\f36e"; } - -.ion-android-car:before { content: "\f36f"; } - -.ion-android-cart:before { content: "\f370"; } - -.ion-android-chat:before { content: "\f2d4"; } - -.ion-android-checkbox:before { content: "\f374"; } - -.ion-android-checkbox-blank:before { content: "\f371"; } - -.ion-android-checkbox-outline:before { content: "\f373"; } - -.ion-android-checkbox-outline-blank:before { content: "\f372"; } - -.ion-android-checkmark-circle:before { content: "\f375"; } - -.ion-android-clipboard:before { content: "\f376"; } - -.ion-android-close:before { content: "\f2d7"; } - -.ion-android-cloud:before { content: "\f37a"; } - -.ion-android-cloud-circle:before { content: "\f377"; } - -.ion-android-cloud-done:before { content: "\f378"; } - -.ion-android-cloud-outline:before { content: "\f379"; } - -.ion-android-color-palette:before { content: "\f37b"; } - -.ion-android-compass:before { content: "\f37c"; } - -.ion-android-contact:before { content: "\f2d8"; } - -.ion-android-contacts:before { content: "\f2d9"; } - -.ion-android-contract:before { content: "\f37d"; } - -.ion-android-create:before { content: "\f37e"; } - -.ion-android-delete:before { content: "\f37f"; } - -.ion-android-desktop:before { content: "\f380"; } - -.ion-android-document:before { content: "\f381"; } - -.ion-android-done:before { content: "\f383"; } - -.ion-android-done-all:before { content: "\f382"; } - -.ion-android-download:before { content: "\f2dd"; } - -.ion-android-drafts:before { content: "\f384"; } - -.ion-android-exit:before { content: "\f385"; } - -.ion-android-expand:before { content: "\f386"; } - -.ion-android-favorite:before { content: "\f388"; } - -.ion-android-favorite-outline:before { content: "\f387"; } - -.ion-android-film:before { content: "\f389"; } - -.ion-android-folder:before { content: "\f2e0"; } - -.ion-android-folder-open:before { content: "\f38a"; } - -.ion-android-funnel:before { content: "\f38b"; } - -.ion-android-globe:before { content: "\f38c"; } - -.ion-android-hand:before { content: "\f2e3"; } - -.ion-android-hangout:before { content: "\f38d"; } - -.ion-android-happy:before { content: "\f38e"; } - -.ion-android-home:before { content: "\f38f"; } - -.ion-android-image:before { content: "\f2e4"; } - -.ion-android-laptop:before { content: "\f390"; } - -.ion-android-list:before { content: "\f391"; } - -.ion-android-locate:before { content: "\f2e9"; } - -.ion-android-lock:before { content: "\f392"; } - -.ion-android-mail:before { content: "\f2eb"; } - -.ion-android-map:before { content: "\f393"; } - -.ion-android-menu:before { content: "\f394"; } - -.ion-android-microphone:before { content: "\f2ec"; } - -.ion-android-microphone-off:before { content: "\f395"; } - -.ion-android-more-horizontal:before { content: "\f396"; } - -.ion-android-more-vertical:before { content: "\f397"; } - -.ion-android-navigate:before { content: "\f398"; } - -.ion-android-notifications:before { content: "\f39b"; } - -.ion-android-notifications-none:before { content: "\f399"; } - -.ion-android-notifications-off:before { content: "\f39a"; } - -.ion-android-open:before { content: "\f39c"; } - -.ion-android-options:before { content: "\f39d"; } - -.ion-android-people:before { content: "\f39e"; } - -.ion-android-person:before { content: "\f3a0"; } - -.ion-android-person-add:before { content: "\f39f"; } - -.ion-android-phone-landscape:before { content: "\f3a1"; } - -.ion-android-phone-portrait:before { content: "\f3a2"; } - -.ion-android-pin:before { content: "\f3a3"; } - -.ion-android-plane:before { content: "\f3a4"; } - -.ion-android-playstore:before { content: "\f2f0"; } - -.ion-android-print:before { content: "\f3a5"; } - -.ion-android-radio-button-off:before { content: "\f3a6"; } - -.ion-android-radio-button-on:before { content: "\f3a7"; } - -.ion-android-refresh:before { content: "\f3a8"; } - -.ion-android-remove:before { content: "\f2f4"; } - -.ion-android-remove-circle:before { content: "\f3a9"; } - -.ion-android-restaurant:before { content: "\f3aa"; } - -.ion-android-sad:before { content: "\f3ab"; } - -.ion-android-search:before { content: "\f2f5"; } - -.ion-android-send:before { content: "\f2f6"; } - -.ion-android-settings:before { content: "\f2f7"; } - -.ion-android-share:before { content: "\f2f8"; } - -.ion-android-share-alt:before { content: "\f3ac"; } - -.ion-android-star:before { content: "\f2fc"; } - -.ion-android-star-half:before { content: "\f3ad"; } - -.ion-android-star-outline:before { content: "\f3ae"; } - -.ion-android-stopwatch:before { content: "\f2fd"; } - -.ion-android-subway:before { content: "\f3af"; } - -.ion-android-sunny:before { content: "\f3b0"; } - -.ion-android-sync:before { content: "\f3b1"; } - -.ion-android-textsms:before { content: "\f3b2"; } - -.ion-android-time:before { content: "\f3b3"; } - -.ion-android-train:before { content: "\f3b4"; } - -.ion-android-unlock:before { content: "\f3b5"; } - -.ion-android-upload:before { content: "\f3b6"; } - -.ion-android-volume-down:before { content: "\f3b7"; } - -.ion-android-volume-mute:before { content: "\f3b8"; } - -.ion-android-volume-off:before { content: "\f3b9"; } - -.ion-android-volume-up:before { content: "\f3ba"; } - -.ion-android-walk:before { content: "\f3bb"; } - -.ion-android-warning:before { content: "\f3bc"; } - -.ion-android-watch:before { content: "\f3bd"; } - -.ion-android-wifi:before { content: "\f305"; } - -.ion-aperture:before { content: "\f313"; } - -.ion-archive:before { content: "\f102"; } - -.ion-arrow-down-a:before { content: "\f103"; } - -.ion-arrow-down-b:before { content: "\f104"; } - -.ion-arrow-down-c:before { content: "\f105"; } - -.ion-arrow-expand:before { content: "\f25e"; } - -.ion-arrow-graph-down-left:before { content: "\f25f"; } - -.ion-arrow-graph-down-right:before { content: "\f260"; } - -.ion-arrow-graph-up-left:before { content: "\f261"; } - -.ion-arrow-graph-up-right:before { content: "\f262"; } - -.ion-arrow-left-a:before { content: "\f106"; } - -.ion-arrow-left-b:before { content: "\f107"; } - -.ion-arrow-left-c:before { content: "\f108"; } - -.ion-arrow-move:before { content: "\f263"; } - -.ion-arrow-resize:before { content: "\f264"; } - -.ion-arrow-return-left:before { content: "\f265"; } - -.ion-arrow-return-right:before { content: "\f266"; } - -.ion-arrow-right-a:before { content: "\f109"; } - -.ion-arrow-right-b:before { content: "\f10a"; } - -.ion-arrow-right-c:before { content: "\f10b"; } - -.ion-arrow-shrink:before { content: "\f267"; } - -.ion-arrow-swap:before { content: "\f268"; } - -.ion-arrow-up-a:before { content: "\f10c"; } - -.ion-arrow-up-b:before { content: "\f10d"; } - -.ion-arrow-up-c:before { content: "\f10e"; } - -.ion-asterisk:before { content: "\f314"; } - -.ion-at:before { content: "\f10f"; } - -.ion-backspace:before { content: "\f3bf"; } - -.ion-backspace-outline:before { content: "\f3be"; } - -.ion-bag:before { content: "\f110"; } - -.ion-battery-charging:before { content: "\f111"; } - -.ion-battery-empty:before { content: "\f112"; } - -.ion-battery-full:before { content: "\f113"; } - -.ion-battery-half:before { content: "\f114"; } - -.ion-battery-low:before { content: "\f115"; } - -.ion-beaker:before { content: "\f269"; } - -.ion-beer:before { content: "\f26a"; } - -.ion-bluetooth:before { content: "\f116"; } - -.ion-bonfire:before { content: "\f315"; } - -.ion-bookmark:before { content: "\f26b"; } - -.ion-bowtie:before { content: "\f3c0"; } - -.ion-briefcase:before { content: "\f26c"; } - -.ion-bug:before { content: "\f2be"; } - -.ion-calculator:before { content: "\f26d"; } - -.ion-calendar:before { content: "\f117"; } - -.ion-camera:before { content: "\f118"; } - -.ion-card:before { content: "\f119"; } - -.ion-cash:before { content: "\f316"; } - -.ion-chatbox:before { content: "\f11b"; } - -.ion-chatbox-working:before { content: "\f11a"; } - -.ion-chatboxes:before { content: "\f11c"; } - -.ion-chatbubble:before { content: "\f11e"; } - -.ion-chatbubble-working:before { content: "\f11d"; } - -.ion-chatbubbles:before { content: "\f11f"; } - -.ion-checkmark:before { content: "\f122"; } - -.ion-checkmark-circled:before { content: "\f120"; } - -.ion-checkmark-round:before { content: "\f121"; } - -.ion-chevron-down:before { content: "\f123"; } - -.ion-chevron-left:before { content: "\f124"; } - -.ion-chevron-right:before { content: "\f125"; } - -.ion-chevron-up:before { content: "\f126"; } - -.ion-clipboard:before { content: "\f127"; } - -.ion-clock:before { content: "\f26e"; } - -.ion-close:before { content: "\f12a"; } - -.ion-close-circled:before { content: "\f128"; } - -.ion-close-round:before { content: "\f129"; } - -.ion-closed-captioning:before { content: "\f317"; } - -.ion-cloud:before { content: "\f12b"; } - -.ion-code:before { content: "\f271"; } - -.ion-code-download:before { content: "\f26f"; } - -.ion-code-working:before { content: "\f270"; } - -.ion-coffee:before { content: "\f272"; } - -.ion-compass:before { content: "\f273"; } - -.ion-compose:before { content: "\f12c"; } - -.ion-connection-bars:before { content: "\f274"; } - -.ion-contrast:before { content: "\f275"; } - -.ion-crop:before { content: "\f3c1"; } - -.ion-cube:before { content: "\f318"; } - -.ion-disc:before { content: "\f12d"; } - -.ion-document:before { content: "\f12f"; } - -.ion-document-text:before { content: "\f12e"; } - -.ion-drag:before { content: "\f130"; } - -.ion-earth:before { content: "\f276"; } - -.ion-easel:before { content: "\f3c2"; } - -.ion-edit:before { content: "\f2bf"; } - -.ion-egg:before { content: "\f277"; } - -.ion-eject:before { content: "\f131"; } - -.ion-email:before { content: "\f132"; } - -.ion-email-unread:before { content: "\f3c3"; } - -.ion-erlenmeyer-flask:before { content: "\f3c5"; } - -.ion-erlenmeyer-flask-bubbles:before { content: "\f3c4"; } - -.ion-eye:before { content: "\f133"; } - -.ion-eye-disabled:before { content: "\f306"; } - -.ion-female:before { content: "\f278"; } - -.ion-filing:before { content: "\f134"; } - -.ion-film-marker:before { content: "\f135"; } - -.ion-fireball:before { content: "\f319"; } - -.ion-flag:before { content: "\f279"; } - -.ion-flame:before { content: "\f31a"; } - -.ion-flash:before { content: "\f137"; } - -.ion-flash-off:before { content: "\f136"; } - -.ion-folder:before { content: "\f139"; } - -.ion-fork:before { content: "\f27a"; } - -.ion-fork-repo:before { content: "\f2c0"; } - -.ion-forward:before { content: "\f13a"; } - -.ion-funnel:before { content: "\f31b"; } - -.ion-gear-a:before { content: "\f13d"; } - -.ion-gear-b:before { content: "\f13e"; } - -.ion-grid:before { content: "\f13f"; } - -.ion-hammer:before { content: "\f27b"; } - -.ion-happy:before { content: "\f31c"; } - -.ion-happy-outline:before { content: "\f3c6"; } - -.ion-headphone:before { content: "\f140"; } - -.ion-heart:before { content: "\f141"; } - -.ion-heart-broken:before { content: "\f31d"; } - -.ion-help:before { content: "\f143"; } - -.ion-help-buoy:before { content: "\f27c"; } - -.ion-help-circled:before { content: "\f142"; } - -.ion-home:before { content: "\f144"; } - -.ion-icecream:before { content: "\f27d"; } - -.ion-image:before { content: "\f147"; } - -.ion-images:before { content: "\f148"; } - -.ion-information:before { content: "\f14a"; } - -.ion-information-circled:before { content: "\f149"; } - -.ion-ionic:before { content: "\f14b"; } - -.ion-ios-alarm:before { content: "\f3c8"; } - -.ion-ios-alarm-outline:before { content: "\f3c7"; } - -.ion-ios-albums:before { content: "\f3ca"; } - -.ion-ios-albums-outline:before { content: "\f3c9"; } - -.ion-ios-americanfootball:before { content: "\f3cc"; } - -.ion-ios-americanfootball-outline:before { content: "\f3cb"; } - -.ion-ios-analytics:before { content: "\f3ce"; } - -.ion-ios-analytics-outline:before { content: "\f3cd"; } - -.ion-ios-arrow-back:before { content: "\f3cf"; } - -.ion-ios-arrow-down:before { content: "\f3d0"; } - -.ion-ios-arrow-forward:before { content: "\f3d1"; } - -.ion-ios-arrow-left:before { content: "\f3d2"; } - -.ion-ios-arrow-right:before { content: "\f3d3"; } - -.ion-ios-arrow-thin-down:before { content: "\f3d4"; } - -.ion-ios-arrow-thin-left:before { content: "\f3d5"; } - -.ion-ios-arrow-thin-right:before { content: "\f3d6"; } - -.ion-ios-arrow-thin-up:before { content: "\f3d7"; } - -.ion-ios-arrow-up:before { content: "\f3d8"; } - -.ion-ios-at:before { content: "\f3da"; } - -.ion-ios-at-outline:before { content: "\f3d9"; } - -.ion-ios-barcode:before { content: "\f3dc"; } - -.ion-ios-barcode-outline:before { content: "\f3db"; } - -.ion-ios-baseball:before { content: "\f3de"; } - -.ion-ios-baseball-outline:before { content: "\f3dd"; } - -.ion-ios-basketball:before { content: "\f3e0"; } - -.ion-ios-basketball-outline:before { content: "\f3df"; } - -.ion-ios-bell:before { content: "\f3e2"; } - -.ion-ios-bell-outline:before { content: "\f3e1"; } - -.ion-ios-body:before { content: "\f3e4"; } - -.ion-ios-body-outline:before { content: "\f3e3"; } - -.ion-ios-bolt:before { content: "\f3e6"; } - -.ion-ios-bolt-outline:before { content: "\f3e5"; } - -.ion-ios-book:before { content: "\f3e8"; } - -.ion-ios-book-outline:before { content: "\f3e7"; } - -.ion-ios-bookmarks:before { content: "\f3ea"; } - -.ion-ios-bookmarks-outline:before { content: "\f3e9"; } - -.ion-ios-box:before { content: "\f3ec"; } - -.ion-ios-box-outline:before { content: "\f3eb"; } - -.ion-ios-briefcase:before { content: "\f3ee"; } - -.ion-ios-briefcase-outline:before { content: "\f3ed"; } - -.ion-ios-browsers:before { content: "\f3f0"; } - -.ion-ios-browsers-outline:before { content: "\f3ef"; } - -.ion-ios-calculator:before { content: "\f3f2"; } - -.ion-ios-calculator-outline:before { content: "\f3f1"; } - -.ion-ios-calendar:before { content: "\f3f4"; } - -.ion-ios-calendar-outline:before { content: "\f3f3"; } - -.ion-ios-camera:before { content: "\f3f6"; } - -.ion-ios-camera-outline:before { content: "\f3f5"; } - -.ion-ios-cart:before { content: "\f3f8"; } - -.ion-ios-cart-outline:before { content: "\f3f7"; } - -.ion-ios-chatboxes:before { content: "\f3fa"; } - -.ion-ios-chatboxes-outline:before { content: "\f3f9"; } - -.ion-ios-chatbubble:before { content: "\f3fc"; } - -.ion-ios-chatbubble-outline:before { content: "\f3fb"; } - -.ion-ios-checkmark:before { content: "\f3ff"; } - -.ion-ios-checkmark-empty:before { content: "\f3fd"; } - -.ion-ios-checkmark-outline:before { content: "\f3fe"; } - -.ion-ios-circle-filled:before { content: "\f400"; } - -.ion-ios-circle-outline:before { content: "\f401"; } - -.ion-ios-clock:before { content: "\f403"; } - -.ion-ios-clock-outline:before { content: "\f402"; } - -.ion-ios-close:before { content: "\f406"; } - -.ion-ios-close-empty:before { content: "\f404"; } - -.ion-ios-close-outline:before { content: "\f405"; } - -.ion-ios-cloud:before { content: "\f40c"; } - -.ion-ios-cloud-download:before { content: "\f408"; } - -.ion-ios-cloud-download-outline:before { content: "\f407"; } - -.ion-ios-cloud-outline:before { content: "\f409"; } - -.ion-ios-cloud-upload:before { content: "\f40b"; } - -.ion-ios-cloud-upload-outline:before { content: "\f40a"; } - -.ion-ios-cloudy:before { content: "\f410"; } - -.ion-ios-cloudy-night:before { content: "\f40e"; } - -.ion-ios-cloudy-night-outline:before { content: "\f40d"; } - -.ion-ios-cloudy-outline:before { content: "\f40f"; } - -.ion-ios-cog:before { content: "\f412"; } - -.ion-ios-cog-outline:before { content: "\f411"; } - -.ion-ios-color-filter:before { content: "\f414"; } - -.ion-ios-color-filter-outline:before { content: "\f413"; } - -.ion-ios-color-wand:before { content: "\f416"; } - -.ion-ios-color-wand-outline:before { content: "\f415"; } - -.ion-ios-compose:before { content: "\f418"; } - -.ion-ios-compose-outline:before { content: "\f417"; } - -.ion-ios-contact:before { content: "\f41a"; } - -.ion-ios-contact-outline:before { content: "\f419"; } - -.ion-ios-copy:before { content: "\f41c"; } - -.ion-ios-copy-outline:before { content: "\f41b"; } - -.ion-ios-crop:before { content: "\f41e"; } - -.ion-ios-crop-strong:before { content: "\f41d"; } - -.ion-ios-download:before { content: "\f420"; } - -.ion-ios-download-outline:before { content: "\f41f"; } - -.ion-ios-drag:before { content: "\f421"; } - -.ion-ios-email:before { content: "\f423"; } - -.ion-ios-email-outline:before { content: "\f422"; } - -.ion-ios-eye:before { content: "\f425"; } - -.ion-ios-eye-outline:before { content: "\f424"; } - -.ion-ios-fastforward:before { content: "\f427"; } - -.ion-ios-fastforward-outline:before { content: "\f426"; } - -.ion-ios-filing:before { content: "\f429"; } - -.ion-ios-filing-outline:before { content: "\f428"; } - -.ion-ios-film:before { content: "\f42b"; } - -.ion-ios-film-outline:before { content: "\f42a"; } - -.ion-ios-flag:before { content: "\f42d"; } - -.ion-ios-flag-outline:before { content: "\f42c"; } - -.ion-ios-flame:before { content: "\f42f"; } - -.ion-ios-flame-outline:before { content: "\f42e"; } - -.ion-ios-flask:before { content: "\f431"; } - -.ion-ios-flask-outline:before { content: "\f430"; } - -.ion-ios-flower:before { content: "\f433"; } - -.ion-ios-flower-outline:before { content: "\f432"; } - -.ion-ios-folder:before { content: "\f435"; } - -.ion-ios-folder-outline:before { content: "\f434"; } - -.ion-ios-football:before { content: "\f437"; } - -.ion-ios-football-outline:before { content: "\f436"; } - -.ion-ios-game-controller-a:before { content: "\f439"; } - -.ion-ios-game-controller-a-outline:before { content: "\f438"; } - -.ion-ios-game-controller-b:before { content: "\f43b"; } - -.ion-ios-game-controller-b-outline:before { content: "\f43a"; } - -.ion-ios-gear:before { content: "\f43d"; } - -.ion-ios-gear-outline:before { content: "\f43c"; } - -.ion-ios-glasses:before { content: "\f43f"; } - -.ion-ios-glasses-outline:before { content: "\f43e"; } - -.ion-ios-grid-view:before { content: "\f441"; } - -.ion-ios-grid-view-outline:before { content: "\f440"; } - -.ion-ios-heart:before { content: "\f443"; } - -.ion-ios-heart-outline:before { content: "\f442"; } - -.ion-ios-help:before { content: "\f446"; } - -.ion-ios-help-empty:before { content: "\f444"; } - -.ion-ios-help-outline:before { content: "\f445"; } - -.ion-ios-home:before { content: "\f448"; } - -.ion-ios-home-outline:before { content: "\f447"; } - -.ion-ios-infinite:before { content: "\f44a"; } - -.ion-ios-infinite-outline:before { content: "\f449"; } - -.ion-ios-information:before { content: "\f44d"; } - -.ion-ios-information-empty:before { content: "\f44b"; } - -.ion-ios-information-outline:before { content: "\f44c"; } - -.ion-ios-ionic-outline:before { content: "\f44e"; } - -.ion-ios-keypad:before { content: "\f450"; } - -.ion-ios-keypad-outline:before { content: "\f44f"; } - -.ion-ios-lightbulb:before { content: "\f452"; } - -.ion-ios-lightbulb-outline:before { content: "\f451"; } - -.ion-ios-list:before { content: "\f454"; } - -.ion-ios-list-outline:before { content: "\f453"; } - -.ion-ios-location:before { content: "\f456"; } - -.ion-ios-location-outline:before { content: "\f455"; } - -.ion-ios-locked:before { content: "\f458"; } - -.ion-ios-locked-outline:before { content: "\f457"; } - -.ion-ios-loop:before { content: "\f45a"; } - -.ion-ios-loop-strong:before { content: "\f459"; } - -.ion-ios-medical:before { content: "\f45c"; } - -.ion-ios-medical-outline:before { content: "\f45b"; } - -.ion-ios-medkit:before { content: "\f45e"; } - -.ion-ios-medkit-outline:before { content: "\f45d"; } - -.ion-ios-mic:before { content: "\f461"; } - -.ion-ios-mic-off:before { content: "\f45f"; } - -.ion-ios-mic-outline:before { content: "\f460"; } - -.ion-ios-minus:before { content: "\f464"; } - -.ion-ios-minus-empty:before { content: "\f462"; } - -.ion-ios-minus-outline:before { content: "\f463"; } - -.ion-ios-monitor:before { content: "\f466"; } - -.ion-ios-monitor-outline:before { content: "\f465"; } - -.ion-ios-moon:before { content: "\f468"; } - -.ion-ios-moon-outline:before { content: "\f467"; } - -.ion-ios-more:before { content: "\f46a"; } - -.ion-ios-more-outline:before { content: "\f469"; } - -.ion-ios-musical-note:before { content: "\f46b"; } - -.ion-ios-musical-notes:before { content: "\f46c"; } - -.ion-ios-navigate:before { content: "\f46e"; } - -.ion-ios-navigate-outline:before { content: "\f46d"; } - -.ion-ios-nutrition:before { content: "\f470"; } - -.ion-ios-nutrition-outline:before { content: "\f46f"; } - -.ion-ios-paper:before { content: "\f472"; } - -.ion-ios-paper-outline:before { content: "\f471"; } - -.ion-ios-paperplane:before { content: "\f474"; } - -.ion-ios-paperplane-outline:before { content: "\f473"; } - -.ion-ios-partlysunny:before { content: "\f476"; } - -.ion-ios-partlysunny-outline:before { content: "\f475"; } - -.ion-ios-pause:before { content: "\f478"; } - -.ion-ios-pause-outline:before { content: "\f477"; } - -.ion-ios-paw:before { content: "\f47a"; } - -.ion-ios-paw-outline:before { content: "\f479"; } - -.ion-ios-people:before { content: "\f47c"; } - -.ion-ios-people-outline:before { content: "\f47b"; } - -.ion-ios-person:before { content: "\f47e"; } - -.ion-ios-person-outline:before { content: "\f47d"; } - -.ion-ios-personadd:before { content: "\f480"; } - -.ion-ios-personadd-outline:before { content: "\f47f"; } - -.ion-ios-photos:before { content: "\f482"; } - -.ion-ios-photos-outline:before { content: "\f481"; } - -.ion-ios-pie:before { content: "\f484"; } - -.ion-ios-pie-outline:before { content: "\f483"; } - -.ion-ios-pint:before { content: "\f486"; } - -.ion-ios-pint-outline:before { content: "\f485"; } - -.ion-ios-play:before { content: "\f488"; } - -.ion-ios-play-outline:before { content: "\f487"; } - -.ion-ios-plus:before { content: "\f48b"; } - -.ion-ios-plus-empty:before { content: "\f489"; } - -.ion-ios-plus-outline:before { content: "\f48a"; } - -.ion-ios-pricetag:before { content: "\f48d"; } - -.ion-ios-pricetag-outline:before { content: "\f48c"; } - -.ion-ios-pricetags:before { content: "\f48f"; } - -.ion-ios-pricetags-outline:before { content: "\f48e"; } - -.ion-ios-printer:before { content: "\f491"; } - -.ion-ios-printer-outline:before { content: "\f490"; } - -.ion-ios-pulse:before { content: "\f493"; } - -.ion-ios-pulse-strong:before { content: "\f492"; } - -.ion-ios-rainy:before { content: "\f495"; } - -.ion-ios-rainy-outline:before { content: "\f494"; } - -.ion-ios-recording:before { content: "\f497"; } - -.ion-ios-recording-outline:before { content: "\f496"; } - -.ion-ios-redo:before { content: "\f499"; } - -.ion-ios-redo-outline:before { content: "\f498"; } - -.ion-ios-refresh:before { content: "\f49c"; } - -.ion-ios-refresh-empty:before { content: "\f49a"; } - -.ion-ios-refresh-outline:before { content: "\f49b"; } - -.ion-ios-reload:before { content: "\f49d"; } - -.ion-ios-reverse-camera:before { content: "\f49f"; } - -.ion-ios-reverse-camera-outline:before { content: "\f49e"; } - -.ion-ios-rewind:before { content: "\f4a1"; } - -.ion-ios-rewind-outline:before { content: "\f4a0"; } - -.ion-ios-rose:before { content: "\f4a3"; } - -.ion-ios-rose-outline:before { content: "\f4a2"; } - -.ion-ios-search:before { content: "\f4a5"; } - -.ion-ios-search-strong:before { content: "\f4a4"; } - -.ion-ios-settings:before { content: "\f4a7"; } - -.ion-ios-settings-strong:before { content: "\f4a6"; } - -.ion-ios-shuffle:before { content: "\f4a9"; } - -.ion-ios-shuffle-strong:before { content: "\f4a8"; } - -.ion-ios-skipbackward:before { content: "\f4ab"; } - -.ion-ios-skipbackward-outline:before { content: "\f4aa"; } - -.ion-ios-skipforward:before { content: "\f4ad"; } - -.ion-ios-skipforward-outline:before { content: "\f4ac"; } - -.ion-ios-snowy:before { content: "\f4ae"; } - -.ion-ios-speedometer:before { content: "\f4b0"; } - -.ion-ios-speedometer-outline:before { content: "\f4af"; } - -.ion-ios-star:before { content: "\f4b3"; } - -.ion-ios-star-half:before { content: "\f4b1"; } - -.ion-ios-star-outline:before { content: "\f4b2"; } - -.ion-ios-stopwatch:before { content: "\f4b5"; } - -.ion-ios-stopwatch-outline:before { content: "\f4b4"; } - -.ion-ios-sunny:before { content: "\f4b7"; } - -.ion-ios-sunny-outline:before { content: "\f4b6"; } - -.ion-ios-telephone:before { content: "\f4b9"; } - -.ion-ios-telephone-outline:before { content: "\f4b8"; } - -.ion-ios-tennisball:before { content: "\f4bb"; } - -.ion-ios-tennisball-outline:before { content: "\f4ba"; } - -.ion-ios-thunderstorm:before { content: "\f4bd"; } - -.ion-ios-thunderstorm-outline:before { content: "\f4bc"; } - -.ion-ios-time:before { content: "\f4bf"; } - -.ion-ios-time-outline:before { content: "\f4be"; } - -.ion-ios-timer:before { content: "\f4c1"; } - -.ion-ios-timer-outline:before { content: "\f4c0"; } - -.ion-ios-toggle:before { content: "\f4c3"; } - -.ion-ios-toggle-outline:before { content: "\f4c2"; } - -.ion-ios-trash:before { content: "\f4c5"; } - -.ion-ios-trash-outline:before { content: "\f4c4"; } - -.ion-ios-undo:before { content: "\f4c7"; } - -.ion-ios-undo-outline:before { content: "\f4c6"; } - -.ion-ios-unlocked:before { content: "\f4c9"; } - -.ion-ios-unlocked-outline:before { content: "\f4c8"; } - -.ion-ios-upload:before { content: "\f4cb"; } - -.ion-ios-upload-outline:before { content: "\f4ca"; } - -.ion-ios-videocam:before { content: "\f4cd"; } - -.ion-ios-videocam-outline:before { content: "\f4cc"; } - -.ion-ios-volume-high:before { content: "\f4ce"; } - -.ion-ios-volume-low:before { content: "\f4cf"; } - -.ion-ios-wineglass:before { content: "\f4d1"; } - -.ion-ios-wineglass-outline:before { content: "\f4d0"; } - -.ion-ios-world:before { content: "\f4d3"; } - -.ion-ios-world-outline:before { content: "\f4d2"; } - -.ion-ipad:before { content: "\f1f9"; } - -.ion-iphone:before { content: "\f1fa"; } - -.ion-ipod:before { content: "\f1fb"; } - -.ion-jet:before { content: "\f295"; } - -.ion-key:before { content: "\f296"; } - -.ion-knife:before { content: "\f297"; } - -.ion-laptop:before { content: "\f1fc"; } - -.ion-leaf:before { content: "\f1fd"; } - -.ion-levels:before { content: "\f298"; } - -.ion-lightbulb:before { content: "\f299"; } - -.ion-link:before { content: "\f1fe"; } - -.ion-load-a:before { content: "\f29a"; } - -.ion-load-b:before { content: "\f29b"; } - -.ion-load-c:before { content: "\f29c"; } - -.ion-load-d:before { content: "\f29d"; } - -.ion-location:before { content: "\f1ff"; } - -.ion-lock-combination:before { content: "\f4d4"; } - -.ion-locked:before { content: "\f200"; } - -.ion-log-in:before { content: "\f29e"; } - -.ion-log-out:before { content: "\f29f"; } - -.ion-loop:before { content: "\f201"; } - -.ion-magnet:before { content: "\f2a0"; } - -.ion-male:before { content: "\f2a1"; } - -.ion-man:before { content: "\f202"; } - -.ion-map:before { content: "\f203"; } - -.ion-medkit:before { content: "\f2a2"; } - -.ion-merge:before { content: "\f33f"; } - -.ion-mic-a:before { content: "\f204"; } - -.ion-mic-b:before { content: "\f205"; } - -.ion-mic-c:before { content: "\f206"; } - -.ion-minus:before { content: "\f209"; } - -.ion-minus-circled:before { content: "\f207"; } - -.ion-minus-round:before { content: "\f208"; } - -.ion-model-s:before { content: "\f2c1"; } - -.ion-monitor:before { content: "\f20a"; } - -.ion-more:before { content: "\f20b"; } - -.ion-mouse:before { content: "\f340"; } - -.ion-music-note:before { content: "\f20c"; } - -.ion-navicon:before { content: "\f20e"; } - -.ion-navicon-round:before { content: "\f20d"; } - -.ion-navigate:before { content: "\f2a3"; } - -.ion-network:before { content: "\f341"; } - -.ion-no-smoking:before { content: "\f2c2"; } - -.ion-nuclear:before { content: "\f2a4"; } - -.ion-outlet:before { content: "\f342"; } - -.ion-paintbrush:before { content: "\f4d5"; } - -.ion-paintbucket:before { content: "\f4d6"; } - -.ion-paper-airplane:before { content: "\f2c3"; } - -.ion-paperclip:before { content: "\f20f"; } - -.ion-pause:before { content: "\f210"; } - -.ion-person:before { content: "\f213"; } - -.ion-person-add:before { content: "\f211"; } - -.ion-person-stalker:before { content: "\f212"; } - -.ion-pie-graph:before { content: "\f2a5"; } - -.ion-pin:before { content: "\f2a6"; } - -.ion-pinpoint:before { content: "\f2a7"; } - -.ion-pizza:before { content: "\f2a8"; } - -.ion-plane:before { content: "\f214"; } - -.ion-planet:before { content: "\f343"; } - -.ion-play:before { content: "\f215"; } - -.ion-playstation:before { content: "\f30a"; } - -.ion-plus:before { content: "\f218"; } - -.ion-plus-circled:before { content: "\f216"; } - -.ion-plus-round:before { content: "\f217"; } - -.ion-podium:before { content: "\f344"; } - -.ion-pound:before { content: "\f219"; } - -.ion-power:before { content: "\f2a9"; } - -.ion-pricetag:before { content: "\f2aa"; } - -.ion-pricetags:before { content: "\f2ab"; } - -.ion-printer:before { content: "\f21a"; } - -.ion-pull-request:before { content: "\f345"; } - -.ion-qr-scanner:before { content: "\f346"; } - -.ion-quote:before { content: "\f347"; } - -.ion-radio-waves:before { content: "\f2ac"; } - -.ion-record:before { content: "\f21b"; } - -.ion-refresh:before { content: "\f21c"; } - -.ion-reply:before { content: "\f21e"; } - -.ion-reply-all:before { content: "\f21d"; } - -.ion-ribbon-a:before { content: "\f348"; } - -.ion-ribbon-b:before { content: "\f349"; } - -.ion-sad:before { content: "\f34a"; } - -.ion-sad-outline:before { content: "\f4d7"; } - -.ion-scissors:before { content: "\f34b"; } - -.ion-search:before { content: "\f21f"; } - -.ion-settings:before { content: "\f2ad"; } - -.ion-share:before { content: "\f220"; } - -.ion-shuffle:before { content: "\f221"; } - -.ion-skip-backward:before { content: "\f222"; } - -.ion-skip-forward:before { content: "\f223"; } - -.ion-social-android:before { content: "\f225"; } - -.ion-social-android-outline:before { content: "\f224"; } - -.ion-social-angular:before { content: "\f4d9"; } - -.ion-social-angular-outline:before { content: "\f4d8"; } - -.ion-social-apple:before { content: "\f227"; } - -.ion-social-apple-outline:before { content: "\f226"; } - -.ion-social-bitcoin:before { content: "\f2af"; } - -.ion-social-bitcoin-outline:before { content: "\f2ae"; } - -.ion-social-buffer:before { content: "\f229"; } - -.ion-social-buffer-outline:before { content: "\f228"; } - -.ion-social-chrome:before { content: "\f4db"; } - -.ion-social-chrome-outline:before { content: "\f4da"; } - -.ion-social-codepen:before { content: "\f4dd"; } - -.ion-social-codepen-outline:before { content: "\f4dc"; } - -.ion-social-css3:before { content: "\f4df"; } - -.ion-social-css3-outline:before { content: "\f4de"; } - -.ion-social-designernews:before { content: "\f22b"; } - -.ion-social-designernews-outline:before { content: "\f22a"; } - -.ion-social-dribbble:before { content: "\f22d"; } - -.ion-social-dribbble-outline:before { content: "\f22c"; } - -.ion-social-dropbox:before { content: "\f22f"; } - -.ion-social-dropbox-outline:before { content: "\f22e"; } - -.ion-social-euro:before { content: "\f4e1"; } - -.ion-social-euro-outline:before { content: "\f4e0"; } - -.ion-social-facebook:before { content: "\f231"; } - -.ion-social-facebook-outline:before { content: "\f230"; } - -.ion-social-foursquare:before { content: "\f34d"; } - -.ion-social-foursquare-outline:before { content: "\f34c"; } - -.ion-social-freebsd-devil:before { content: "\f2c4"; } - -.ion-social-github:before { content: "\f233"; } - -.ion-social-github-outline:before { content: "\f232"; } - -.ion-social-google:before { content: "\f34f"; } - -.ion-social-google-outline:before { content: "\f34e"; } - -.ion-social-googleplus:before { content: "\f235"; } - -.ion-social-googleplus-outline:before { content: "\f234"; } - -.ion-social-hackernews:before { content: "\f237"; } - -.ion-social-hackernews-outline:before { content: "\f236"; } - -.ion-social-html5:before { content: "\f4e3"; } - -.ion-social-html5-outline:before { content: "\f4e2"; } - -.ion-social-instagram:before { content: "\f351"; } - -.ion-social-instagram-outline:before { content: "\f350"; } - -.ion-social-javascript:before { content: "\f4e5"; } - -.ion-social-javascript-outline:before { content: "\f4e4"; } - -.ion-social-linkedin:before { content: "\f239"; } - -.ion-social-linkedin-outline:before { content: "\f238"; } - -.ion-social-markdown:before { content: "\f4e6"; } - -.ion-social-nodejs:before { content: "\f4e7"; } - -.ion-social-octocat:before { content: "\f4e8"; } - -.ion-social-pinterest:before { content: "\f2b1"; } - -.ion-social-pinterest-outline:before { content: "\f2b0"; } - -.ion-social-python:before { content: "\f4e9"; } - -.ion-social-reddit:before { content: "\f23b"; } - -.ion-social-reddit-outline:before { content: "\f23a"; } - -.ion-social-rss:before { content: "\f23d"; } - -.ion-social-rss-outline:before { content: "\f23c"; } - -.ion-social-sass:before { content: "\f4ea"; } - -.ion-social-skype:before { content: "\f23f"; } - -.ion-social-skype-outline:before { content: "\f23e"; } - -.ion-social-snapchat:before { content: "\f4ec"; } - -.ion-social-snapchat-outline:before { content: "\f4eb"; } - -.ion-social-tumblr:before { content: "\f241"; } - -.ion-social-tumblr-outline:before { content: "\f240"; } - -.ion-social-tux:before { content: "\f2c5"; } - -.ion-social-twitch:before { content: "\f4ee"; } - -.ion-social-twitch-outline:before { content: "\f4ed"; } - -.ion-social-twitter:before { content: "\f243"; } - -.ion-social-twitter-outline:before { content: "\f242"; } - -.ion-social-usd:before { content: "\f353"; } - -.ion-social-usd-outline:before { content: "\f352"; } - -.ion-social-vimeo:before { content: "\f245"; } - -.ion-social-vimeo-outline:before { content: "\f244"; } - -.ion-social-whatsapp:before { content: "\f4f0"; } - -.ion-social-whatsapp-outline:before { content: "\f4ef"; } - -.ion-social-windows:before { content: "\f247"; } - -.ion-social-windows-outline:before { content: "\f246"; } - -.ion-social-wordpress:before { content: "\f249"; } - -.ion-social-wordpress-outline:before { content: "\f248"; } - -.ion-social-yahoo:before { content: "\f24b"; } - -.ion-social-yahoo-outline:before { content: "\f24a"; } - -.ion-social-yen:before { content: "\f4f2"; } - -.ion-social-yen-outline:before { content: "\f4f1"; } - -.ion-social-youtube:before { content: "\f24d"; } - -.ion-social-youtube-outline:before { content: "\f24c"; } - -.ion-soup-can:before { content: "\f4f4"; } - -.ion-soup-can-outline:before { content: "\f4f3"; } - -.ion-speakerphone:before { content: "\f2b2"; } - -.ion-speedometer:before { content: "\f2b3"; } - -.ion-spoon:before { content: "\f2b4"; } - -.ion-star:before { content: "\f24e"; } - -.ion-stats-bars:before { content: "\f2b5"; } - -.ion-steam:before { content: "\f30b"; } - -.ion-stop:before { content: "\f24f"; } - -.ion-thermometer:before { content: "\f2b6"; } - -.ion-thumbsdown:before { content: "\f250"; } - -.ion-thumbsup:before { content: "\f251"; } - -.ion-toggle:before { content: "\f355"; } - -.ion-toggle-filled:before { content: "\f354"; } - -.ion-transgender:before { content: "\f4f5"; } - -.ion-trash-a:before { content: "\f252"; } - -.ion-trash-b:before { content: "\f253"; } - -.ion-trophy:before { content: "\f356"; } - -.ion-tshirt:before { content: "\f4f7"; } - -.ion-tshirt-outline:before { content: "\f4f6"; } - -.ion-umbrella:before { content: "\f2b7"; } - -.ion-university:before { content: "\f357"; } - -.ion-unlocked:before { content: "\f254"; } - -.ion-upload:before { content: "\f255"; } - -.ion-usb:before { content: "\f2b8"; } - -.ion-videocamera:before { content: "\f256"; } - -.ion-volume-high:before { content: "\f257"; } - -.ion-volume-low:before { content: "\f258"; } - -.ion-volume-medium:before { content: "\f259"; } - -.ion-volume-mute:before { content: "\f25a"; } - -.ion-wand:before { content: "\f358"; } - -.ion-waterdrop:before { content: "\f25b"; } - -.ion-wifi:before { content: "\f25c"; } - -.ion-wineglass:before { content: "\f2b9"; } - -.ion-woman:before { content: "\f25d"; } - -.ion-wrench:before { content: "\f2ba"; } - -.ion-xbox:before { content: "\f30c"; } diff --git a/dashboard/lib/ionicons/fonts/ionicons.eot b/dashboard/lib/ionicons/fonts/ionicons.eot deleted file mode 100644 index 92a3f20a39267ae7f45144f412a995a663730360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120724 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 B3JL%K diff --git a/dashboard/lib/ionicons/fonts/ionicons.svg b/dashboard/lib/ionicons/fonts/ionicons.svg deleted file mode 100644 index 49fc8f36..00000000 --- a/dashboard/lib/ionicons/fonts/ionicons.svg +++ /dev/null @@ -1,2230 +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" > -<!-- -2014-12-4: Created. ---> -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata> -Created by FontForge 20120731 at Thu Dec 4 09:51:48 2014 - By Adam Bradley -Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) -</metadata> -<defs> -<font id="Ionicons" horiz-adv-x="448" > - <font-face - font-family="Ionicons" - font-weight="500" - font-stretch="normal" - units-per-em="512" - panose-1="2 0 6 3 0 0 0 0 0 0" - ascent="448" - descent="-64" - bbox="-0.54049 -64 512.487 448" - underline-thickness="25.6" - underline-position="-51.2" - unicode-range="U+F100-F4F7" - /> - <missing-glyph /> - <glyph glyph-name="ion-alert-circled" unicode="" -d="M445 26c3 -5 5 -13 2 -18s-8 -8 -14 -8h-418c-6 0 -11 3 -14 8s-1 13 2 18l207 349c3 5 8 9 14 9s11 -4 14 -9zM256 48v48h-64v-48h64zM256 128v144h-64v-144h64z" /> - <glyph glyph-name="ion-alert" unicode="" horiz-adv-x="128" -d="M128 -32h-128v96h128v-96zM112 128h-96l-16 288h128z" /> - <glyph glyph-name="ion-android-add-circle" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM315 171v42h-86v86h-42v-86h-86v-42h86v-86h42v86h86z" /> - <glyph glyph-name="ion-android-add" unicode="" horiz-adv-x="320" -d="M320 171h-139v-139h-42v139h-139v42h139v139h42v-139h139v-42z" /> - <glyph glyph-name="ion-android-alarm-clock" unicode="" horiz-adv-x="428" -d="M428 323l-28 -33l-98 82l28 33zM125 373l-97 -83l-28 33l97 83zM225 275v0v-111l85 -50l-16 -27l-101 61v127h32zM214 360c106 0 193 -86 193 -191s-87 -191 -193 -191c-107 0 -193 86 -193 191s86 191 193 191zM214 20c82 0 150 66 150 149c0 82 -68 149 -150 149 -s-150 -67 -150 -149s68 -149 150 -149z" /> - <glyph glyph-name="ion-android-alert" unicode="" horiz-adv-x="416" -d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM232 88v40h-48v-40h48zM232 176v128h-48v-128h48z" /> - <glyph glyph-name="ion-android-apps" unicode="" horiz-adv-x="320" -d="M0 272v80h80v-80h-80zM120 32v80h80v-80h-80zM0 32v80h80v-80h-80zM0 152v80h80v-80h-80zM120 152v80h80v-80h-80zM240 352h80v-80h-80v80zM120 272v80h80v-80h-80zM240 152v80h80v-80h-80zM240 32v80h80v-80h-80z" /> - <glyph glyph-name="ion-android-archive" unicode="" horiz-adv-x="416" -d="M406 348c7 -7 10 -17 10 -29v-289c0 -25 -21 -46 -46 -46h-324c-25 0 -46 21 -46 46v289c0 12 3 22 10 29l33 39c6 8 16 13 26 13h278c10 0 20 -5 26 -13zM208 65l127 127h-81v46h-92v-46h-81zM49 354h317l-22 23h-277z" /> - <glyph glyph-name="ion-android-arrow-back" unicode="" horiz-adv-x="342" -d="M342 213v-42h-260l119 -120l-30 -30l-171 171l171 171l31 -30l-120 -120h260z" /> - <glyph glyph-name="ion-android-arrow-down" unicode="" horiz-adv-x="342" -d="M192 363v-260l120 120l30 -31l-171 -171l-171 171l30 30l120 -119v260h42z" /> - <glyph glyph-name="ion-android-arrow-dropdown-circle" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 128l96 96h-192z" /> - <glyph glyph-name="ion-android-arrow-dropdown" unicode="" horiz-adv-x="256" -d="M0 256h256l-128 -128z" /> - <glyph glyph-name="ion-android-arrow-dropleft-circle" unicode="" horiz-adv-x="416" -d="M416 192c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208s208 -93 208 -208zM144 192l96 -96v192z" /> - <glyph glyph-name="ion-android-arrow-dropleft" unicode="" horiz-adv-x="128" -d="M128 320v-256l-128 128z" /> - <glyph glyph-name="ion-android-arrow-dropright-circle" unicode="" horiz-adv-x="416" -d="M208 -16c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208s-93 -208 -208 -208zM176 96l96 96l-96 96v-192z" /> - <glyph glyph-name="ion-android-arrow-dropright" unicode="" horiz-adv-x="128" -d="M0 320l128 -128l-128 -128v256z" /> - <glyph glyph-name="ion-android-arrow-dropup-circle" unicode="" horiz-adv-x="416" -d="M416 192c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208s208 -93 208 -208zM304 160l-96 96l-96 -96h192z" /> - <glyph glyph-name="ion-android-arrow-dropup" unicode="" horiz-adv-x="256" -d="M0 128l128 128l128 -128h-256z" /> - <glyph glyph-name="ion-android-arrow-forward" unicode="" horiz-adv-x="342" -d="M0 171v42h260l-119 120l30 30l171 -171l-171 -171l-31 30l120 120h-260z" /> - <glyph glyph-name="ion-android-arrow-up" unicode="" horiz-adv-x="342" -d="M192 21h-42v260l-120 -119l-30 30l171 171l171 -171l-30 -31l-120 120v-260z" /> - <glyph glyph-name="ion-android-attach" unicode="" horiz-adv-x="235" -d="M203 320h32v-235c0 -65 -53 -117 -118 -117s-117 52 -117 117v246c0 47 38 85 85 85s86 -38 86 -85v-246c0 -30 -24 -53 -54 -53s-53 23 -53 53v203h32v-203c0 -12 9 -21 21 -21s22 9 22 21v246c0 30 -24 53 -54 53s-53 -23 -53 -53v-246c0 -47 38 -85 85 -85 -s86 38 86 85v235z" /> - <glyph glyph-name="ion-android-bar" unicode="" horiz-adv-x="384" -d="M171 171l-171 170v43h384v-43l-171 -170v-131h107v-40h-256v40h107v131zM96 299h192l43 42h-278z" /> - <glyph glyph-name="ion-android-bicycle" unicode="" -d="M299 317c-19 0 -34 14 -34 33s15 34 34 34s33 -15 33 -34s-14 -33 -33 -33zM355 187c51 0 93 -43 93 -94s-42 -93 -93 -93s-94 42 -94 93s43 94 94 94zM355 28c36 0 65 29 65 65s-29 66 -65 66s-66 -30 -66 -66s30 -65 66 -65zM274 224l-30 45l-43 -45l39 -32v-112h-32 -v86l-61 38c-9 6 -19 15 -19 27c0 8 3 17 9 23l72 69c6 6 14 9 22 9c11 0 22 -7 28 -16l34 -60h59v-32h-78zM93 187c51 0 94 -43 94 -94s-43 -93 -94 -93s-93 42 -93 93s42 94 93 94zM93 28c36 0 66 29 66 65s-30 66 -66 66s-65 -30 -65 -66s29 -65 65 -65z" /> - <glyph glyph-name="ion-android-boat" unicode="" -d="M52 35l-51 139c-2 6 -1 12 1 17s8 8 13 10l38 13v98c0 23 20 43 43 43h64l16 53h96l16 -53h64c23 0 43 -20 43 -43v-98l38 -13c5 -2 11 -5 13 -10s3 -12 1 -17l-51 -139h-1c-34 0 -65 20 -86 43c-21 -23 -51 -43 -85 -43s-64 19 -85 42c-21 -23 -52 -42 -86 -42h-1z -M96 312v-84l128 41l128 -41v84h-256zM309 40c0 0 59 -64 107 -64h-21c-30 0 -59 12 -86 26c-53 -28 -117 -28 -170 0c-27 -14 -56 -26 -86 -26h-21c49 0 107 64 107 64c52 -36 118 -36 170 0z" /> - <glyph glyph-name="ion-android-bookmark" unicode="" horiz-adv-x="288" -d="M248 384c22 0 40 -18 40 -40v-344l-144 64l-144 -64v344c0 22 18 40 40 40h208z" /> - <glyph glyph-name="ion-android-bulb" unicode="" -d="M224 278c-25 0 -50 -10 -68 -28s-28 -43 -28 -68c0 -34 18 -66 48 -83l16 -10v-18v-71h64v71v18l16 10c15 8 27 20 35 34c9 15 13 31 13 49c0 25 -10 50 -28 68s-43 28 -68 28zM245 416v0v-64h-42v64h42zM374 362v0l30 -30l-38 -38l-30 30zM74 362v0l38 -38l-30 -30 -l-38 38zM224 310v0c70 0 128 -58 128 -128c0 -48 -26 -89 -64 -111v-103h-128v103c-38 22 -64 64 -64 111c0 70 58 128 128 128zM448 203v0v-42h-64v42h64zM64 203v0v-42h-64v42h64z" /> - <glyph glyph-name="ion-android-bus" unicode="" horiz-adv-x="352" -d="M0 96v204c0 75 82 84 176 84s176 -9 176 -84v-204c0 -18 -14 -24 -27 -36v-39c0 -12 -9 -21 -21 -21h-21c-12 0 -22 9 -22 21v22h-170v-22c0 -12 -10 -21 -22 -21h-21c-12 0 -21 9 -21 21v39c-13 12 -27 17 -27 36zM80 80c18 0 32 14 32 32s-14 32 -32 32 -s-32 -14 -32 -32s14 -32 32 -32zM272 80c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 203v106h-256v-106h256z" /> - <glyph glyph-name="ion-android-calendar" unicode="" horiz-adv-x="384" -d="M304 176v-96h-96v96h96zM272 384h48v-32h24c22 0 40 -18 40 -40v-272c0 -22 -18 -40 -40 -40h-304c-22 0 -40 18 -40 40v272c0 22 18 40 40 40h24v32h48v-32h160v32zM344 40v212h-304v-212h304z" /> - <glyph glyph-name="ion-android-call" unicode="" horiz-adv-x="384" -d="M363 117c12 0 21 -9 21 -21v-75c0 -12 -9 -21 -21 -21c-201 0 -363 162 -363 363c0 12 9 21 21 21h75c12 0 21 -9 21 -21c0 -27 4 -52 13 -77c2 -7 0 -16 -5 -21l-47 -47c31 -61 80 -110 141 -141l47 47c5 6 14 7 21 5c23 -7 49 -12 76 -12z" /> - <glyph glyph-name="ion-android-camera" unicode="" -d="M161 168c0 42 21 63 63 63s63 -21 63 -63s-21 -63 -63 -63s-63 21 -63 63zM408 352c11 0 20 -4 28 -12s12 -17 12 -28v-272c0 -11 -4 -20 -12 -28s-17 -12 -28 -12h-368c-11 0 -20 4 -28 12s-12 17 -12 28v272c0 11 4 20 12 28s17 12 28 12h88l32 32h128l32 -32h88z -M224 56c31 0 57 11 79 33s33 48 33 79s-11 57 -33 79s-48 33 -79 33s-57 -11 -79 -33s-33 -48 -33 -79s11 -57 33 -79s48 -33 79 -33z" /> - <glyph glyph-name="ion-android-cancel" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM312 117l-75 75l75 75l-29 29l-75 -75l-75 75l-29 -29l75 -75l-75 -75l29 -29l75 75l75 -75z" /> - <glyph glyph-name="ion-android-car" unicode="" horiz-adv-x="384" -d="M339 331l45 -118v-160c0 -12 -9 -21 -21 -21h-22c-12 0 -21 9 -21 21v11h-256v-11c0 -12 -9 -21 -21 -21h-22c-12 0 -21 9 -21 21v160l45 118c4 13 16 21 30 21h234c14 0 26 -8 30 -21zM75 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM309 128 -c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM43 235h298l-32 85h-234z" /> - <glyph glyph-name="ion-android-cart" unicode="" horiz-adv-x="416" -d="M122 70c23 0 41 -18 41 -41s-18 -42 -41 -42s-42 19 -42 42s19 41 42 41zM0 397h68l19 -42h308c11 0 21 -9 21 -20c0 -4 -1 -8 -2 -10l-75 -129c-7 -14 -20 -22 -36 -22h-155l-21 -32s-2 -5 -2 -6c0 -3 2 -5 5 -5h238v-40h-243c-26 0 -45 14 -45 42c0 7 2 15 5 20l31 51 -l-74 151h-42v42zM326 70c23 0 42 -18 42 -41s-19 -42 -42 -42s-41 19 -41 42s18 41 41 41z" /> - <glyph glyph-name="ion-android-chat" unicode="" horiz-adv-x="416" -d="M344 384c4 0 7 -4 7 -8v-214c0 -4 -3 -9 -7 -9h-187l-90 -89v89h-57c-4 0 -10 5 -10 9v214c0 4 6 8 10 8h334zM408 321c4 0 8 -5 8 -9v-214c0 -4 -4 -9 -8 -9h-57v-89l-90 89h-130l39 39h181c18 0 25 10 25 26v167h32z" /> - <glyph glyph-name="ion-android-checkbox-blank" unicode="" horiz-adv-x="384" -d="M341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298z" /> - <glyph glyph-name="ion-android-checkbox-outline-blank" unicode="" horiz-adv-x="384" -d="M341 341h-298v-298h298v298zM341 384v0c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298z" /> - <glyph glyph-name="ion-android-checkbox-outline" unicode="" horiz-adv-x="384" -d="M105 233l66 -66l183 183l30 -30l-213 -213l-96 96zM341 43v170h43v-170c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h213v-43h-213v-298h298z" /> - <glyph glyph-name="ion-android-checkbox" unicode="" horiz-adv-x="384" -d="M341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298zM149 85l192 192l-30 30l-162 -162l-76 77l-30 -30z" /> - <glyph glyph-name="ion-android-checkmark-circle" unicode="" horiz-adv-x="416" -d="M123 232l64 -64l179 178l29 -29l-208 -208l-93 93zM374 192h42c0 -114 -94 -208 -208 -208s-208 94 -208 208s94 208 208 208c28 0 54 -6 78 -16l-32 -32c-15 4 -30 6 -46 6c-92 0 -166 -74 -166 -166s74 -166 166 -166s166 74 166 166z" /> - <glyph glyph-name="ion-android-clipboard" unicode="" horiz-adv-x="384" -d="M341 368c23 0 43 -20 43 -43v-314c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v314c0 23 20 43 43 43h87c7 28 32 48 62 48s55 -20 62 -48h87zM192 368c-12 0 -21 -9 -21 -21s9 -22 21 -22s21 10 21 22s-9 21 -21 21zM344 8v320h-40v-72h-224v72h-40v-320h304z" /> - <glyph glyph-name="ion-android-close" unicode="" horiz-adv-x="298" -d="M298 311l-119 -119l119 -119l-30 -30l-119 119l-119 -119l-30 30l119 119l-119 119l30 30l119 -119l119 119z" /> - <glyph glyph-name="ion-android-cloud-circle" unicode="" horiz-adv-x="416" -d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM302 109c29 0 52 23 52 52s-23 52 -52 52h-11c0 46 -37 83 -83 83c-38 0 -71 -26 -80 -62h-3c-34 0 -63 -29 -63 -63s29 -62 63 -62h177z" /> - <glyph glyph-name="ion-android-cloud-done" unicode="" horiz-adv-x="480" -d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM197 85l141 141l-30 30l-111 -111l-44 45l-30 -30z" /> - <glyph glyph-name="ion-android-cloud-outline" unicode="" horiz-adv-x="480" -d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM380 72c33 0 60 27 60 60s-27 60 -60 60h-30v10c0 61 -49 110 -110 110c-51 0 -93 -34 -106 -80h-14 -c-44 0 -80 -36 -80 -80s36 -80 80 -80h260z" /> - <glyph glyph-name="ion-android-cloud" unicode="" horiz-adv-x="480" -d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121z" /> - <glyph glyph-name="ion-android-color-palette" unicode="" horiz-adv-x="384" -d="M192 384c106 0 192 -77 192 -171c0 -59 -48 -106 -107 -106h-38c-18 0 -32 -14 -32 -32c0 -9 3 -17 8 -22s9 -12 9 -21c0 -18 -14 -32 -32 -32c-106 0 -192 86 -192 192s86 192 192 192zM75 192c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM139 277 -c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM245 277c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM309 192c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> - <glyph glyph-name="ion-android-compass" unicode="" -d="M224 217c13 0 25 -12 25 -25s-12 -25 -25 -25s-25 12 -25 25s12 25 25 25zM224 416c123 0 224 -101 224 -224s-101 -224 -224 -224s-224 101 -224 224s101 224 224 224zM273 143l85 183l-183 -85l-85 -183z" /> - <glyph glyph-name="ion-android-contact" unicode="" horiz-adv-x="384" -d="M267 110c59 -18 104 -58 117 -110h-384c13 52 58 92 117 110c22 -13 48 -20 75 -20s53 7 75 20zM192 384c73 0 132 -59 132 -132s-59 -132 -132 -132s-132 59 -132 132s59 132 132 132zM192 153c42 0 78 26 92 63h-184c14 -37 50 -63 92 -63z" /> - <glyph glyph-name="ion-android-contacts" unicode="" -d="M207 104c47 -14 76 -62 87 -104h-294c11 42 40 90 87 104c18 -10 38 -16 60 -16s42 6 60 16zM147 328c58 0 106 -48 106 -106s-48 -106 -106 -106s-106 48 -106 106s48 106 106 106zM147 141c34 0 62 23 74 51h-148c12 -28 40 -51 74 -51zM291 64c-13 20 -34 43 -60 53 -c11 9 21 23 28 35c13 -5 27 -8 42 -8c22 0 42 6 60 16c47 -14 76 -54 87 -96h-157zM275 248c-8 37 -31 69 -63 87c19 29 52 49 89 49c58 0 106 -48 106 -106s-48 -106 -106 -106c-11 0 -22 2 -32 5c3 8 6 16 7 25c8 -3 16 -4 25 -4c34 0 62 22 74 50h-100z" /> - <glyph glyph-name="ion-android-contract" unicode="" horiz-adv-x="384" -d="M0 77v51h128v-128h-51v77h-77zM77 307v77h51v-128h-128v51h77zM256 0v128h128v-51h-77v-77h-51zM307 307h77v-51h-128v128h51v-77z" /> - <glyph glyph-name="ion-android-create" unicode="" horiz-adv-x="384" -d="M0 80l236 236l80 -80l-236 -236h-80v80zM378 298l-40 -40l-80 80l40 40c9 9 20 9 29 0l51 -51c9 -9 9 -20 0 -29z" /> - <glyph glyph-name="ion-android-delete" unicode="" horiz-adv-x="320" -d="M32 43v245h256v-245c0 -23 -20 -43 -43 -43h-170c-23 0 -43 20 -43 43zM320 352v-32h-320v32h80l27 32h106l27 -32h80z" /> - <glyph glyph-name="ion-android-desktop" unicode="" -d="M405 416c23 0 43 -20 43 -43v-282c0 -23 -20 -43 -43 -43h-138l42 -48v-32h-170v32l42 48h-138c-23 0 -43 20 -43 43v282c0 23 20 43 43 43h362zM405 128v245h-362v-245h362z" /> - <glyph glyph-name="ion-android-document" unicode="" horiz-adv-x="320" -d="M192 400l128 -128v-248c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v336c0 22 18 40 40 40h152zM176 256h112l-112 112v-112z" /> - <glyph glyph-name="ion-android-done-all" unicode="" horiz-adv-x="512" -d="M388 308l-140 -139l-31 31l140 139zM481 339l31 -31l-264 -263l-122 123l30 31l92 -91zM0 168l32 31l122 -123l-31 -31z" /> - <glyph glyph-name="ion-android-done" unicode="" horiz-adv-x="384" -d="M122 108l230 230l32 -31l-262 -261l-122 122l32 31z" /> - <glyph glyph-name="ion-android-download" unicode="" horiz-adv-x="480" -d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM208 180h-68l100 -100l100 100h-68v76h-64v-76z" /> - <glyph glyph-name="ion-android-drafts" unicode="" -d="M448 246v-203c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v203c0 15 8 30 20 37l204 101l204 -101c13 -7 20 -22 20 -37zM224 144l171 112l-171 85l-171 -85z" /> - <glyph glyph-name="ion-android-exit" unicode="" horiz-adv-x="384" -d="M151 115l55 56h-206v42h207l-56 56l30 30l107 -107l-107 -107zM341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v85h43v-85h298v298h-298v-85h-43v85c0 23 20 43 43 43h298z" /> - <glyph glyph-name="ion-android-expand" unicode="" horiz-adv-x="384" -d="M333 51v77h51v-128h-128v51h77zM333 333h-77v51h128v-128h-51v77zM51 333v-77h-51v128h128v-51h-77zM51 51h77v-51h-128v128h51v-77z" /> - <glyph glyph-name="ion-android-favorite-outline" unicode="" horiz-adv-x="416" -d="M302 384c64 0 114 -50 114 -115c0 -80 -71 -144 -178 -242l-30 -27l-30 27c-107 98 -178 162 -178 242c0 65 50 115 114 115c36 0 71 -17 94 -44c23 27 58 44 94 44zM221 55c50 46 94 86 123 122c28 35 40 63 40 92c0 23 -9 44 -24 59s-35 24 -58 24 -c-26 0 -53 -13 -70 -33l-24 -29l-24 29c-17 20 -44 33 -70 33c-23 0 -43 -9 -58 -24s-24 -36 -24 -59c0 -29 12 -57 40 -92c29 -36 73 -76 123 -122l4 -4l9 -8l9 8z" /> - <glyph glyph-name="ion-android-favorite" unicode="" horiz-adv-x="416" -d="M208 0l-30 27c-107 98 -178 162 -178 242c0 65 50 115 114 115c36 0 71 -17 94 -44c23 27 58 44 94 44c64 0 114 -50 114 -115c0 -80 -71 -144 -178 -242z" /> - <glyph glyph-name="ion-android-film" unicode="" horiz-adv-x="320" -d="M280 384h40v-384h-40v43h-40v-43h-160v43h-40v-43h-40v384h40v-43h40v43h160v-43h40v43zM80 85v43h-40v-43h40zM80 171v42h-40v-42h40zM80 256v43h-40v-43h40zM280 85v43h-40v-43h40zM280 171v42h-40v-42h40zM280 256v43h-40v-43h40z" /> - <glyph glyph-name="ion-android-folder-open" unicode="" -d="M405 304c23 0 43 -20 43 -43v-186c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v234c0 23 20 43 43 43h138l43 -48h181zM416 75v186c0 6 -5 11 -11 11h-373v-197c0 -6 5 -11 11 -11h362c6 0 11 5 11 11z" /> - <glyph glyph-name="ion-android-folder" unicode="" -d="M181 352l43 -48h181c23 0 43 -20 43 -43v-186c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v234c0 23 20 43 43 43h138z" /> - <glyph glyph-name="ion-android-funnel" unicode="" -d="M176 48v48h96v-48h-96zM0 336h448v-48h-448v48zM80 167v50h288v-50h-288z" /> - <glyph glyph-name="ion-android-globe" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM186 15c6 15 21 29 8 39c-8 7 -16 14 -23 21c-2 2 -11 20 -9 23c5 9 6 14 8 24c3 12 -3 16 -13 22c-15 10 -29 23 -43 34c-7 5 -17 10 -20 19s-5 20 -10 28c-14 20 -12 34 -10 58 -c0 7 -1 16 -2 25c-28 -32 -42 -73 -42 -116c0 -48 18 -92 52 -126c29 -29 65 -46 104 -51zM334 66c23 23 39 51 47 82c-8 -1 -19 2 -19 2s-21 24 -23 45c-2 22 0 39 -3 57c-3 16 -20 31 -27 46c-7 14 -13 28 -20 42c2 -1 5 -2 7 -3c5 1 10 2 14 2c-23 16 -49 25 -76 29v-8 -l4 -9l-14 -13l-9 3l-10 10l-10 12l-14 5c-16 -2 -31 -7 -45 -13v-7c7 3 16 5 23 8c3 1 13 -7 16 -9c-4 -5 -21 -15 -22 -21c0 -2 7 -6 7 -10c0 -6 -1 -11 -1 -17c3 3 20 21 22 21c13 3 35 -19 37 -26s-22 -24 -33 -34c-8 -8 -25 -12 -20 -24c2 -4 10 -20 5 -24 -c-6 -5 -14 9 -17 12c-8 10 -26 7 -38 7c0 -17 -1 -31 15 -43c15 -11 30 -25 47 -33c13 -6 36 7 47 -1c16 -11 29 -21 47 -29c8 -3 33 -20 26 -31c-5 -8 -10 -15 -14 -23s-13 -20 -20 -25c-8 -6 -16 -17 -21 -29c35 7 66 23 92 49z" /> - <glyph glyph-name="ion-android-hand" unicode="" horiz-adv-x="414" -d="M401 174c15 -15 18 -36 3 -51c0 0 -96 -103 -126 -121v0c-28 -21 -65 -34 -100 -34c-55 0 -101 36 -117 85v0v1c0 1 -1 2 -1 3l-58 189c-5 15 2 32 17 37s30 -3 35 -18l34 -88c1 -4 2 -2 2 1l-22 161c-3 15 7 30 22 33s30 -8 33 -23l25 -138c0 -2 2 -2 2 0v177 -c0 15 13 28 28 28s28 -13 28 -28l8 -175c0 -5 3 -4 4 -1l23 135c2 15 16 27 31 25s27 -17 25 -32l-21 -172c-1 -12 -3 -30 2 -36c8 -9 20 -9 31 2l42 42c15 15 35 13 50 -2z" /> - <glyph glyph-name="ion-android-hangout" unicode="" horiz-adv-x="352" -d="M176 400c97 0 176 -77 176 -172c0 -91 -76 -196 -176 -244v71c-97 0 -176 78 -176 173s79 172 176 172zM166 217v61h-62v-61h31l-21 -40h31zM248 217v61h-62v-61h31l-20 -40h31z" /> - <glyph glyph-name="ion-android-happy" unicode="" horiz-adv-x="416" -d="M208 400c114 0 208 -94 208 -208s-93 -208 -208 -208s-208 94 -208 208s93 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166zM281 213c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM135 213 -c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM208 78c-49 0 -89 29 -106 72h212c-17 -43 -57 -72 -106 -72z" /> - <glyph glyph-name="ion-android-home" unicode="" horiz-adv-x="416" -d="M160 0h-98v192h-62l208 192l208 -192h-62v-192h-98v128h-96v-128z" /> - <glyph glyph-name="ion-android-image" unicode="" horiz-adv-x="384" -d="M384 43c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298c23 0 43 -20 43 -43v-298zM117 160l-74 -96h298l-96 128l-74 -96z" /> - <glyph glyph-name="ion-android-laptop" unicode="" horiz-adv-x="512" -d="M437 32h75c0 -23 -64 -32 -96 -32h-320c-32 0 -96 9 -96 32h75c-23 0 -43 20 -43 43v266c0 23 20 43 43 43h362c23 0 43 -20 43 -43v-266c0 -23 -20 -43 -43 -43zM75 341v-272h362v272h-362zM256 13c12 0 21 10 21 22s-9 21 -21 21s-21 -9 -21 -21s9 -22 21 -22z" /> - <glyph glyph-name="ion-android-list" unicode="" horiz-adv-x="384" -d="M344 384c22 0 40 -18 40 -40v-304c0 -22 -18 -40 -40 -40h-304c-22 0 -40 18 -40 40v304c0 22 18 40 40 40h304zM240 80v48h-160v-48h160zM304 168v48h-224v-48h224zM304 256v48h-224v-48h224z" /> - <glyph glyph-name="ion-android-locate" unicode="" -d="M224 272c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80s36 80 80 80zM415 213h33v-42h-33c-10 -89 -81 -160 -170 -170v-33h-42v33c-89 10 -160 81 -170 170h-33v42h33c10 89 81 160 170 170v33h42v-33c89 -10 160 -81 170 -170zM224 43c82 0 149 67 149 149 -s-67 149 -149 149s-149 -67 -149 -149s67 -149 149 -149z" /> - <glyph glyph-name="ion-android-lock" unicode="" horiz-adv-x="320" -d="M280 262c22 0 40 -18 40 -40v-200c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v200c0 22 18 40 40 40h20v40c0 55 45 100 100 100s100 -45 100 -100v-40h20zM160 80c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM222 262v40c0 34 -28 62 -62 62 -s-62 -28 -62 -62v-40h124z" /> - <glyph glyph-name="ion-android-mail" unicode="" -d="M405 368c23 0 43 -20 43 -43v-266c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v266c0 23 20 43 43 43h362zM400 277v43l-176 -117l-176 117v-43l176 -117z" /> - <glyph glyph-name="ion-android-map" unicode="" horiz-adv-x="384" -d="M373 384c6 0 11 -5 11 -11v-322c0 -5 -3 -9 -7 -10l-121 -41l-128 45s-105 -41 -108 -42s-7 -3 -9 -3c-6 0 -11 5 -11 11v322c0 5 3 9 7 10l121 41l128 -45s103 40 108 42s7 3 9 3zM256 43v254l-128 44v-254z" /> - <glyph glyph-name="ion-android-menu" unicode="" horiz-adv-x="384" -d="M0 64v43h384v-43h-384zM0 171v42h384v-42h-384zM0 320h384v-43h-384v43z" /> - <glyph glyph-name="ion-android-microphone-off" unicode="" horiz-adv-x="408" -d="M316 93l58 -58l-58 58l58 -58l34 -33l-24 -24l-95 95c-19 -11 -40 -20 -62 -23v-82h-46v82c-75 10 -137 76 -137 153h39c0 -68 58 -117 121 -117c20 0 40 5 57 14l-32 33c-8 -3 -16 -5 -25 -5c-38 0 -69 31 -69 69v29l-135 134l24 24l111 -110v0l140 -140l5 -5l9 -9z -M273 197c0 -4 0 -8 -1 -12l-137 137v25c0 38 31 69 69 69s69 -31 69 -69v-150zM365 203c0 -31 -10 -60 -27 -84l-27 28c9 17 15 36 15 56h39zM408 2v0l-34 33z" /> - <glyph glyph-name="ion-android-microphone" unicode="" horiz-adv-x="320" -d="M160 128c-38 0 -69 31 -69 69v150c0 38 31 69 69 69s69 -31 69 -69v-150c0 -38 -31 -69 -69 -69zM281 203h39c0 -78 -62 -142 -137 -153v-82h-46v82c-75 10 -137 75 -137 153h39c0 -69 58 -116 121 -116s121 47 121 116z" /> - <glyph glyph-name="ion-android-more-horizontal" unicode="" horiz-adv-x="320" -d="M40 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40zM280 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40zM160 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40z" /> - <glyph glyph-name="ion-android-more-vertical" unicode="" horiz-adv-x="80" -d="M80 312c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40zM80 72c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40zM80 192c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40z" /> - <glyph glyph-name="ion-android-navigate" unicode="" horiz-adv-x="320" -d="M160 384l160 -369l-15 -15l-145 64l-145 -64l-15 15z" /> - <glyph glyph-name="ion-android-notifications-none" unicode="" horiz-adv-x="352" -d="M177 328h-2c-6 0 -24 -5 -24 -5c-46 -10 -78 -53 -78 -100v-114v-13l-9 -10l-8 -8h240l-8 8l-9 10v13v114c0 47 -32 90 -78 100c0 0 -17 5 -24 5zM176 400v0c18 0 31 -13 31 -31v-15c59 -14 104 -68 104 -131v-114l41 -42v-21h-352v21l41 42v114c0 63 45 117 104 131v15 -c0 18 13 31 31 31zM217 26v0c0 -23 -18 -42 -41 -42s-41 19 -41 42h82z" /> - <glyph glyph-name="ion-android-notifications-off" unicode="" horiz-adv-x="364" -d="M182 -16c-23 0 -41 19 -41 42h82c0 -23 -18 -42 -41 -42zM57 341l295 -295v0l12 -12l-24 -24l-36 36h-298v21l41 41v115c0 23 6 44 16 63l-63 64l24 24l33 -33v0zM317 223v-94l-208 207c13 8 27 15 42 18v15c0 18 13 31 31 31s31 -13 31 -31v-15c59 -14 104 -67 104 -131 -z" /> - <glyph glyph-name="ion-android-notifications" unicode="" horiz-adv-x="352" -d="M176 -16c-23 0 -41 19 -41 42h82c0 -23 -18 -42 -41 -42zM311 109l41 -42v-21h-352v21l41 42v114c0 63 45 117 104 131v15c0 18 13 31 31 31s31 -13 31 -31v-15c59 -14 104 -68 104 -131v-114z" /> - <glyph glyph-name="ion-android-open" unicode="" horiz-adv-x="384" -d="M341 43v133h43v-133c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h133v-43h-133v-298h298zM224 384h160v-160h-43v87l-215 -215l-30 30l215 215h-87v43z" /> - <glyph glyph-name="ion-android-options" unicode="" -d="M0 32v32h272v-32h-272zM368 32v32h80v-32h-80zM352 0c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM0 176v32h80v-32h-80zM176 176v32h272v-32h-272zM160 144c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96 -c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM0 320v32h272v-32h-272zM368 320v32h80v-32h-80zM352 288c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96z" /> - <glyph glyph-name="ion-android-people" unicode="" -d="M305 216c-34 0 -61 27 -61 60s27 60 61 60s62 -27 62 -60s-28 -60 -62 -60zM143 216c-34 0 -62 27 -62 60s28 60 62 60s61 -27 61 -60s-27 -60 -61 -60zM143 172c48 0 145 -23 145 -70v-54h-288v54c0 47 95 70 143 70zM305 161c48 0 143 -12 143 -59v-54h-128v54 -c0 30 -9 41 -32 58c7 1 11 1 17 1z" /> - <glyph glyph-name="ion-android-person-add" unicode="" horiz-adv-x="480" -d="M288 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM288 144c64 0 192 -32 192 -96v-48h-384v48c0 64 128 96 192 96zM96 224h64v-32h-64v-64h-32v64h-64v32h64v64h32v-64z" /> - <glyph glyph-name="ion-android-person" unicode="" horiz-adv-x="384" -d="M192 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM192 144c64 0 192 -32 192 -96v-48h-384v48c0 64 128 96 192 96z" /> - <glyph glyph-name="ion-android-phone-landscape" unicode="" -d="M448 89c0 -23 -19 -41 -41 -41h-366c-22 0 -41 18 -41 41v206c0 23 19 41 41 41h366c22 0 41 -18 41 -41v-206zM80 84h288v216h-288v-216z" /> - <glyph glyph-name="ion-android-phone-portrait" unicode="" horiz-adv-x="288" -d="M247 416c23 0 41 -19 41 -41v-366c0 -22 -18 -41 -41 -41h-206c-23 0 -41 19 -41 41v366c0 22 18 41 41 41h206zM252 48v288h-216v-288h216z" /> - <glyph glyph-name="ion-android-pin" unicode="" horiz-adv-x="320" -d="M160 416c88 0 160 -71 160 -157c0 -118 -160 -291 -160 -291s-160 173 -160 291c0 86 72 157 160 157zM160 203c32 0 57 25 57 56s-25 56 -57 56s-57 -25 -57 -56s25 -56 57 -56z" /> - <glyph glyph-name="ion-android-plane" unicode="" horiz-adv-x="384" -d="M384 112l-160 48v-114l48 -31v-31l-80 16l-80 -16v31l48 31v114l-160 -48v40l160 104v113c0 18 15 31 32 31s32 -13 32 -31v-113l160 -104v-40z" /> - <glyph glyph-name="ion-android-playstore" unicode="" horiz-adv-x="416" -d="M416 296c-19 -214 -13 -312 -13 -312h-390s6 96 -13 312h104c0 57 47 104 104 104s104 -47 104 -104h104zM208 374c-43 0 -78 -35 -78 -78h156c0 43 -35 78 -78 78zM156 50l143 85l-143 84v-169z" /> - <glyph glyph-name="ion-android-print" unicode="" horiz-adv-x="416" -d="M352 288c35 0 64 -29 64 -64v-139h-80v-85h-256v85h-80v139c0 35 29 64 64 64h288zM304 32v128h-192v-128h192zM336 384v0v-80h-256v80h256z" /> - <glyph glyph-name="ion-android-radio-button-off" unicode="" horiz-adv-x="416" -d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166z" /> - <glyph glyph-name="ion-android-radio-button-on" unicode="" horiz-adv-x="416" -d="M208 296c57 0 104 -47 104 -104s-47 -104 -104 -104s-104 47 -104 104s47 104 104 104zM208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166z" /> - <glyph glyph-name="ion-android-refresh" unicode="" horiz-adv-x="352" -d="M176 60c56 0 104 34 123 84h46c-21 -74 -88 -128 -169 -128c-98 0 -176 79 -176 176s79 176 176 176c48 0 92 -20 124 -52l52 52v-154h-154l70 70c-23 24 -56 40 -92 40c-73 0 -132 -59 -132 -132s59 -132 132 -132z" /> - <glyph glyph-name="ion-android-remove-circle" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM315 171v42h-214v-42h214z" /> - <glyph glyph-name="ion-android-remove" unicode="" horiz-adv-x="320" -d="M0 171v42h320v-42h-320z" /> - <glyph glyph-name="ion-android-restaurant" unicode="" horiz-adv-x="415" -d="M116 168l-91 89c-34 33 -34 86 0 119l153 -148zM264 206l-33 -31l150 -145l-30 -30l-150 146l-150 -146l-30 30s163 159 211 207c-15 32 -4 77 31 111c41 40 101 49 132 17c33 -31 24 -89 -17 -129c-34 -34 -80 -45 -114 -30z" /> - <glyph glyph-name="ion-android-sad" unicode="" horiz-adv-x="416" -d="M208 160c45 0 83 -26 102 -64h-204c19 38 57 64 102 64zM208 400c114 0 208 -94 208 -208s-93 -208 -208 -208s-208 94 -208 208s93 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166zM281 213c-18 0 -31 13 -31 31 -s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM135 213c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31z" /> - <glyph glyph-name="ion-android-search" unicode="" horiz-adv-x="384" -d="M274 143l110 -110l-33 -33l-109 110v17l-7 6c-25 -21 -58 -34 -93 -34c-79 0 -142 63 -142 142s63 143 141 143c79 0 142 -64 142 -143c0 -36 -13 -68 -34 -93l7 -5h18zM142 143c55 0 99 43 99 98s-44 99 -99 99s-98 -44 -98 -99s43 -98 98 -98z" /> - <glyph glyph-name="ion-android-send" unicode="" horiz-adv-x="416" -d="M0 0v149l298 43l-298 43v149l416 -192z" /> - <glyph glyph-name="ion-android-settings" unicode="" horiz-adv-x="416" -d="M366 171l47 -34c3 -3 4 -10 2 -14l-43 -71c-2 -4 -7 -7 -12 -5l-54 21c-12 -8 -23 -16 -36 -21l-8 -55c-1 -4 -6 -8 -11 -8h-85c-5 0 -10 3 -11 8l-8 55c-13 5 -25 13 -36 21l-54 -21c-4 -2 -10 1 -12 5l-43 71c-3 5 -2 11 2 14l45 34c0 7 -1 14 -1 21s1 14 1 21l-46 34 -c-3 3 -4 10 -2 14l43 71c2 4 7 7 12 5l54 -21c12 8 23 16 36 21l8 55c1 4 6 8 11 8h85c5 0 10 -4 11 -8l7 -55c13 -5 25 -13 36 -21l53 21c4 2 11 -1 13 -5l43 -71c3 -5 2 -11 -2 -14l-45 -34c0 -7 1 -14 1 -21s0 -15 -1 -21zM207 119c41 0 75 32 75 73s-34 73 -75 73 -s-74 -32 -74 -73s33 -73 74 -73z" /> - <glyph glyph-name="ion-android-share-alt" unicode="" horiz-adv-x="384" -d="M320 104c34 0 62 -28 62 -62s-28 -62 -62 -62s-62 28 -62 62c0 5 1 10 2 14l-152 88c-12 -11 -27 -17 -44 -17c-35 0 -64 29 -64 64s28 64 63 64c17 0 32 -6 44 -17l151 87c-1 5 -2 10 -2 15c0 35 29 64 64 64s64 -29 64 -64s-29 -64 -64 -64c-17 0 -32 6 -44 17 -l-151 -87c1 -5 2 -10 2 -15s-1 -10 -2 -15l153 -88c11 11 26 16 42 16z" /> - <glyph glyph-name="ion-android-share" unicode="" horiz-adv-x="384" -d="M384 200l-160 -147v88c-107 0 -171 -34 -224 -109c21 107 75 214 224 235v85z" /> - <glyph glyph-name="ion-android-star-half" unicode="" horiz-adv-x="404" -d="M404 238l-110 -96l33 -142l-125 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134zM219 103l60 -36l-16 68l-5 19l15 12l53 46l-70 6l-19 2l-8 18l-27 64v-189z" /> - <glyph glyph-name="ion-android-star-outline" unicode="" horiz-adv-x="404" -d="M404 238l-110 -96l33 -142l-125 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134zM219 103l60 -36l-16 68l-5 19l15 12l53 46l-70 6l-19 2l-8 18l-27 64l-27 -64l-8 -18l-19 -2l-70 -6l53 -46l15 -12l-5 -19l-16 -68l60 36l17 10z" /> - <glyph glyph-name="ion-android-star" unicode="" horiz-adv-x="404" -d="M202 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134l145 -12l-110 -96l33 -142z" /> - <glyph glyph-name="ion-android-stopwatch" unicode="" horiz-adv-x="384" -d="M168 141v131h48v-131h-48zM344 278c25 -33 40 -74 40 -118c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192c44 0 85 -15 118 -40l31 30l33 -33zM298 54c28 28 44 66 44 106s-16 78 -44 106s-66 44 -106 44s-78 -16 -106 -44s-44 -66 -44 -106 -s16 -78 44 -106s66 -44 106 -44s78 16 106 44zM128 368v48h128v-48h-128z" /> - <glyph glyph-name="ion-android-subway" unicode="" horiz-adv-x="352" -d="M176 400c94 0 176 -10 176 -85v-214c0 -42 -33 -74 -75 -74l27 -27v-16h-256v16l27 27c-42 0 -75 32 -75 74v214c0 75 82 85 176 85zM80 64c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM160 208v96h-112v-96h112zM272 64c18 0 32 14 32 32 -s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 208v96h-112v-96h112z" /> - <glyph glyph-name="ion-android-sunny" unicode="" -d="M224 288c-25 0 -50 -10 -68 -28s-28 -43 -28 -68s10 -50 28 -68s43 -28 68 -28s50 10 68 28s28 43 28 68s-10 50 -28 68s-43 28 -68 28zM245 416v0v-64h-42v64h42zM374 372v0l30 -30l-38 -38l-30 30zM74 372v0l38 -38l-30 -30l-38 38zM224 320v0c70 0 128 -58 128 -128 -s-58 -128 -128 -128s-128 58 -128 128s58 128 128 128zM448 213v0v-42h-64v42h64zM64 213v0v-42h-64v42h64zM366 80v0l38 -38l-30 -30l-38 38zM82 80v0l30 -30l-38 -38l-30 30zM245 32v0v-64h-42v64h42z" /> - <glyph glyph-name="ion-android-sync" unicode="" horiz-adv-x="320" -d="M160 355c88 0 160 -73 160 -163c0 -32 -9 -62 -25 -87l-29 30c9 17 14 37 14 57c0 67 -54 122 -120 122v-61l-80 82l80 81v-61zM160 70v61l80 -82l-80 -81v61c-88 0 -160 73 -160 163c0 32 9 63 25 87l29 -30c-9 -17 -14 -37 -14 -57c0 -67 54 -122 120 -122z" /> - <glyph glyph-name="ion-android-textsms" unicode="" horiz-adv-x="384" -d="M344 384c22 0 40 -18 40 -40v-240c0 -22 -18 -40 -40 -40h-280l-64 -64v344c0 22 10 40 32 40h312zM134 206v40h-38v-40h38zM211 206v40h-38v-40h38zM288 206v40h-38v-40h38z" /> - <glyph glyph-name="ion-android-time" unicode="" horiz-adv-x="426" -d="M213 405c117 0 213 -96 213 -213s-95 -213 -213 -213s-213 96 -213 213s95 213 213 213zM213 22c94 0 170 76 170 170s-76 170 -170 170s-170 -76 -170 -170s76 -170 170 -170zM224 298v-111l96 -57l-16 -26l-112 67v127h32z" /> - <glyph glyph-name="ion-android-train" unicode="" horiz-adv-x="352" -d="M0 101v214c0 75 82 85 176 85s176 -10 176 -85v-214c0 -42 -33 -74 -75 -74l27 -27v-16h-256v16l27 27c-42 0 -75 32 -75 74zM176 72c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM304 224v96h-256v-96h256z" /> - <glyph glyph-name="ion-android-unlock" unicode="" horiz-adv-x="320" -d="M280 262c22 0 40 -18 40 -40v-200c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v200c0 22 18 40 40 40h182v40v0c0 34 -28 62 -62 62s-62 -28 -62 -62h-38c0 55 45 100 100 100s100 -45 100 -100v-40h20zM160 80c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40 -s18 -40 40 -40z" /> - <glyph glyph-name="ion-android-upload" unicode="" horiz-adv-x="480" -d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM272 172h68l-100 100l-100 -100h68v-76h64v76z" /> - <glyph glyph-name="ion-android-volume-down" unicode="" horiz-adv-x="288" -d="M0 256h85l107 112v-352l-107 112h-85v128zM288 192c0 -38 -21 -73 -53 -88v177c32 -16 53 -51 53 -89z" /> - <glyph glyph-name="ion-android-volume-mute" unicode="" horiz-adv-x="192" -d="M0 256h85l107 112v-352l-107 112h-85v128z" /> - <glyph glyph-name="ion-android-volume-off" unicode="" horiz-adv-x="384" -d="M342 192c0 69 -45 128 -107 147v45c85 -20 149 -99 149 -192c0 -35 -8 -68 -24 -96l-32 32c9 19 14 41 14 64zM192 368v-104l-51 51zM357 51v0l24 -24l-24 -24l-40 40c-23 -21 -51 -36 -82 -43v45c19 6 37 15 52 28l-95 95v-152l-107 112h-85v128h85l9 10l-91 91l24 24z -M288 192c0 -7 0 -15 -2 -22l-51 51v60c32 -16 53 -51 53 -89z" /> - <glyph glyph-name="ion-android-volume-up" unicode="" horiz-adv-x="384" -d="M0 256h85l107 112v-352l-107 112h-85v128zM288 192c0 -38 -21 -73 -53 -88v177c32 -16 53 -51 53 -89zM235 384c85 -20 149 -99 149 -192s-64 -172 -149 -192v45c62 19 106 78 106 147s-44 128 -106 147v45z" /> - <glyph glyph-name="ion-android-walk" unicode="" horiz-adv-x="272" -d="M168 336c-22 0 -40 18 -40 40s18 40 40 40s40 -18 40 -40s-18 -40 -40 -40zM168 216l-20 38l-20 -62l57 -96v-128h-38v96l-50 68l-57 -164h-40l81 320l-41 -16v-80h-40v112l111 38c4 1 10 1 13 1c13 0 23 -6 31 -18l45 -69h72v-40h-104z" /> - <glyph glyph-name="ion-android-warning" unicode="" -d="M0 -16l224 416l224 -416h-448zM248 48v48h-48v-48h48zM248 128v96h-48v-96h48z" /> - <glyph glyph-name="ion-android-watch" unicode="" horiz-adv-x="320" -d="M320 192c0 -51 -24 -96 -61 -125l-19 -115h-160l-19 115c-37 29 -61 74 -61 125s24 96 61 125l19 115h160l19 -115c37 -29 61 -74 61 -125zM40 192c0 -66 54 -120 120 -120s120 54 120 120s-54 120 -120 120s-120 -54 -120 -120z" /> - <glyph glyph-name="ion-android-wifi" unicode="" horiz-adv-x="416" -d="M208 219c23 0 42 -18 42 -41s-19 -41 -42 -41s-42 18 -42 41s19 41 42 41zM333 178c0 -45 -26 -85 -63 -107l-20 36c25 14 41 40 41 71c0 45 -37 82 -83 82s-83 -37 -83 -82c0 -31 16 -57 41 -71l-20 -36c-37 22 -63 62 -63 107c0 68 56 124 125 124s125 -56 125 -124z -M208 384c114 0 208 -93 208 -206c0 -76 -42 -142 -104 -178l-21 36c50 28 83 81 83 142c0 91 -74 165 -166 165s-166 -74 -166 -165c0 -61 33 -113 83 -142l-21 -36c-62 36 -104 102 -104 178c0 113 94 206 208 206z" /> - <glyph glyph-name="ion-aperture" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM168 342l56 -86h-147 -c17 40 50 71 91 86zM381 160h-102l72 129c21 -27 33 -60 33 -97c0 -11 -1 -22 -3 -32zM328 314l-49 -90l-78 126c8 1 15 2 23 2c40 0 76 -14 104 -38zM67 224h102l-72 -129c-21 27 -33 60 -33 97c0 11 1 22 3 32zM280 42l-56 86h147c-17 -40 -50 -71 -91 -86zM120 70l49 90 -l78 -126c-8 -1 -15 -2 -23 -2c-40 0 -76 14 -104 38z" /> - <glyph glyph-name="ion-archive" unicode="" -d="M224 140l-128 116h80v96h96v-96h80zM433 151c11 -6 17 -19 15 -32l-9 -67c-2 -13 -9 -20 -28 -20h-374c-18 0 -26 7 -28 20l-9 67c-2 13 3 26 14 32l72 55h42l-62 -62h50c2 0 5 -1 6 -3l18 -45h168l18 45c1 2 3 3 5 3h51l-62 62h42z" /> - <glyph glyph-name="ion-arrow-down-a" unicode="" horiz-adv-x="384" -d="M192 -0l-192 192h112v192h160v-192h112z" /> - <glyph glyph-name="ion-arrow-down-b" unicode="" horiz-adv-x="320" -d="M3 263c-2 2 -3 6 -3 9c0 9 8 16 17 16v0h286v0c9 0 17 -7 17 -16c0 -3 -1 -6 -3 -8l-2 -3l-136 -156c-5 -5 -11 -9 -19 -9s-14 4 -19 9l-136 156z" /> - <glyph glyph-name="ion-arrow-down-c" unicode="" horiz-adv-x="274" -d="M265 125l-105 -100c-6 -6 -14 -9 -23 -9s-16 3 -22 9l-106 100c-12 12 -12 31 0 43s34 12 46 0l50 -48v217c0 17 14 31 32 31s32 -14 32 -31v-217l50 48c12 12 34 12 46 0s12 -31 0 -43z" /> - <glyph glyph-name="ion-arrow-expand" unicode="" horiz-adv-x="320" -d="M178 238l64 64l-50 50h128v-128l-50 50l-64 -64zM178 146l28 28l64 -64l50 50v-128h-128l50 50zM142 146l-64 -64l50 -50h-128v128l50 -50l64 64zM142 238l-28 -28l-64 64l-50 -50v128h128l-50 -50z" /> - <glyph glyph-name="ion-arrow-graph-down-left" unicode="" -d="M0 64v160l61 -61l131 141l107 -112l149 128l-149 -203l-107 107l-94 -98l62 -62h-160z" /> - <glyph glyph-name="ion-arrow-graph-down-right" unicode="" -d="M288 64l62 62l-94 98l-107 -107l-149 203l149 -128l107 112l131 -141l61 61v-160h-160z" /> - <glyph glyph-name="ion-arrow-graph-up-left" unicode="" -d="M160 320l-62 -62l94 -98l107 107l149 -203l-149 128l-107 -112l-131 141l-61 -61v160h160z" /> - <glyph glyph-name="ion-arrow-graph-up-right" unicode="" -d="M288 320h160v-160l-61 61l-131 -141l-107 112l-149 -128l149 203l107 -107l94 98z" /> - <glyph glyph-name="ion-arrow-left-a" unicode="" horiz-adv-x="384" -d="M0 192l192 192v-112h192v-160h-192v-112z" /> - <glyph glyph-name="ion-arrow-left-b" unicode="" horiz-adv-x="192" -d="M167 349c2 2 6 3 9 3c9 0 16 -8 16 -17v0v-286v0c0 -9 -7 -17 -16 -17c-3 0 -7 1 -9 3l-2 2l-156 136c-5 5 -9 11 -9 19s4 14 9 19l156 136z" /> - <glyph glyph-name="ion-arrow-left-c" unicode="" horiz-adv-x="352" -d="M109 320c12 12 32 12 44 0s12 -34 0 -46l-49 -50h217c17 0 31 -14 31 -32s-14 -32 -31 -32h-217l48 -50c12 -12 12 -34 0 -46s-31 -12 -43 0l-100 106c-6 6 -9 13 -9 22s3 17 9 23z" /> - <glyph glyph-name="ion-arrow-move" unicode="" -d="M448 192l-96 -96v76h-109l1 -108h76l-96 -96l-96 96h76v108h-108v-76l-96 96l96 96v-76h108v108h-76l96 96l96 -96h-76v-108h108v76z" /> - <glyph glyph-name="ion-arrow-resize" unicode="" horiz-adv-x="320" -d="M192 352h128v-128l-50 50l-9 -9l-183 -183l50 -50h-128v128l50 -50l128 128v0l64 64z" /> - <glyph glyph-name="ion-arrow-return-left" unicode="" horiz-adv-x="384" -d="M128 352v-64h248c4 0 8 -4 8 -8v-240c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v48c0 4 4 8 8 8h248v128h-192v-64l-128 96z" /> - <glyph glyph-name="ion-arrow-return-right" unicode="" horiz-adv-x="384" -d="M384 256l-128 -96v64h-192v-128h248c4 0 8 -4 8 -8v-48c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v240c0 4 4 8 8 8h248v64z" /> - <glyph glyph-name="ion-arrow-right-a" unicode="" horiz-adv-x="384" -d="M384 192l-192 -192v112h-192v160h192v112z" /> - <glyph glyph-name="ion-arrow-right-b" unicode="" horiz-adv-x="192" -d="M25 35c-2 -2 -6 -3 -9 -3c-9 0 -16 8 -16 17v0v286v0c0 9 7 17 16 17c3 0 6 -1 8 -3l3 -2l156 -136c5 -5 9 -11 9 -19s-4 -14 -9 -19l-156 -136z" /> - <glyph glyph-name="ion-arrow-right-c" unicode="" horiz-adv-x="352" -d="M243 320l100 -105c6 -6 9 -14 9 -23s-3 -16 -9 -22l-100 -106c-12 -12 -31 -12 -43 0s-12 34 0 46l48 50h-217c-17 0 -31 14 -31 32s14 32 31 32h217l-49 50c-12 12 -12 34 0 46s32 12 44 0z" /> - <glyph glyph-name="ion-arrow-shrink" unicode="" horiz-adv-x="384" -d="M384 356l-82 -82l50 -50h-128v128l50 -50l82 82zM384 28l-28 -28l-82 82l-50 -50v128h128l-50 -50zM0 28l82 82l-50 50h128v-128l-50 50l-82 -82zM0 356l28 28l82 -82l50 50v-128h-128l50 50z" /> - <glyph glyph-name="ion-arrow-swap" unicode="" horiz-adv-x="384" -d="M0 120c0 4 4 8 8 8h248v64l128 -96l-128 -96v64h-248c-4 0 -8 4 -8 8v48zM384 264c0 -4 -4 -8 -8 -8h-248v-64l-128 96l128 96v-64h248c4 0 8 -4 8 -8v-48z" /> - <glyph glyph-name="ion-arrow-up-a" unicode="" horiz-adv-x="384" -d="M192 384l192 -192h-112v-192h-160v192h-112z" /> - <glyph glyph-name="ion-arrow-up-b" unicode="" horiz-adv-x="320" -d="M317 121c2 -2 3 -6 3 -9c0 -9 -8 -16 -17 -16v0h-286v0c-9 0 -17 7 -17 16c0 3 1 6 3 8l2 3l136 156c5 5 11 9 19 9s14 -4 19 -9l136 -156z" /> - <glyph glyph-name="ion-arrow-up-c" unicode="" horiz-adv-x="274" -d="M9 259l105 100c6 6 14 9 23 9s16 -3 22 -9l106 -100c12 -12 12 -31 0 -43s-34 -12 -46 0l-50 48v-217c0 -17 -14 -31 -32 -31s-32 14 -32 31v217l-50 -49c-12 -12 -34 -12 -46 0s-12 32 0 44z" /> - <glyph glyph-name="ion-asterisk" unicode="" -d="M448 224v-64l-186 10l104 -170l-56 -32l-86 176l-86 -176l-56 32l104 170l-186 -10v64l187 -7l-109 167l60 32l86 -176l86 176l60 -32l-109 -167z" /> - <glyph glyph-name="ion-at" unicode="" -d="M422 41c-24 -25 -52 -43 -85 -55s-69 -18 -105 -18c-35 0 -66 6 -95 17s-53 26 -73 46s-36 43 -47 71s-17 58 -17 90s6 62 18 89s29 51 50 71s46 35 74 47c28 11 58 17 90 17c28 0 55 -4 81 -12s49 -20 69 -36s36 -36 48 -60s18 -53 18 -85c0 -24 -3 -46 -10 -64 -s-16 -34 -27 -46s-24 -22 -38 -28s-29 -10 -45 -10s-29 4 -39 12s-15 17 -15 29h-3c-6 -10 -15 -19 -28 -28s-28 -13 -46 -13c-28 0 -49 9 -64 27s-23 42 -23 71c0 17 3 34 9 50s14 31 24 44s23 23 38 31s31 12 49 12c15 0 27 -4 38 -10c10 -6 18 -15 21 -24h1l5 24h54 -l-24 -113c-1 -6 -2 -12 -3 -19s-2 -13 -2 -19c0 -7 1 -13 4 -18s7 -7 15 -7c16 0 29 9 39 26s16 40 16 68c0 24 -4 45 -12 64s-20 34 -34 47s-32 23 -52 29s-41 9 -65 9c-26 0 -49 -4 -70 -13s-39 -22 -54 -38s-27 -34 -35 -56c-8 -21 -13 -44 -13 -69c0 -26 4 -51 13 -72 -s21 -39 37 -54s35 -27 57 -35s46 -12 72 -12c33 0 61 6 85 16s45 25 65 43zM231 260c-10 0 -18 -2 -25 -8s-14 -13 -19 -22s-8 -18 -11 -28s-4 -20 -4 -30c0 -5 0 -10 1 -16c1 -5 3 -10 6 -15s7 -8 12 -11s11 -5 19 -5c11 0 20 3 28 8s14 13 19 21s9 16 11 26s3 19 3 27 -c0 6 0 13 -1 19s-4 12 -7 17s-7 9 -12 12s-12 5 -20 5z" /> - <glyph glyph-name="ion-backspace-outline" unicode="" horiz-adv-x="512" -d="M413 116c2 -2 3 -4 3 -6s-1 -4 -3 -6l-21 -22c-2 -2 -4 -2 -6 -2s-4 0 -6 2l-76 77l-76 -77c-2 -2 -4 -2 -6 -2s-4 0 -6 2l-21 22c-2 2 -3 4 -3 6s1 4 3 6l76 76l-77 76c-3 3 -3 9 0 12l22 22c2 2 4 2 6 2s4 0 6 -2l76 -76l76 76c2 2 4 2 6 2s4 0 6 -2l22 -22 -c3 -3 3 -9 0 -12l-77 -76zM499 354c9 -9 13 -20 13 -33v-256c0 -27 -20 -49 -46 -49h-298c-13 0 -24 3 -34 9c-9 5 -16 11 -23 20v0l-1 1l-110 146l110 148c14 19 34 28 58 28h298c13 0 24 -5 33 -14zM480 65v256c0 9 -5 15 -14 15h-298c-11 0 -22 -3 -32 -16l-96 -128 -l96 -128c8 -10 17 -16 32 -16h298c9 0 14 8 14 17z" /> - <glyph glyph-name="ion-backspace" unicode="" horiz-adv-x="512" -d="M499 354c9 -9 13 -20 13 -33v-256c0 -27 -20 -49 -46 -49h-298c-13 0 -24 3 -34 9c-9 5 -16 11 -23 20v0l-1 1l-110 146l110 148c14 19 34 28 58 28h298c13 0 24 -5 33 -14zM413 116l-76 76l77 76c3 3 3 9 0 12l-22 22c-2 2 -4 2 -6 2s-4 0 -6 -2l-76 -76l-76 76 -c-2 2 -4 2 -6 2s-4 0 -6 -2l-22 -22c-3 -3 -3 -9 0 -12l77 -76l-76 -76c-2 -2 -3 -4 -3 -6s1 -4 3 -6l21 -22c2 -2 4 -2 6 -2s4 0 6 2l76 77l76 -77c2 -2 4 -2 6 -2s4 0 6 2l21 22c2 2 3 4 3 6s-1 4 -3 6z" /> - <glyph glyph-name="ion-bag" unicode="" -d="M416 288l32 -320h-448l32 320h64v4c0 68 56 124 124 124h8c68 0 124 -56 124 -124v-4h64zM128 292v-4h192v4c0 51 -41 92 -92 92v0h-8c-51 0 -92 -41 -92 -92zM36 0h376l-25 256h-35v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36 -h-192v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36h-35z" /> - <glyph glyph-name="ion-battery-charging" unicode="" -d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM225 288l-100 -111h61l-27 -81l100 111h-61z" /> - <glyph glyph-name="ion-battery-empty" unicode="" -d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-337v-192h337v32v32h32h15z" /> - <glyph glyph-name="ion-battery-full" unicode="" -d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37z" /> - <glyph glyph-name="ion-battery-half" unicode="" -d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-81l32 -192h49v32v32h32h15z" /> - <glyph glyph-name="ion-battery-low" unicode="" -d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM369 288h-209l32 -192h177v32v32h32h15v64h-15h-32v32v32z" /> - <glyph glyph-name="ion-beaker" unicode="" horiz-adv-x="384" -d="M80 256h240v-224c0 -9 -7 -16 -16 -16h-208c-9 0 -16 7 -16 16v224zM296 104v48c0 4 -4 8 -8 8s-8 -4 -8 -8v-48c0 -4 4 -8 8 -8s8 4 8 8zM288 176c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM381 416c3 0 3 -2 3 -3s-2 -3 -3 -5s-13 -20 -13 -40v-336 -c0 -35 -29 -64 -64 -64h-208c-35 0 -64 29 -64 64v307c0 32 -2 33 -32 37c0 12 11 40 65 40h316zM336 368c0 5 0 16 1 16h-273c-1 0 -3 0 -4 -1c5 -7 4 -32 4 -44v-307c0 -18 14 -32 32 -32h210c17 0 30 14 30 32v336z" /> - <glyph glyph-name="ion-beer" unicode="" -d="M384 288c35 0 64 -29 64 -64v-96c0 -35 -29 -64 -64 -64h-32v-80c0 -9 -7 -16 -16 -16h-256c-9 0 -16 7 -16 16v223c-26 0 -48 22 -48 48v54v1c-10 11 -16 26 -16 42c0 35 29 64 64 64c18 0 34 -8 46 -20c10 12 26 20 43 20c14 0 27 -6 37 -14c12 9 26 14 42 14 -c17 0 34 -6 46 -16c11 10 26 16 42 16c35 0 64 -29 64 -64c0 -24 -18 -44 -32 -48v-16h32zM296 144c4 0 8 3 8 8v0v48c0 4 -4 8 -8 8s-8 -4 -8 -8v-48c0 -3 2 -6 4 -7c1 -1 2 -1 4 -1zM303 220c1 2 1 4 1 6s-1 4 -3 5s-4 1 -6 1s-4 -2 -5 -4s-2 -4 -2 -6s2 -4 4 -5 -s4 -1 6 -1s4 2 5 4zM320 288v32h-20c-3 -8 -7 -16 -13 -23c-13 -16 -33 -25 -55 -25c-26 0 -48 13 -61 33c-6 -2 -12 -3 -18 -3c-12 0 -23 4 -32 10c-2 1 -3 3 -5 4c-1 -2 -2 -3 -3 -5c-5 -6 -11 -10 -17 -14v-32v-9h80c0 4 4 8 8 8s8 -4 8 -8h128v32zM351 343c1 3 1 6 1 9 -c0 18 -14 32 -32 32c-9 0 -17 -4 -23 -10c-2 -2 -6 -5 -16 -6h-8c-6 1 -12 3 -14 5c-7 7 -16 11 -27 11c-9 0 -18 -4 -25 -9l-7 -7c0 -1 0 -1 -1 -2c-3 -3 -7 -5 -11 -5c-5 0 -8 3 -11 6c-1 2 -2 3 -3 5s-3 4 -5 6c-4 4 -10 6 -16 6c-10 0 -18 -9 -25 -16 -c-7 -8 -27 -8 -34 0s-18 16 -30 16c-18 0 -32 -14 -32 -32c0 -2 1 -5 1 -7c2 -9 7 -17 15 -21v-34v-35c0 -9 7 -16 16 -16v26v23v32c10 0 18 4 24 11c2 2 3 4 4 6c0 0 6 10 12 11s20 6 30 -5c4 -5 11 -9 19 -9c3 0 5 1 7 2c3 1 7 2 9 4v0c3 2 6 4 10 4c7 0 12 -4 14 -10 -c0 0 1 -1 1 -2c1 -3 1 -5 3 -8c7 -12 20 -20 35 -20c13 0 25 6 32 16c5 7 8 15 8 24s9 8 9 8h7h48c6 0 13 -3 15 -9zM416 128v96c0 18 -14 32 -32 32h-32v-160h32c18 0 32 14 32 32zM128 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM288 280c0 5 3 8 8 8s8 -3 8 -8 -s-3 -8 -8 -8s-8 3 -8 8z" /> - <glyph glyph-name="ion-bluetooth" unicode="" horiz-adv-x="256" -d="M12 304c16 16 18 13 19 12l68 -65v0v0c2 -2 10 -10 10 -3v156v0v2c0 6 6 10 12 10c4 0 7 -2 9 -4v0s117 -113 122 -117s5 -10 1 -14l-84 -81s-4 -4 -4 -8s4 -8 4 -8l84 -81c4 -4 4 -10 -1 -14s-122 -117 -122 -117v0c-2 -2 -5 -4 -9 -4c-6 0 -12 4 -12 10v2v0v156 -s-8 -1 -10 -3v0v-1l-68 -64c-1 -1 -3 -4 -19 12s-12 17 -11 18s90 86 90 86s4 3 4 8v0c0 5 -4 8 -4 8s-89 85 -90 86s-5 2 11 18zM152 328v-79c0 -8 8 -1 10 1l30 30s3 5 3 7s-1 5 -3 7l-30 30c-2 2 -10 11 -10 4zM152 135v-79s8 2 10 4l30 30c2 2 3 5 3 7s-1 5 -3 7l-30 30 -c-2 2 -10 9 -10 1z" /> - <glyph glyph-name="ion-bonfire" unicode="" horiz-adv-x="384" -d="M207 97l15 -89c1 -3 1 -5 1 -8c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 2 0 5 1 7l15 92v0c2 7 8 13 16 13s15 -7 16 -15zM242 93v0v0v0zM329 58c9 -8 10 -25 0 -35s-27 -9 -35 0c-1 1 -2 3 -3 4l-49 66c-3 5 -2 11 2 15c5 5 10 5 16 1l64 -47c2 -1 3 -3 5 -4zM309 113v0 -v0v0zM371 126c9 -1 13 -7 13 -19c0 -9 -10 -14 -18 -12l-57 18v0v0c-3 2 -6 5 -5 9s4 7 8 6zM75 113v0v0v0zM75 113v0l-58 -18c-8 -2 -17 3 -17 12c0 12 3 18 12 19l60 2c4 1 7 -2 8 -6s-2 -7 -5 -9v0zM124 109c5 4 11 4 16 -1c4 -4 5 -10 2 -15l-49 -66c-1 -1 -2 -3 -3 -4 -c-10 -10 -25 -10 -35 0s-10 25 0 35c2 2 3 3 5 4zM288 320c0 -32 -9 -58 -50 -86c-37 -26 -94 -46 -110 -106c0 0 -58 24 -48 96s124 106 112 192c24 0 96 -35 96 -96zM288 192c-16 -50 -44 -64 -80 -64c-15 0 -32 9 -43 26c12 15 28 26 47 37c9 5 20 10 29 16 -c21 14 38 31 47 49c5 -15 5 -48 0 -64zM88 288c-6 4 -9 14 -8 27c2 22 34 39 32 69c14 2 31 -3 42 -24c-5 -11 -15 -21 -28 -34s-26 -22 -38 -38z" /> - <glyph glyph-name="ion-bookmark" unicode="" horiz-adv-x="192" -d="M184 384c4 0 8 -4 8 -8v-56h-192v56c0 4 4 8 8 8h176zM0 0v304h192v-304l-96 96z" /> - <glyph glyph-name="ion-bowtie" unicode="" -d="M192 236c0 0 8 5 20 7c21 4 39 5 47 -9c10 -17 19 -53 17 -85c-1 -17 -5 -22 -5 -22s-15 -10 -47 -7c-35 3 -40 15 -40 15s5 12 8 43s0 58 0 58zM152 163c-17 -4 -38 -10 -38 -10s45 4 64 9c-4 -21 -10 -34 -10 -34s-83 -80 -116 -80c-28 0 -52 68 -52 144s26 144 52 144 -c35 0 106 -57 128 -97c0 0 3 -16 2 -32c-10 5 -24 10 -44 14c-28 6 -42 3 -42 3s18 -4 57 -17c15 -5 22 -8 29 -10c0 -3 -1 -7 -1 -10c0 -5 0 -10 -1 -15c-5 -2 -15 -6 -28 -9zM396 336c26 0 52 -68 52 -144s-24 -144 -52 -144c-37 0 -104 68 -112 79c0 0 4 5 5 22v9 -c16 -7 70 -13 70 -13s-21 6 -40 11c-13 4 -25 8 -30 10c-1 11 -2 23 -4 33c17 11 69 34 69 34s-15 -2 -35 -9c-14 -5 -29 -11 -37 -14c-3 10 -7 18 -10 24c0 1 -1 4 -1 4v1c22 40 89 97 125 97z" /> - <glyph glyph-name="ion-briefcase" unicode="" -d="M240 176v8h208v-176c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v176h208v-8h32zM440 304c4 0 8 -4 8 -8v-96h-208v8h-32v-8h-208v96c0 4 4 8 8 8h120v31c1 28 22 49 51 49h90c30 0 50 -21 51 -49v-31h120zM288 332v1c0 10 -9 19 -19 19h-90c-10 0 -19 -9 -19 -19v-1v-1v-27 -h128v27v1z" /> - <glyph glyph-name="ion-bug" unicode="" -d="M343 321c-6 -16 -16 -31 -28 -43c-24 -24 -57 -37 -91 -37s-67 13 -91 37c-12 12 -22 27 -28 43c29 39 72 63 119 63s90 -24 119 -63zM95 305c22 -45 68 -77 121 -80v-225c-40 2 -77 22 -104 54c-7 -6 -10 -9 -13 -15c8 -9 7 -22 -1 -31c-9 -10 -24 -11 -34 -2 -s-11 24 -2 34l3 3s2 1 2 1c4 13 13 25 27 36c-15 26 -26 57 -29 90c-7 0 -12 -2 -17 -3c-1 -13 -11 -23 -24 -23s-24 11 -24 24s11 24 24 24h3c4 2 8 5 12 6c7 2 14 4 25 4c1 23 6 45 13 65c-6 4 -11 7 -15 11c-6 5 -11 13 -14 19c-1 0 -3 1 -4 2c-12 6 -15 21 -9 33 -s21 15 33 9c11 -6 15 -20 10 -31c2 -3 3 -7 4 -8c2 -2 5 -3 8 -5c2 3 3 5 5 8zM424 192c13 0 24 -11 24 -24s-11 -24 -24 -24s-23 10 -24 23c-5 1 -10 3 -17 3c-3 -33 -14 -64 -29 -90c14 -11 23 -23 27 -36c0 0 1 0 2 -1l3 -3c9 -10 8 -25 -2 -34s-25 -8 -34 2 -c-8 9 -9 22 -1 31c-3 6 -6 9 -13 15c-27 -32 -64 -52 -104 -54v225c53 3 99 35 121 80c2 -3 3 -5 5 -8c3 2 6 3 8 5c1 1 2 5 4 8c-5 11 -1 25 10 31c12 6 27 3 33 -9s3 -27 -9 -33c-1 -1 -3 -2 -4 -2c-3 -6 -8 -14 -14 -19c-4 -4 -9 -7 -15 -11c7 -20 12 -42 13 -65 -c11 0 18 -2 25 -4c4 -1 8 -4 12 -6h3z" /> - <glyph glyph-name="ion-calculator" unicode="" horiz-adv-x="320" -d="M304 416c9 0 16 -7 16 -16v-416c0 -9 -7 -16 -16 -16h-288c-9 0 -16 7 -16 16v416c0 9 7 16 16 16h288zM48 240v-32h32v32h-32zM48 176v-32h32v32h-32zM48 112v-32h32v32h-32zM144 16v32h-96v-32h96zM144 80v32h-32v-32h32zM144 144v32h-32v-32h32zM144 208v32h-32v-32 -h32zM208 16v32h-32v-32h32zM208 80v32h-32v-32h32zM208 144v32h-32v-32h32zM208 208v32h-32v-32h32zM272 16v96h-32v-96h32zM272 144v32h-32v-32h32zM272 208v32h-32v-32h32zM272 288v80h-224v-80h224z" /> - <glyph glyph-name="ion-calendar" unicode="" -d="M112 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM336 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM440 384c4 0 8 -4 8 -8v-400c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v400 -c0 4 4 8 8 8h56v-41c0 -22 24 -39 48 -39s48 17 48 39v41h128v-41c0 -22 25 -39 49 -39s47 17 47 39v41h56zM400 16v256h-352v-256h352z" /> - <glyph glyph-name="ion-camera" unicode="" horiz-adv-x="416" -d="M382 301c18 0 34 -14 34 -33v-202c0 -19 -16 -34 -34 -34h-348c-19 0 -34 15 -34 34v202c0 19 15 33 34 33h69l39 40v0c6 7 15 11 25 11h84c9 0 17 -4 23 -10v0v0v0l41 -41h67zM208 82c51 0 92 42 92 93s-41 93 -92 93s-92 -42 -92 -93s41 -93 92 -93zM376 248 -c8 0 14 6 14 14s-6 14 -14 14s-14 -6 -14 -14s6 -14 14 -14zM208 245c38 0 70 -31 70 -70s-32 -70 -70 -70c-39 0 -70 31 -70 70s31 70 70 70z" /> - <glyph glyph-name="ion-card" unicode="" -d="M420 352c16 0 28 -12 28 -28v0v-264v0c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v0v0v264v0v0c0 16 12 28 28 28h392zM45 320c-7 0 -12 -5 -13 -12v-20h384v20c-1 7 -6 12 -13 12h-358zM403 64c7 0 12 5 13 12v116h-384v-116c1 -7 6 -12 13 -12h358zM64 128v16 -h192v-16h-192zM64 96v16h96v-16h-96zM320 96v48h64v-48h-64z" /> - <glyph glyph-name="ion-cash" unicode="" horiz-adv-x="512" -d="M0 352h512v-256h-512v256zM193 128c-20 23 -33 58 -33 96s13 73 33 96h-97c0 -35 -29 -64 -64 -64v-80c27 0 48 -21 48 -48h113zM298 187c3 4 4 9 4 15c0 3 0 5 -1 8s-2 6 -4 8s-4 4 -7 6s-6 4 -10 5c-1 0 -4 1 -7 2s-5 0 -8 1v31c2 -1 5 -2 7 -3c4 -3 6 -7 7 -13h20 -c0 5 -2 9 -4 13s-5 8 -9 11s-9 5 -14 6c-2 1 -5 2 -7 2v9h-18v-9c-2 0 -4 -1 -6 -2c-5 -1 -10 -2 -14 -5s-7 -6 -9 -10s-4 -9 -4 -14c0 -3 0 -5 1 -8s2 -5 4 -7s5 -5 8 -7s7 -4 12 -5c3 -1 6 0 8 -1v-35c-3 1 -6 2 -9 4s-5 4 -6 7s-2 6 -2 9h-20c0 -5 2 -11 4 -16 -c3 -5 6 -8 10 -11s9 -6 15 -7c3 -1 5 -2 8 -2v-9h18v9c3 0 6 1 9 2c5 1 10 2 14 5s7 7 10 11zM480 176v80c-35 0 -64 29 -64 64h-97c20 -23 33 -58 33 -96s-13 -73 -33 -96h113c0 27 22 48 48 48zM64 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z -M384 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32zM273 213c2 -1 4 -2 6 -4s3 -5 3 -9c0 -2 0 -4 -1 -6s-2 -4 -4 -5s-5 -3 -8 -4c-1 0 -2 -1 -4 -1v31c3 -1 6 -1 8 -2zM236 257c1 2 3 3 5 4s4 2 6 2v-26c-4 1 -7 3 -9 5s-4 4 -4 8c0 3 1 5 2 7zM0 32 -v32h512v-32h-512z" /> - <glyph glyph-name="ion-chatbox-working" unicode="" horiz-adv-x="416" -d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153zM304 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 256c-18 0 -32 -14 -32 -32s14 -32 32 -32 -s32 14 32 32s-14 32 -32 32zM112 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" /> - <glyph glyph-name="ion-chatbox" unicode="" horiz-adv-x="416" -d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153z" /> - <glyph glyph-name="ion-chatboxes" unicode="" horiz-adv-x="416" -d="M246 82l26 -18c-4 -21 -29 -32 -52 -32h-90c-8 0 -11 -2 -13 -3l-53 -45v48h-16c-26 0 -48 16 -48 41v129c0 25 20 45 46 45h2v-101c0 -33 29 -59 64 -59h117c10 0 14 -3 17 -5zM353 400c35 0 63 -27 63 -60v-168c0 -33 -28 -60 -63 -60h-17v-64l-75 60c-2 2 -7 4 -17 4 -h-101c-35 0 -63 27 -63 60v98v70c0 33 21 60 56 60h217z" /> - <glyph glyph-name="ion-chatbubble-working" unicode="" horiz-adv-x="416" -d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15zM304 224c-18 0 -32 -14 -32 -32 -s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM112 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" /> - <glyph glyph-name="ion-chatbubble" unicode="" horiz-adv-x="416" -d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15z" /> - <glyph glyph-name="ion-chatbubbles" unicode="" horiz-adv-x="416" -d="M25 57c-1 1 0 2 -1 3c-15 22 -24 49 -24 77c0 42 19 80 49 106c-2 -11 -4 -22 -4 -34c0 -92 78 -168 174 -168c15 0 30 2 44 6c-27 -32 -69 -53 -115 -53c-20 0 -40 5 -58 12h-1v0c-2 1 -5 2 -8 2s-6 -1 -9 -2l-56 -22l12 63c0 4 -1 7 -3 10v0zM242 400 -c96 0 174 -76 174 -168c0 -33 -11 -64 -28 -90c-1 -1 -1 -2 -2 -3v0c-2 -4 -3 -8 -3 -12l17 -74l-69 26c-3 1 -6 2 -10 2c-3 0 -6 -1 -9 -2v0l-2 -1c-8 -3 -16 -5 -24 -7c-14 -4 -29 -6 -44 -6c-96 0 -173 75 -173 167c0 12 1 24 3 35c16 76 86 133 170 133z" /> - <glyph glyph-name="ion-checkmark-circled" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM339 267c1 1 1 2 1 3s0 3 -1 4l-31 24c-1 1 -3 1 -4 1s-2 0 -3 -1l-111 -143s-44 42 -45 43s-4 3 -6 3s-3 -2 -4 -3l-25 -25l-1 -1c-1 -1 -1 -3 -1 -4s0 -2 1 -3l2 -1 -s78 -75 79 -76s3 -3 5 -3s4 2 5 3z" /> - <glyph glyph-name="ion-checkmark-round" unicode="" horiz-adv-x="416" -d="M400 376c17 -13 22 -39 9 -57l-207 -302c-13 -18 -37 -22 -54 -9s-137 147 -137 147c-15 16 -15 42 1 58s40 15 55 -2l99 -107l180 263c13 18 37 22 54 9z" /> - <glyph glyph-name="ion-checkmark" unicode="" horiz-adv-x="416" -d="M414 338c1 -2 2 -4 2 -6s-1 -4 -2 -6l-249 -320c-2 -2 -5 -6 -9 -6s-8 3 -10 5s-141 136 -141 136l-3 3c-1 2 -2 4 -2 6s1 3 2 5l2 2c14 15 42 44 44 46s4 6 8 6s8 -4 10 -6s80 -78 80 -78l200 257c2 2 4 2 6 2s5 -1 7 -2z" /> - <glyph glyph-name="ion-chevron-down" unicode="" -d="M224 150v0v0l174 167c4 4 12 4 16 0l31 -30c4 -4 4 -12 0 -16l-213 -204c-2 -2 -5 -3 -8 -3s-6 1 -8 3l-213 204c-4 4 -4 12 0 16l31 30c4 4 12 4 16 0z" /> - <glyph glyph-name="ion-chevron-left" unicode="" horiz-adv-x="256" -d="M86 192l167 -174c4 -4 4 -12 0 -16l-30 -31c-4 -4 -12 -4 -16 0l-204 213c-2 2 -3 5 -3 8s1 6 3 8l204 213c4 4 12 3 16 -1l30 -30c4 -4 4 -12 0 -16l-167 -174v0v0z" /> - <glyph glyph-name="ion-chevron-right" unicode="" horiz-adv-x="256" -d="M170 192v0v0l-167 174c-4 4 -4 12 0 16l30 30c4 4 12 5 16 1l204 -213c2 -2 3 -5 3 -8s-1 -6 -3 -8l-204 -213c-4 -4 -12 -4 -16 0l-30 31c-4 4 -4 12 0 16z" /> - <glyph glyph-name="ion-chevron-up" unicode="" -d="M224 234l-174 -167c-4 -4 -12 -4 -16 0l-31 30c-4 4 -4 12 0 16l213 204c2 2 5 3 8 3s6 -1 8 -3l213 -204c4 -4 4 -12 0 -16l-31 -30c-4 -4 -12 -4 -16 0l-174 167v0v0z" /> - <glyph glyph-name="ion-clipboard" unicode="" horiz-adv-x="352" -d="M80 288c2 20 10 35 28 40l1 1c12 3 21 7 21 20v21c0 26 21 46 46 46s46 -20 46 -46v-21c0 -13 9 -18 21 -21h2c18 -5 25 -20 27 -40h-192zM176 384c-8 0 -13 -6 -13 -14s5 -14 13 -14s14 6 14 14s-6 14 -14 14zM325 384c15 0 27 -12 27 -28v-360c0 -16 -12 -28 -27 -28 -h-149h-148c-15 0 -28 12 -28 28v360c0 16 13 28 28 28h73v-13c0 -11 -9 -19 -19 -19h-37c-7 0 -12 -6 -12 -13v-327c0 -6 5 -12 11 -12h265c6 0 11 6 11 12v327c0 7 -5 13 -12 13h-37c-10 0 -20 8 -20 19v13h74zM64 224v32h112v-32h-112zM64 32v32h160v-32h-160zM64 96v32 -h129v-32h-129zM64 160v32h208v-32h-208z" /> - <glyph glyph-name="ion-clock" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c10 10 19 21 26 33l-27 16l8 14l27 -16c13 25 21 52 22 81h-32v16h32c-1 29 -9 56 -22 81l-27 -16l-8 14l27 16c-7 12 -16 23 -26 33s-21 19 -33 26l-16 -27l-14 8 -l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -27l-14 -8l-16 27c-12 -7 -23 -16 -33 -26s-19 -21 -26 -33l27 -16l-8 -14l-27 16c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -29 9 -56 22 -81l27 16l8 -14l-27 -16c7 -12 16 -23 26 -33s21 -19 33 -26 -l16 27l14 -8l-16 -27c25 -13 52 -21 81 -22v32h16v-32c29 1 56 9 81 22l-16 27l14 8l16 -27c12 7 23 16 33 26zM368 207v-32h-117c-6 -9 -16 -15 -27 -15c-18 0 -32 14 -32 32c0 12 6 22 16 28v68h32v-68c5 -3 9 -8 12 -13h116z" /> - <glyph glyph-name="ion-close-circled" unicode="" -d="M224 415c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM332 116l-75 75l76 75c3 3 3 9 0 12l-22 21c-2 2 -4 3 -6 3s-3 -1 -5 -3l-76 -74l-76 74c-2 2 -3 3 -5 3s-4 -1 -6 -3l-21 -21c-3 -3 -3 -9 0 -12l76 -75l-76 -76 -c-2 -1 -2 -3 -2 -5s0 -4 2 -6l21 -22c2 -2 4 -2 6 -2s4 0 6 2l75 76l76 -75c2 -2 3 -3 5 -3s4 1 6 3l21 21c2 1 3 4 3 6s-1 4 -3 6z" /> - <glyph glyph-name="ion-close-round" unicode="" horiz-adv-x="384" -d="M374 61c14 -14 14 -37 0 -51s-37 -14 -51 0l-131 131l-131 -131c-14 -14 -36 -14 -50 0s-14 37 0 51l130 131l-130 131c-14 14 -14 37 0 51s36 14 50 0l131 -131l131 131c14 14 37 14 51 0s14 -37 0 -51l-131 -131z" /> - <glyph glyph-name="ion-close" unicode="" horiz-adv-x="384" -d="M380 61c3 -3 4 -6 4 -10s-1 -7 -4 -10l-38 -37c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-131 131l-131 -131c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-38 37c-3 3 -4 6 -4 10s1 7 4 10l132 131l-132 130c-5 5 -5 15 0 20l37 38c3 2 6 4 10 4s7 -1 10 -4l131 -130l131 130c3 2 6 4 10 4 -s7 -1 10 -4l37 -38c5 -5 5 -14 0 -19l-132 -130z" /> - <glyph glyph-name="ion-closed-captioning" unicode="" horiz-adv-x="512" -d="M0 384h512v-384h-512v384zM464 192c0 27 0 44 -4 80s-23 56 -59 60s-91 4 -138 4h-7h-7c-47 0 -102 0 -138 -4s-55 -24 -59 -60s-4 -53 -4 -80s2 -47 4 -80s19 -56 59 -60s96 -4 145 -4s105 0 145 4s57 27 59 60s4 53 4 80zM372 164v4h53c0 -27 -7 -48 -19 -62 -s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28c1 -17 12 -29 27 -29s27 10 27 29v1z -M195 164v4h53c0 -27 -7 -48 -19 -62s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28 -c1 -17 12 -29 27 -29s27 10 27 29v1z" /> - <glyph glyph-name="ion-cloud" unicode="" -d="M366 215c45 0 82 -38 82 -84s-37 -83 -82 -83v0h-276c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" /> - <glyph glyph-name="ion-code-download" unicode="" -d="M299 164l-63 -63v0l-1 -1v0l-2 -1v0l-1 -1v0l-2 -1v0h-1v0h-1c-1 0 -3 -1 -4 -1s-3 1 -4 1h-1v0h-1v0l-2 1v0l-1 1v0c-1 1 -2 1 -3 2v0l-63 63c-6 6 -6 17 0 23s18 6 24 0l35 -34v118c0 9 7 17 16 17s16 -8 16 -17v-118l35 34c6 6 18 6 24 0s6 -17 0 -23zM136 56 -c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112 -c-5 -5 -11 -7 -17 -7z" /> - <glyph glyph-name="ion-code-working" unicode="" -d="M128 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM200 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM272 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM136 56c-7 0 -12 2 -17 7l-112 112c-5 5 -7 10 -7 17 -s2 12 7 17l112 112c5 5 10 7 17 7s12 -2 17 -7s7 -10 7 -17s-2 -12 -7 -17l-95 -95l95 -95c5 -5 7 -10 7 -17s-2 -12 -7 -17s-10 -7 -17 -7zM312 56c-7 0 -12 2 -17 7s-7 10 -7 17s2 12 7 17l95 95l-95 95c-5 5 -7 10 -7 17s2 12 7 17s10 7 17 7s12 -2 17 -7l112 -112 -c5 -5 7 -10 7 -17s-2 -12 -7 -17l-112 -112c-5 -5 -10 -7 -17 -7z" /> - <glyph glyph-name="ion-code" unicode="" -d="M136 56c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112 -c-5 -5 -11 -7 -17 -7z" /> - <glyph glyph-name="ion-coffee" unicode="" horiz-adv-x="384" -d="M319 191c37 -7 65 -40 65 -79c0 -20 -8 -39 -21 -54c-15 -17 -37 -26 -61 -26c-8 0 -17 1 -25 3c-6 1 -10 3 -15 5c-11 -15 -23 -25 -32 -33v0c-5 -5 -12 -7 -19 -7h-102c-7 0 -14 2 -19 7v0c-17 15 -41 36 -62 86s-28 91 -28 111s3 20 16 20h101c-5 17 -37 19 -37 46 -c0 17 15 32 28 37c-2 -8 -3 -14 -3 -21c0 -19 39 -30 39 -53c0 -3 0 -6 -1 -9h56c1 5 2 10 2 14c0 36 -56 36 -56 84c0 28 21 55 47 62c-4 -14 -9 -23 -9 -35c0 -32 57 -50 57 -88c0 -13 -5 -25 -12 -37h76c13 0 16 0 16 -20c0 -4 0 -8 -1 -13zM302 64c33 0 50 25 50 48 -s-17 43 -39 47c-4 -19 -11 -42 -21 -66c-4 -9 -8 -17 -12 -25c6 -3 13 -4 22 -4z" /> - <glyph glyph-name="ion-compass" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224c0 39 10 76 27 108c-16 12 -27 30 -27 52c0 35 29 64 64 64c22 0 40 -11 52 -27c32 17 69 27 108 27zM32 352c0 -10 5 -20 13 -26c13 17 28 32 45 45c-6 8 -16 13 -26 13c-18 0 -32 -14 -32 -32z -M360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM320 320c0 0 -54 -130 -72 -152s-120 -104 -120 -104s54 132 72 152s120 104 120 104z" /> - <glyph glyph-name="ion-compose" unicode="" horiz-adv-x="384" -d="M379 348c7 -7 7 -18 0 -25l-32 -31l-55 55l31 32c7 7 18 7 25 0zM282 338l55 -55l-177 -173l-64 -14l14 64zM320 192l32 32v-201c0 -13 -10 -23 -23 -23h-306c-13 0 -23 10 -23 23v306c0 13 10 23 23 23h201l-32 -32h-149c-6 0 -11 -5 -11 -10v-268s4 -10 10 -10h269 -s9 5 9 10v150z" /> - <glyph glyph-name="ion-connection-bars" unicode="" horiz-adv-x="352" -d="M0 32v64h64v-64h-64zM96 32v128h64v-128h-64zM192 32v224h64v-224h-64zM288 32v320h64v-320h-64z" /> - <glyph glyph-name="ion-contrast" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56v-384c51 0 100 20 136 56z" /> - <glyph glyph-name="ion-crop" unicode="" -d="M320 -32v48h64v-48h-64zM384 96h64v-64h-384v256h-64v64h64v64h64v-320h192v192h-176v64h240v-256z" /> - <glyph glyph-name="ion-cube" unicode="" -d="M435 280c7 0 13 -6 13 -12v-183c0 -9 -6 -17 -14 -22v-1l-175 -92v-1c-2 -1 -4 -1 -6 -1c-7 0 -13 6 -13 12v185c0 9 5 17 13 22v0l3 2l172 89l2 1c2 1 3 1 5 1zM422 329c0 0 8 -3 8 -9c0 -7 -8 -11 -8 -11l-183 -97l-2 -1c-4 -2 -8 -3 -13 -3s-9 1 -13 3l-2 1l-183 96 -s-8 5 -8 12c0 6 8 9 8 9l181 82s11 5 17 5s17 -5 17 -5zM195 187c8 -5 13 -13 13 -22v-185c0 -6 -6 -12 -13 -12c-2 0 -4 1 -6 2v0l-175 92v1c-8 5 -14 13 -14 22v183c0 6 6 12 13 12c2 0 4 0 5 -1l2 -1l171 -89z" /> - <glyph glyph-name="ion-disc" unicode="" -d="M224 289c54 0 97 -43 97 -97s-43 -97 -97 -97s-97 43 -97 97s43 97 97 97zM224 148c24 0 44 20 44 44s-20 44 -44 44s-44 -20 -44 -44s20 -44 44 -44zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 69 -c68 0 123 55 123 123s-55 123 -123 123s-123 -55 -123 -123s55 -123 123 -123z" /> - <glyph glyph-name="ion-document-text" unicode="" horiz-adv-x="288" -d="M286 279c1 -3 2 -6 2 -10v-245c0 -13 -10 -24 -22 -24h-243c-12 0 -23 11 -23 24v336c0 13 11 24 23 24h160c3 0 6 0 9 -2c2 -1 5 -3 7 -5l84 -92c2 -2 2 -4 3 -6zM48 269v-10c0 -1 1 -3 3 -3h71c2 0 3 2 3 3v10c0 2 -1 3 -3 3h-71c-2 0 -3 -1 -3 -3zM48 141v-10 -c0 -1 1 -3 3 -3h123c2 0 2 2 2 3v10c0 2 0 3 -2 3h-123c-2 0 -3 -1 -3 -3zM208 67v10c0 2 0 3 -2 3h-155c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h155c2 0 2 2 2 3zM240 195v10c0 2 0 3 -2 3h-187c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h187c2 0 2 2 2 3zM193 270h60l-71 78 -v-66c0 -6 5 -12 11 -12z" /> - <glyph glyph-name="ion-document" unicode="" horiz-adv-x="288" -d="M287 279c1 -3 1 -5 1 -9v-244c0 -13 -9 -26 -21 -26h-243c-12 0 -24 13 -24 26v335c0 13 12 23 24 23h160c3 0 6 0 9 -2c2 -1 5 -2 7 -4l83 -92c2 -2 3 -4 4 -7zM193 337v-63h58zM32 32h224v210h-67c-15 0 -28 13 -28 28v82h-129v-320z" /> - <glyph glyph-name="ion-drag" unicode="" horiz-adv-x="512" -d="M0 272v32h512v-32h-512zM0 176v32h512v-32h-512zM0 80v32h512v-32h-512z" /> - <glyph glyph-name="ion-earth" unicode="" -d="M325 322c2 -4 7 -12 3 -15c-3 -2 -10 -2 -13 5s0 11 -5 9s-7 3 -6 4c1 2 3 3 5 4c0 2 -4 8 2 7c4 -1 12 -10 14 -14zM344 277v0v0zM403 251c0 0 -2 0 0 0v0zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM141 19l8 -4 -c3 -1 6 -2 10 -3c14 -5 28 -8 43 -10c28 -3 56 -1 83 8c15 5 30 11 43 20c6 4 6 16 10 24c8 16 -2 33 12 47c12 14 4 19 4 34c0 10 8 18 4 29c-1 4 -7 -3 -9 1c-5 7 -21 1 -28 2c-13 2 -24 14 -33 23c-5 5 0 20 1 26c4 15 0 33 19 38c5 1 5 9 10 11c5 1 10 3 15 4 -c9 1 17 -2 26 -2c10 0 14 -5 22 -11c7 -6 13 -3 22 -5c7 0 0 5 -2 8c-3 2 -6 2 -8 2c-16 4 -23 22 -36 30c-6 3 -9 2 -11 0c-1 -1 1 -12 1 -12c-1 -3 -10 -4 -13 -5c-9 -2 -29 17 -15 22c4 1 27 5 24 15c-3 6 2 13 -5 14c-8 1 -7 7 -15 8c-5 1 -5 11 -5 14c0 9 2 6 9 7 -c-17 11 -37 19 -57 24c-1 -3 -5 -12 -8 -12c-5 -1 -6 0 -9 -3c-9 -10 -16 -28 -25 -7c-4 11 5 19 2 28h-6h-3c6 -12 -5 -18 -8 -19c-8 0 -10 5 -17 4c-4 -1 -7 4 -11 2s-13 -8 -14 -12c-3 -12 6 -13 14 -6c6 6 17 12 25 6c6 -5 5 -9 5 -14s-1 -18 -9 -16c-4 1 -7 6 -11 3 -c-8 -7 -18 -6 -29 -9c-10 -2 -16 -6 -25 -9c-8 -3 -11 -4 -12 -12c0 -2 0 -14 -3 -15c-5 -2 -8 22 -22 20c-12 -1 -30 -13 -25 -28c2 -5 28 -3 10 -14c-2 -1 2 -17 2 -20c1 -8 13 -18 21 -10c6 6 6 5 14 2c15 -8 33 -15 45 -27c6 -6 9 -24 17 -28c9 -5 19 -5 26 -14 -c6 -7 -2 -19 -8 -23c-4 -2 -12 -24 -16 -29c-2 -4 -12 -6 -16 -7c-3 0 -7 -9 -9 -11c-7 -7 -8 -13 -17 -19c-18 -12 -22 -23 -18 -44c2 -8 5 -13 11 -16zM100 46l2 -2c7 -6 15 -11 23 -16c-21 21 -23 49 -21 78l3 24c1 3 -4 7 -4 11c0 10 0 5 -8 13c-4 4 -10 11 -12 17 -c-7 16 1 30 10 43c9 14 -7 20 -10 32c-1 6 -7 6 -6 12c1 7 -4 5 -9 9c-12 8 -1 20 -7 26c-43 -70 -36 -162 16 -224c1 -1 0 -1 1 -2h1c3 -4 6 -8 9 -11s7 -6 10 -9z" /> - <glyph glyph-name="ion-easel" unicode="" -d="M48 112v192h352v-192h-352zM432 352c9 0 16 -7 16 -16v-256c0 -9 -7 -16 -16 -16h-416c-9 0 -16 7 -16 16v256c0 9 7 16 16 16h416zM416 96v224h-384v-224h384zM48 -32l29 80h31l-28 -80h-32zM239 416l17 -48h-64l17 48h30zM340 48h31l29 -80h-32zM208 0v48h32v-48h-32z -" /> - <glyph glyph-name="ion-edit" unicode="" -d="M381 259l-250 -251l-91 91l251 250zM440 360c12 -12 11 -32 -2 -45l-45 -45l-91 91l45 45c13 13 33 14 45 2zM32 85l85 -85l-117 -32z" /> - <glyph glyph-name="ion-egg" unicode="" horiz-adv-x="320" -d="M160 416c64 0 160 -133 160 -257s-64 -191 -160 -191s-160 67 -160 191s96 257 160 257z" /> - <glyph glyph-name="ion-eject" unicode="" horiz-adv-x="320" -d="M303 128h-286v0c-10 0 -17 7 -17 16c0 3 1 5 3 8l138 191c5 5 11 9 19 9s14 -4 19 -9l138 -190c2 -3 3 -6 3 -9c0 -9 -7 -16 -17 -16v0zM308 96c7 0 12 -5 12 -12v-40c0 -7 -5 -12 -12 -12h-296c-7 0 -12 5 -12 12v40c0 7 5 12 12 12h296z" /> - <glyph glyph-name="ion-email-unread" unicode="" horiz-adv-x="480" -d="M352 288c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM209 288h127c0 -17 5 -33 15 -47c-6 -3 -14 -8 -22 -12s-16 -8 -23 -12s-14 -8 -22 -12s-15 -8 -21 -11s-11 -6 -16 -9s-9 -5 -12 -7s-4 -3 -5 -3c-6 -3 -13 -4 -21 -4s-15 1 -21 4 -c-1 1 -15 8 -42 23s-54 29 -81 44s-43 23 -46 25c-7 4 -12 8 -13 11c-1 4 -1 6 1 8s6 2 11 2h191zM277 175c18 11 45 30 83 56c16 -15 34 -23 56 -23v-155c0 -2 -1 -4 -2 -7s-3 -5 -5 -7s-4 -4 -7 -5s-6 -2 -8 -2h-185h-185c-5 0 -11 2 -16 7s-8 9 -8 14v205c0 6 3 8 9 5 -c2 -1 11 -7 26 -17s32 -22 53 -36s39 -26 53 -35l-83 -93c-2 -2 -2 -4 -1 -5c2 -1 4 -1 6 1l98 83c16 -10 25 -16 27 -17c6 -3 13 -4 21 -4s15 1 21 4c2 1 11 7 27 17l98 -83c2 -2 5 -2 6 -1s0 3 -2 5z" /> - <glyph glyph-name="ion-email" unicode="" horiz-adv-x="416" -d="M19 299c-4 2 -11 7 -13 11c-3 8 1 10 12 10h191h191c11 0 15 -2 12 -10c-2 -4 -9 -9 -13 -11c-11 -6 -163 -89 -169 -92s-12 -4 -21 -4s-15 1 -21 4s-158 86 -169 92zM408 295c9 4 8 -1 8 -5v-205c0 -9 -12 -21 -22 -21h-185h-185c-10 0 -24 12 -24 21v205s0 9 9 5 -c8 -4 83 -56 132 -88l-83 -93c-2 -2 -2 -4 -1 -5s4 -1 6 1l98 83c15 -10 25 -16 27 -17c8 -4 14 -4 21 -4s13 0 21 4c2 1 12 7 27 17l98 -83c2 -2 5 -2 6 -1s0 3 -2 5l-82 93c49 32 123 84 131 88z" /> - <glyph glyph-name="ion-erlenmeyer-flask-bubbles" unicode="" horiz-adv-x="384" -d="M382 21c2 -4 3 -10 0 -14s-8 -7 -13 -7h-177h-178c-5 0 -9 3 -12 7s-2 10 0 14l118 199v150c0 8 6 14 14 14s15 -6 15 -14v-80c4 3 10 5 16 5c15 0 27 -12 27 -27s-12 -26 -27 -26c-6 0 -12 2 -16 5v-31c0 -2 -1 -4 -2 -6l-35 -59h72c-15 6 -26 20 -26 37 -c0 23 19 42 43 42c15 0 27 -8 35 -19c-1 2 -1 3 -1 5v154c0 8 6 14 14 14s15 -6 15 -14v-150zM218 151h53l-31 54c2 -5 3 -11 3 -17c0 -17 -10 -31 -25 -37zM201 319c-12 0 -22 9 -22 21s10 21 22 21s22 -9 22 -21s-10 -21 -22 -21z" /> - <glyph glyph-name="ion-erlenmeyer-flask" unicode="" horiz-adv-x="384" -d="M375 52c6 -9 9 -20 9 -32c0 -28 -16 -52 -63 -52h-258c-47 0 -63 24 -63 52c0 12 3 23 9 32l49 73l49 77c13 20 21 44 21 70v92s-14 34 -16 43c-2 8 1 9 17 9h126c16 0 18 -1 16 -9c-2 -9 -15 -22 -15 -42v-93c0 -26 6 -50 19 -70zM345 7c3 3 7 8 7 14c0 5 -2 10 -4 14 -l-101 150c-16 26 -23 56 -23 87v112h-64v-112c0 -32 -9 -62 -25 -87l-99 -150c-2 -4 -4 -9 -4 -14c0 -6 3 -11 6 -14c4 -4 12 -7 25 -7h258c13 0 20 3 24 7zM325 37c1 -2 3 -6 3 -8c0 -7 -6 -15 -14 -15h-244c-7 0 -14 6 -14 14c0 3 1 6 3 8l81 124h103l82 -124v1zM238 106 -c2 -1 4 -2 6 -2s3 0 5 2c1 2 3 4 3 6s-1 4 -3 6c-1 2 -3 2 -5 2s-4 0 -6 -2c-1 -2 -2 -4 -2 -6s0 -4 2 -6zM285 47c4 2 4 7 2 11l-23 36c-1 2 -4 4 -7 4c-2 0 -3 0 -4 -1c-4 -2 -4 -7 -2 -11l23 -36c1 -2 5 -4 7 -4c1 0 3 0 4 1z" /> - <glyph glyph-name="ion-eye-disabled" unicode="" -d="M344 290c41 -27 76 -66 104 -100c-51 -54 -124 -135 -224 -135c-36 0 -65 8 -92 22l-77 -77l-23 23l71 71c-36 25 -68 61 -103 98c78 85 142 137 224 137c34 0 64 -9 92 -23l77 78l23 -23zM134 192c0 -19 6 -36 16 -51l27 27c-4 7 -5 15 -5 24c0 29 23 53 52 53h8 -c-5 -6 -8 -13 -8 -21c0 -3 0 -5 1 -8l51 50c-15 11 -33 17 -52 17c-49 0 -90 -41 -90 -91zM224 101c49 0 90 41 90 91c0 19 -6 37 -16 52l-50 -51c3 -1 5 -1 8 -1c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53c-9 0 -17 2 -24 6l-28 -27c15 -11 33 -17 52 -17z" /> - <glyph glyph-name="ion-eye" unicode="" -d="M224 320c99 0 172 -70 224 -129c-51 -50 -124 -127 -224 -127s-157 60 -224 128c78 79 142 128 224 128zM224 101c49 0 90 41 90 91s-41 91 -90 91s-90 -41 -90 -91s41 -91 90 -91zM224 224c0 -18 14 -32 32 -32c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53s-52 24 -52 53 -s23 53 52 53h8c-5 -6 -8 -13 -8 -21z" /> - <glyph glyph-name="ion-female" unicode="" horiz-adv-x="256" -d="M160 164v-68h64v-64h-64v-64h-64v64h-64v64h64v68c-55 14 -96 64 -96 124c0 71 57 128 128 128s128 -57 128 -128c0 -60 -41 -110 -96 -124zM128 208c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" /> - <glyph glyph-name="ion-filing" unicode="" horiz-adv-x="384" -d="M317 319c12 0 19 0 19 -20v-28h-288v28c0 20 8 20 20 20h249zM269 352c13 0 19 -1 19 -19h-192c0 18 7 19 20 19h153zM368 278c13 -8 17 -17 15 -41l-17 -184c-4 -21 -16 -21 -24 -21h-300c-8 0 -20 0 -24 21l-17 185c-3 26 1 31 15 40l15 10v-32h321v32z" /> - <glyph glyph-name="ion-film-marker" unicode="" horiz-adv-x="416" -d="M400 240c9 0 16 -7 16 -15v-210c0 -8 -7 -15 -16 -15h-384c-9 0 -16 7 -16 15v210c0 8 6 14 13 15c-2 2 -3 4 -4 7l-9 45c-2 8 5 16 13 18l370 74c8 2 16 -4 18 -12l9 -46c2 -8 -4 -16 -12 -18l-342 -68h344zM257 46l-20 58l51 36h-62l-20 58l-19 -58h-63l51 -36l-19 -58 -l50 36z" /> - <glyph glyph-name="ion-fireball" unicode="" horiz-adv-x="320" -d="M297 210c14 -24 23 -52 23 -82c0 -33 -10 -63 -26 -88v0v0c-29 -43 -78 -72 -134 -72c-17 0 -32 1 -46 7s-25 13 -33 25c-11 16 -17 28 -21 52c-6 -25 2 -48 9 -60c-43 26 -69 71 -69 125v4c5 78 65 109 90 151c8 14 13 30 10 48c11 -9 15 -25 15 -39 -c0 -16 -3 -29 -3 -29c4 8 7 18 9 31c6 35 2 85 -37 132l-1 1s7 0 18 -3c95 -16 169 -91 184 -186c2 -12 3 -23 3 -35c0 -16 -2 -32 -5 -47c10 23 13 43 14 55v10z" /> - <glyph glyph-name="ion-flag" unicode="" horiz-adv-x="384" -d="M362 266c0 0 12 2 22 6c0 -16 -7 -32 -9 -36c-28 -50 -99 -123 -181 -84c-65 31 -92 30 -117 24c-1 0 -2 -1 -3 -1c-3 -1 -15 -5 -26 -1v197c0 16 14 31 33 35c39 7 106 5 148 -74c39 -74 97 -72 133 -66zM24 416c4 0 8 -4 8 -8v-432c0 -4 -4 -8 -8 -8h-16 -c-4 0 -8 4 -8 8v432c0 4 4 8 8 8h16z" /> - <glyph glyph-name="ion-flame" unicode="" horiz-adv-x="256" -d="M1 128c-11 109 72 224 159 288c-26 -145 97 -142 96 -288c-1 -120 -105 -160 -128 -160s-114 26 -127 160zM88 80c0 -44 40 -80 40 -80s41 36 41 80s-41 80 -41 80s-40 -36 -40 -80z" /> - <glyph glyph-name="ion-flash-off" unicode="" -d="M115 -4c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2c12 -4 24 -9 35 -15v0c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 8 -35 14zM86 291c-20 -28 -32 -62 -32 -99 -c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2c37 0 71 12 99 32l-52 53l36 40l55 -54c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -72 -12 -100 -32 -l53 -52l-36 -41zM178 58l38 113h-85l139 155l-38 -113h85z" /> - <glyph glyph-name="ion-flash" unicode="" horiz-adv-x="320" -d="M0 160l224 256l-51 -192h147l-224 -256l51 192h-147z" /> - <glyph glyph-name="ion-folder" unicode="" horiz-adv-x="384" -d="M366 256c18 0 19 -7 18 -18l-12 -186c-1 -11 -3 -20 -21 -20h-317c-18 0 -20 9 -21 20l-13 184c-1 11 0 20 18 20h348zM362 305l2 -33h-344c0 6 4 46 6 63c2 18 8 17 25 17h75c28 0 23 0 37 -15c16 -18 19 -17 41 -17h143c11 0 15 -3 15 -15z" /> - <glyph glyph-name="ion-fork-repo" unicode="" horiz-adv-x="320" -d="M320 368v-64h-48v-48h-64v48h-48v64h48v48h64v-48h48zM208 208h64v-5v0c0 -43 -7 -70 -38 -95c-23 -19 -51 -20 -75 -22c-9 -1 -18 -2 -26 -3c-6 -1 -13 -5 -20 -10c9 -11 15 -25 15 -41c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55 -c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-160c8 4 18 7 27 9c11 2 21 2 31 3c17 1 33 3 40 9c10 8 14 11 14 50zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32 -s14 -32 32 -32z" /> - <glyph glyph-name="ion-fork" unicode="" horiz-adv-x="128" -d="M78 299v0v0v0zM128 282c0 -26 -15 -48 -37 -58c-12 -6 -11 -11 -11 -11s16 -200 16 -213s-3 -18 -9 -24s-15 -8 -23 -8v0v0c-8 0 -16 2 -22 8s-10 13 -10 24s16 213 16 213s0 6 -11 11c-22 10 -37 32 -37 58c0 43 15 93 24 134h8v-117c0 -6 3 -11 9 -11s9 4 10 10v1 -l9 117h8l10 -117v-1c1 -6 3 -10 9 -10s9 5 9 11v117h8v0c9 -40 24 -91 24 -134z" /> - <glyph glyph-name="ion-forward" unicode="" horiz-adv-x="384" -d="M224 150c-102 0 -171 -9 -224 -102c0 0 37 208 224 208v80l160 -144l-160 -134v92z" /> - <glyph glyph-name="ion-funnel" unicode="" -d="M224 416c124 0 224 -36 224 -80c0 -8 -3 -15 -9 -22v0c-35 -43 -151 -179 -151 -218v-4v-83v0c0 -23 -29 -41 -64 -41s-64 18 -64 41v0v87c0 39 -117 177 -149 216v0c-7 8 -11 16 -11 24c0 44 100 80 224 80zM224 288c92 0 176 22 176 48s-83 48 -176 48 -s-176 -22 -176 -48s84 -48 176 -48z" /> - <glyph glyph-name="ion-gear-a" unicode="" horiz-adv-x="384" -d="M347 192c0 -24 15 -43 37 -56c-4 -13 -10 -26 -16 -38c-25 6 -45 -3 -62 -20s-22 -37 -16 -62c-12 -6 -25 -12 -38 -16c-13 22 -36 37 -60 37s-47 -15 -60 -37c-13 4 -27 10 -39 16c6 25 2 45 -15 62s-37 21 -62 15c-6 12 -12 26 -16 39c22 13 37 36 37 60s-15 43 -37 56 -c4 13 9 26 16 38c25 -6 45 3 62 20s21 37 15 62c12 6 26 12 39 16c13 -22 36 -37 60 -37s47 15 60 37c13 -4 27 -10 39 -16c-6 -25 -2 -45 15 -62s37 -26 62 -20c6 -12 12 -25 16 -38c-22 -13 -37 -32 -37 -56zM192 94c54 0 98 44 98 98s-44 98 -98 98s-98 -44 -98 -98 -s44 -98 98 -98z" /> - <glyph glyph-name="ion-gear-b" unicode="" horiz-adv-x="384" -d="M384 154h-44c-4 -14 -10 -27 -17 -39l32 -32l-54 -54l-33 32c-12 -7 -24 -11 -38 -15v-46h-76v46c-13 4 -26 8 -38 15l-33 -32l-54 54l32 32c-7 12 -13 25 -17 39h-44v76h43c4 14 9 29 16 41l-30 30l54 54l29 -29c13 8 27 13 42 17v41h76v-41c15 -4 29 -9 42 -17l29 29 -l54 -54l-30 -30c7 -12 13 -27 16 -41h43v-76zM192 138c30 0 54 24 54 54s-24 54 -54 54s-54 -24 -54 -54s24 -54 54 -54z" /> - <glyph glyph-name="ion-grid" unicode="" horiz-adv-x="320" -d="M64 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 167 -c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 39 -c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50z" /> - <glyph glyph-name="ion-hammer" unicode="" horiz-adv-x="320" -d="M314 416c3 0 6 -3 6 -6v-84c0 -3 -3 -6 -6 -6h-52c-3 0 -6 3 -6 6v14c-6 5 -16 9 -22 7c-7 -2 -23 -13 -30 -25s-6 -28 -6 -66l8 -2c5 -1 7 -6 7 -9v-70c0 -95 11 -201 11 -201c0 -3 -3 -6 -6 -6h-84c-3 0 -6 3 -6 6c0 0 11 106 11 201v70c0 3 3 8 7 9l7 2 -c0 43 -5 58 -22 74c-18 16 -41 19 -63 17s-51 -35 -58 -45s-10 2 -10 11c1 16 22 60 72 81s91 22 102 22s27 -1 38 -3s16 -18 26 -18c7 0 14 5 18 9v6c0 3 3 6 6 6h52z" /> - <glyph glyph-name="ion-happy-outline" unicode="" -d="M355 158c8 -4 11 -13 7 -21c-24 -46 -78 -73 -138 -73c-62 0 -118 29 -139 74c-4 8 0 17 8 21c2 1 5 1 7 1c6 0 11 -3 14 -9c16 -34 60 -55 110 -55c49 0 92 21 110 56c3 5 8 8 14 8c3 0 5 -1 7 -2zM381 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6 -s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22c11 14 23 23 44 23s35 -9 45 -23zM157 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22 -c11 14 23 23 44 23s35 -9 45 -23zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56 -s100 20 136 56z" /> - <glyph glyph-name="ion-happy" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM71 195c3 -2 6 -3 10 -3c5 0 11 2 14 6s7 10 17 10s14 -6 17 -10s9 -6 14 -6c4 0 7 1 10 3c8 5 9 15 4 22c-10 14 -24 23 -45 23s-33 -9 -44 -23c-6 -7 -5 -16 3 -22zM362 137 -c4 8 1 17 -7 21c-2 1 -4 2 -7 2c-6 0 -11 -3 -14 -8c-18 -35 -61 -56 -110 -56c-50 0 -94 21 -110 55c-3 6 -8 9 -14 9c-2 0 -5 0 -7 -1c-8 -4 -12 -13 -8 -21c21 -45 77 -74 139 -74c60 0 114 27 138 73zM377 195c8 5 9 15 4 22c-10 14 -24 23 -45 23s-33 -9 -44 -23 -c-6 -7 -5 -16 3 -22c3 -2 6 -3 10 -3c5 0 11 2 14 6s7 10 17 10s14 -6 17 -10s9 -6 14 -6c4 0 7 1 10 3z" /> - <glyph glyph-name="ion-headphone" unicode="" horiz-adv-x="384" -d="M383 210c3 -51 -3 -130 -13 -162c-20 -67 -40 -80 -72 -80s-58 27 -58 59v106c0 33 23 59 53 59c18 0 34 -9 44 -24c0 0 11 7 13 22s4 34 -5 64s-21 19 -36 38c-2 3 -5 7 -8 10l-10 10c-2 2 -3 3 -5 4c-11 9 -21 17 -34 23c-19 9 -39 13 -60 13s-42 -4 -61 -13 -c-13 -6 -22 -14 -33 -23c-2 -1 -3 -2 -5 -4l-10 -10s-6 -7 -8 -10c-15 -19 -27 -8 -36 -38c-9 -31 -7 -49 -5 -64s13 -22 13 -22c10 15 26 24 44 24c30 0 53 -27 53 -59v-106c0 -32 -26 -59 -58 -59s-52 13 -72 80c-10 32 -16 111 -13 162c3 60 22 108 56 145v0 -c8 8 15 16 24 23s19 13 29 18c25 13 53 20 82 20s57 -7 82 -20c10 -5 19 -11 28 -18s17 -15 25 -23v0c34 -37 53 -85 56 -145z" /> - <glyph glyph-name="ion-heart-broken" unicode="" horiz-adv-x="416" -d="M181 160c0 -36 -2 -71 4 -107c2 -10 2 -20 2 -31l-153 159c-45 47 -45 124 0 171c40 41 103 43 144 3c-2 -15 -3 -31 -3 -46c-18 -14 -40 -21 -56 -39l11 7c17 11 15 8 35 14c3 1 8 3 11 5c0 -1 -1 -5 -1 -6c1 -20 11 -39 15 -60c0 -5 1 -10 -1 -15c-8 -17 -7 -37 -8 -55 -zM274 147c8 -18 23 -29 38 -39l-104 -108l-17 18c0 13 -4 26 -4 38c-2 48 10 94 21 142v0c1 -1 2 -1 3 -1c30 -6 52 -24 63 -50zM382 352c46 -47 46 -124 0 -171l-68 -70c-28 24 -42 54 -65 81c-12 13 -26 23 -41 32c-3 13 -8 26 -11 39c-3 12 14 21 16 31c3 12 3 26 3 39 -l19 19c40 42 107 42 147 0z" /> - <glyph glyph-name="ion-heart" unicode="" horiz-adv-x="416" -d="M382 352c46 -47 46 -124 0 -171l-174 -181l-174 181c-46 47 -46 124 0 171c40 42 107 42 147 0l27 -28l28 28c40 42 106 42 146 0z" /> - <glyph glyph-name="ion-help-buoy" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM402 264c-10 24 -23 45 -42 64s-41 32 -65 42l-19 -61c14 -6 27 -15 38 -26s21 -24 27 -38zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM88 328 -c-19 -19 -32 -41 -42 -65l61 -19c6 14 15 27 26 38s24 21 38 27l-19 61c-24 -10 -45 -23 -64 -42zM46 120c10 -24 23 -45 42 -64s41 -32 65 -42l19 61c-14 6 -27 15 -38 26s-21 24 -27 38zM360 56c19 19 32 41 42 65l-61 19c-6 -14 -15 -27 -26 -38s-24 -21 -38 -27l19 -61 -c24 10 45 23 64 42z" /> - <glyph glyph-name="ion-help-circled" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM244 89c1 18 -12 31 -29 31c-16 0 -30 -11 -30 -29s12 -30 28 -30c17 0 31 10 31 28zM293 217c7 10 12 22 12 36c0 23 -9 40 -25 52c-17 13 -37 18 -62 18 -c-19 0 -34 -4 -47 -13c-19 -13 -28 -34 -28 -68h49c0 9 -1 19 4 27s13 15 26 15s19 -3 25 -11c5 -7 8 -15 8 -23c0 -7 -4 -14 -8 -20c-2 -4 -6 -7 -10 -10c0 0 -26 -15 -35 -30c-7 -11 -9 -24 -10 -41c0 -1 0 -4 4 -4h39s5 3 5 4c0 6 1 15 2 19c2 7 6 12 12 17l14 9 -c12 9 21 17 25 23z" /> - <glyph glyph-name="ion-help" unicode="" horiz-adv-x="256" -d="M217 371c25 -19 39 -46 39 -83c0 -22 -8 -42 -19 -57c-7 -9 -21 -21 -40 -36l-21 -14c-10 -8 -17 -18 -20 -28c-2 -6 -3 -19 -3 -29c0 -2 -1 -6 -7 -6h-62c-7 0 -7 3 -7 5c1 26 4 49 15 66c15 23 57 48 57 48c6 5 11 9 15 15c7 10 12 21 12 32c0 13 -3 26 -11 36 -c-10 12 -21 18 -41 18s-32 -11 -40 -24s-7 -29 -7 -43h-77c0 54 14 88 44 108c20 14 45 20 75 20c39 0 70 -7 98 -28zM114 78c27 -1 47 -20 46 -48s-22 -46 -49 -45c-26 1 -46 19 -45 47s22 47 48 46z" /> - <glyph glyph-name="ion-home" unicode="" horiz-adv-x="384" -d="M384 160h-48v-160h-96v128h-96v-128h-96v160h-48l192 224z" /> - <glyph glyph-name="ion-icecream" unicode="" horiz-adv-x="320" -d="M32 192h256l-128 -224zM307 275c8 -5 13 -13 13 -23c0 -16 -14 -28 -30 -28h-4h-252h-4c-16 0 -30 13 -30 28c0 10 6 18 14 23c1 0 1 2 2 2c4 3 7 7 8 12v1c-2 6 -2 12 -2 18c0 42 34 76 76 76c8 0 16 -2 23 -4c-3 -12 -4 -31 -4 -31c2 15 11 29 11 29c18 23 46 38 77 38 -c53 0 96 -43 96 -96c0 -11 -2 -21 -5 -30v-1c0 -4 4 -9 8 -12c1 0 2 -2 3 -2z" /> - <glyph glyph-name="ion-image" unicode="" -d="M336 224c-26 0 -48 22 -48 48s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM420 384c16 0 28 -12 28 -28v-328c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v328c0 16 12 28 28 28h392zM317 186l99 -106v260c0 7 -6 12 -13 12h-358c-7 0 -12 -5 -13 -12v-260l126 152 -c4 4 10 8 17 8s13 -2 17 -7l54 -59l4 -4c3 -2 7 -4 11 -4s8 2 12 5l18 16c4 3 8 5 13 5s10 -2 13 -6z" /> - <glyph glyph-name="ion-images" unicode="" -d="M426 308c13 -1 23 -12 22 -24l-14 -263c-1 -13 -12 -22 -25 -21l-330 16c-13 1 -23 10 -22 23l2 46l-15 -1c-12 -1 -22 7 -23 18l-21 236c-1 11 7 21 19 22l296 24c12 1 22 -7 23 -18l5 -54zM71 302c1 12 11 22 24 22l219 -11l-2 31h-1v1c-1 5 -5 8 -10 8l-261 -22 -c-5 0 -10 -4 -10 -9v0v-1l16 -178l18 25zM405 66l10 198v1v0c0 6 -5 10 -11 10l-58 3l-29 2l-204 9c-6 0 -11 -4 -12 -9v0v-1l-3 -63l-7 -128v-7l6 7l102 109c4 4 8 6 14 6s11 -3 14 -7l43 -49l3 -3c2 -2 6 -4 10 -4s5 1 9 3l17 12c4 3 7 4 11 4s9 -2 11 -5l27 -33zM341 186 -c-20 0 -35 15 -35 35s16 35 35 35c20 0 35 -16 35 -35s-16 -35 -35 -35z" /> - <glyph glyph-name="ion-information-circled" unicode="" -d="M448 195c2 -124 -97 -225 -221 -227s-225 97 -227 221s97 225 221 227s225 -97 227 -221zM224 336c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM268 53v11h-22v172h-66v-12h22v-160h-22v-11h88z" /> - <glyph glyph-name="ion-information" unicode="" horiz-adv-x="128" -d="M96 0h32v-16h-128v16h32v240h-32v16h96v-256zM64 304c-27 0 -48 21 -48 48s21 48 48 48s48 -21 48 -48s-21 -48 -48 -48z" /> - <glyph glyph-name="ion-ionic" unicode="" horiz-adv-x="416" -d="M376 315c25 -34 40 -77 40 -123c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208c46 0 89 -15 123 -40c5 3 11 5 18 5c18 0 32 -14 32 -32c0 -7 -2 -13 -5 -18zM344 56c18 18 31 38 41 61c10 24 15 49 15 75s-5 51 -15 75c-6 13 -13 26 -21 38 -c-4 -2 -10 -4 -15 -4c-18 0 -32 14 -32 32c0 5 2 11 4 15c-12 8 -25 15 -38 21c-24 10 -49 15 -75 15s-51 -5 -75 -15c-23 -10 -43 -23 -61 -41s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75s5 -51 15 -75c10 -23 23 -43 41 -61s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15 -c23 10 43 23 61 41zM112 192c0 64 32 96 96 96s96 -32 96 -96s-32 -96 -96 -96s-96 32 -96 96z" /> - <glyph glyph-name="ion-ios-alarm-outline" unicode="" horiz-adv-x="404" -d="M384 256l-54 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l36 -45l-12 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 71 -43 115c0 51 22 97 57 129l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82 -h5c20 0 39 -7 54 -18l-54 -52l11 -11c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -8 -38 -20 -52zM22 280l91 89c-9 5 -19 7 -32 6c-37 -2 -65 -32 -65 -67c0 -10 2 -19 6 -28z -M362 172c0 88 -72 158 -160 158s-160 -70 -160 -158s72 -158 160 -158s160 70 160 158zM291 369l91 -89c4 9 6 18 6 28c0 35 -28 65 -65 67c-13 1 -23 -1 -32 -6zM202 288h16v-144h-112v16h96v128z" /> - <glyph glyph-name="ion-ios-alarm" unicode="" horiz-adv-x="404" -d="M385 256l-55 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l37 -45l-13 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 70 -43 114c0 51 22 98 57 130l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82 -h5c20 0 39 -7 54 -18l-54 -53l11 -10c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -7 -38 -19 -52zM218 144v144h-16v-128h-96v-16h112z" /> - <glyph glyph-name="ion-ios-albums-outline" unicode="" -d="M432 304h-416v-288h416v288zM448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" /> - <glyph glyph-name="ion-ios-albums" unicode="" -d="M448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" /> - <glyph glyph-name="ion-ios-americanfootball-outline" unicode="" horiz-adv-x="416" -d="M331 315c112 -112 81 -327 81 -327s-26 -4 -65 -4c-73 0 -189 12 -262 85c-112 112 -81 327 -81 327s26 4 65 4c73 0 189 -12 262 -85zM17 383c-2 -19 -5 -60 0 -107c1 -8 2 -16 3 -23l127 127c-25 3 -51 5 -78 5v0v0c-22 0 -41 -1 -52 -2zM96 80c30 -30 72 -53 124 -66 -c10 -3 20 -5 31 -7l142 142c-4 22 -10 44 -17 63c-14 37 -32 68 -56 92c-30 30 -72 53 -124 66c-10 3 -20 5 -31 7l-142 -142c4 -22 10 -44 17 -63c14 -37 32 -68 56 -92zM399 1c2 19 5 60 0 107c-1 8 -2 16 -3 23l-127 -127c25 -3 51 -5 78 -5c22 0 41 1 52 2zM259 130 -l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-22 23l-29 -29l-11 12l67 67l12 -11l-29 -29l23 -22l28 29l12 -12l-29 -28l23 -23l28 29l12 -12l-29 -28l23 -23l28 29l12 -12l-29 -28l22 -23l29 29l12 -12 -l-29 -28l22 -23l29 29l11 -12l-67 -67l-12 11l29 29z" /> - <glyph glyph-name="ion-ios-americanfootball" unicode="" horiz-adv-x="416" -d="M331 315c112 -112 81 -327 81 -327s-26 -4 -65 -4c-73 0 -189 12 -262 85c-112 112 -81 327 -81 327s26 4 65 4c73 0 189 -12 262 -85zM20 253l3 -18l142 142l-18 3zM219 113l12 -12l28 29l23 -22l-29 -29l12 -11l67 67l-11 12l-29 -29l-22 23l29 28l-12 12l-28 -29 -l-23 23l29 28l-12 12l-28 -29l-23 23l29 28l-12 12l-28 -29l-23 23l29 28l-12 12l-28 -29l-23 22l29 29l-12 11l-67 -67l11 -12l29 29l22 -23l-29 -28l12 -12l28 29l23 -23l-29 -28l12 -12l28 29l23 -23l-29 -28l12 -12l28 29l23 -23zM269 4l127 127l-3 18l-142 -142z" /> - <glyph glyph-name="ion-ios-analytics-outline" unicode="" -d="M224 400c-28 0 -55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45s35 41 45 66c11 26 16 53 16 81s-5 55 -16 81 -c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16zM224 416v0c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM76 128c-25 0 -41 18 -42 19c-3 3 -2 9 1 12s8 2 11 -1c1 -1 15 -17 36 -14c12 2 27 26 38 42c4 6 9 12 12 16 -c17 21 34 23 45 21c24 -3 45 -28 54 -50c7 -18 18 -28 32 -29c15 -1 31 11 43 30c1 2 3 4 4 7c9 17 24 43 52 43c31 0 52 -35 53 -36c2 -4 1 -9 -3 -11s-9 -1 -11 3c0 0 -5 8 -12 15c-6 6 -16 13 -27 13c-18 0 -29 -19 -38 -35c-1 -3 -3 -5 -4 -7c-15 -25 -36 -40 -58 -38 -c-20 1 -36 15 -46 39s-28 39 -41 41c-11 1 -21 -4 -31 -16c-3 -4 -6 -9 -10 -15c-14 -20 -31 -45 -50 -48c-3 0 -5 -1 -8 -1z" /> - <glyph glyph-name="ion-ios-analytics" unicode="" -d="M224 416c124 0 224 -100 224 -224c0 -13 -1 -25 -3 -37c-1 -6 -2 -12 -3 -17c-24 -98 -113 -170 -218 -170c-122 0 -221 98 -224 219v5c0 9 1 17 2 26c13 111 107 198 222 198zM431 168c1 8 1 16 1 24c0 28 -5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45 -c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81v0c14 -21 29 -34 29 -34h1v-1c1 -1 15 -16 36 -13c12 2 27 26 38 42c4 6 9 12 12 16c17 21 34 23 45 21c24 -3 45 -27 54 -50c7 -18 18 -28 32 -29c15 -1 31 9 43 29 -c1 2 3 4 4 7c9 17 24 44 52 44c31 0 52 -35 53 -36c3 -4 9 -12 16 -20z" /> - <glyph glyph-name="ion-ios-arrow-back" unicode="" horiz-adv-x="192" -d="M192 320l-127 -128l127 -128l-32 -32l-160 160v0v0l160 160z" /> - <glyph glyph-name="ion-ios-arrow-down" unicode="" horiz-adv-x="320" -d="M301 288l19 -21l-160 -171l-160 171l19 21l141 -150z" /> - <glyph glyph-name="ion-ios-arrow-forward" unicode="" horiz-adv-x="192" -d="M0 320l32 32l160 -160v0v0l-160 -160l-32 32l127 128z" /> - <glyph glyph-name="ion-ios-arrow-left" unicode="" horiz-adv-x="192" -d="M192 333l-150 -141l150 -141l-21 -19l-171 160l171 160z" /> - <glyph glyph-name="ion-ios-arrow-right" unicode="" horiz-adv-x="192" -d="M0 333l21 19l171 -160l-171 -160l-21 19l150 141z" /> - <glyph glyph-name="ion-ios-arrow-thin-down" unicode="" horiz-adv-x="192" -d="M190 126c2 -2 2 -4 2 -6s0 -4 -2 -6c0 0 -87 -79 -88 -80s-3 -2 -6 -2s-5 1 -6 2s-88 80 -88 80c-3 3 -3 9 0 12s9 3 12 0l74 -67v285c0 4 4 8 8 8s8 -4 8 -8v-285l74 67c3 3 9 3 12 0z" /> - <glyph glyph-name="ion-ios-arrow-thin-left" unicode="" horiz-adv-x="320" -d="M94 98c-2 -2 -4 -2 -6 -2s-4 0 -6 2c0 0 -79 87 -80 88s-2 3 -2 6s1 5 2 6s80 88 80 88c3 3 9 3 12 0s3 -9 0 -12l-67 -74h285c4 0 8 -4 8 -8s-4 -8 -8 -8h-285l67 -74c3 -3 3 -9 0 -12z" /> - <glyph glyph-name="ion-ios-arrow-thin-right" unicode="" horiz-adv-x="320" -d="M226 98c-3 3 -3 9 0 12l67 74h-285c-4 0 -8 4 -8 8s4 8 8 8h285l-67 74c-3 3 -3 9 0 12s9 3 12 0c0 0 79 -87 80 -88s2 -3 2 -6s-1 -5 -2 -6s-80 -88 -80 -88c-2 -2 -4 -2 -6 -2s-4 0 -6 2z" /> - <glyph glyph-name="ion-ios-arrow-thin-up" unicode="" horiz-adv-x="192" -d="M190 258c-3 -3 -9 -3 -12 0l-74 67v-285c0 -4 -4 -8 -8 -8s-8 4 -8 8v285l-74 -67c-3 -3 -9 -3 -12 0s-3 9 0 12c0 0 87 79 88 80s3 2 6 2s5 -1 6 -2s88 -80 88 -80c2 -2 2 -4 2 -6s0 -4 -2 -6z" /> - <glyph glyph-name="ion-ios-arrow-up" unicode="" horiz-adv-x="320" -d="M301 96l-141 150l-141 -150l-19 21l160 171l160 -171z" /> - <glyph glyph-name="ion-ios-at-outline" unicode="" horiz-adv-x="255" -d="M236 127v1h19l-3 -6c-3 -6 -13 -19 -22 -27s-18 -14 -28 -20s-21 -10 -32 -13s-23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 11 -26 29 -34 46c-7 16 -10 33 -10 58c0 18 4 38 11 55c7 16 17 30 29 42s27 21 43 28c15 6 33 9 53 9c16 0 32 -3 46 -8 -c15 -5 28 -12 39 -22s17 -21 24 -35c6 -13 8 -26 8 -44c0 -14 -2 -28 -7 -40s-9 -20 -17 -30c-8 -9 -13 -15 -23 -21c-11 -6 -20 -9 -29 -9c-8 0 -15 2 -20 7c-3 2 -5 6 -6 9c-6 -6 -11 -10 -17 -12c-10 -3 -18 -4 -26 -4s-15 1 -21 4s-12 7 -17 12s-8 11 -11 18 -s-5 14 -5 22c0 12 3 24 7 36v2c4 11 5 16 13 26c8 11 17 19 28 26s24 11 38 11c12 0 21 -3 31 -9c7 -4 12 -10 16 -16l6 17h18l-38 -102c-2 -5 -4 -10 -5 -14s-1 -7 -1 -10c0 -2 1 -4 3 -5s4 -2 8 -2c6 0 11 2 20 7c8 4 12 9 19 17c6 8 10 14 14 25s6 23 6 35 -c0 15 -2 25 -7 36c-6 13 -10 22 -19 30s-20 15 -33 20s-27 7 -42 7c-19 0 -35 -3 -48 -9c-15 -6 -27 -14 -37 -24c-11 -10 -19 -23 -25 -37c-6 -15 -10 -32 -10 -48c0 -22 2 -36 8 -49c6 -15 17 -31 28 -41s24 -18 38 -23s30 -7 46 -7c10 0 20 1 30 4s18 6 27 11 -s17 11 24 18s14 13 19 21zM147 154c4 5 8 12 11 20l21 57c-2 5 -4 10 -7 13c-3 4 -6 6 -10 8c-1 0 -1 1 -2 1c-3 2 -5 3 -9 4c-5 1 -9 2 -13 2c-10 0 -19 -3 -28 -9s-17 -13 -23 -22c-5 -8 -7 -11 -10 -20c0 -1 -1 -3 -1 -4c-4 -11 -5 -20 -5 -30c0 -6 1 -11 3 -16 -s5 -9 8 -13s7 -6 12 -8s9 -3 15 -3c4 0 9 1 14 2c4 1 8 2 12 5s8 7 12 13z" /> - <glyph glyph-name="ion-ios-at" unicode="" horiz-adv-x="256" -d="M228 128v0h28c-1 -1 -2 -4 -3 -6c-4 -6 -14 -19 -23 -27s-18 -14 -28 -20s-20 -10 -32 -13c-11 -3 -23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 10 -26 28 -34 46c-7 16 -10 33 -10 58c0 19 4 39 11 55s17 30 29 42s28 21 44 28c15 6 32 9 52 9c16 0 31 -3 46 -8 -s28 -12 39 -22s18 -22 25 -36c6 -14 8 -26 8 -44c0 -14 -2 -28 -7 -40c-4 -11 -9 -20 -17 -30c-7 -9 -14 -16 -24 -22c-12 -6 -21 -9 -30 -9s-16 2 -22 8c-2 1 -3 3 -4 5c-4 -4 -9 -6 -14 -8c-10 -3 -18 -5 -27 -5c-8 0 -16 2 -23 5s-12 7 -17 12s-9 12 -12 19s-4 14 -4 22 -c0 12 2 25 6 37l1 1c4 10 5 17 13 27c8 11 17 20 28 27c12 7 24 10 38 10c12 0 22 -3 33 -9c5 -3 8 -6 12 -10l5 12h25l-39 -104c-2 -5 -3 -9 -4 -13c-1 -3 -1 -7 -1 -9s0 -3 1 -3c0 0 1 -1 5 -1c5 0 11 2 19 7c7 4 10 8 16 16s9 13 13 23s6 20 6 32c0 14 -1 24 -6 34 -c-5 12 -10 21 -18 28c-9 8 -19 14 -31 18s-26 7 -40 7c-18 0 -32 -3 -44 -8c-14 -6 -25 -13 -35 -23s-18 -22 -24 -35c-6 -14 -9 -30 -9 -45c0 -21 3 -34 8 -46c6 -14 16 -30 26 -39s22 -16 35 -21c14 -5 28 -7 43 -7c10 0 20 2 29 4s18 6 26 11s28 20 38 33zM144 157 -c4 5 7 12 10 19l20 55c-1 4 -3 7 -5 9c-3 3 -6 6 -9 8h-1h-1v1c-3 2 -5 2 -8 3c-4 1 -8 1 -12 1c-9 0 -17 -2 -25 -7c-10 -6 -17 -14 -21 -21c-5 -8 -6 -11 -9 -19c0 -1 -1 -2 -1 -3c-3 -10 -6 -19 -6 -28c0 -5 1 -10 3 -14s4 -8 7 -11s7 -6 11 -8s8 -2 13 -2c4 0 8 0 12 1 -v0c4 1 7 2 11 5c3 2 7 5 11 11z" /> - <glyph glyph-name="ion-ios-barcode-outline" unicode="" horiz-adv-x="416" -d="M0 64v256h80v-16h-64v-224h64v-16h-80zM336 320h80v-256h-80v16h64v224h-64v16zM64 128v128h16v-128h-16zM336 128v128h16v-128h-16zM272 96v192h16v-192h-16zM128 96v192h16v-192h-16zM199 112v160h16v-160h-16z" /> - <glyph glyph-name="ion-ios-barcode" unicode="" horiz-adv-x="416" -d="M0 320h416v-256h-416v256zM80 128v128h-16v-128h16zM144 96v192h-16v-192h16zM215 112v160h-16v-160h16zM288 96v192h-16v-192h16zM352 128v128h-16v-128h16z" /> - <glyph glyph-name="ion-ios-baseball-outline" unicode="" horiz-adv-x="416" -d="M415 169v-1v0c-11 -97 -90 -174 -187 -183v0h-2c-2 0 -3 -1 -5 -1h-1h-3h-1h-8c-115 0 -208 93 -208 208v8v1v3v1c0 2 1 3 1 5v2v0c9 97 86 176 183 187v0v0c8 1 16 1 24 1c115 0 208 -93 208 -208c0 -7 0 -14 -1 -20v0v-3zM399 192c0 105 -86 191 -191 191 -c-3 0 -5 -1 -8 -1c0 -11 2 -21 4 -31l20 6l5 -15l-21 -7c2 -7 4 -14 7 -21c2 -5 5 -11 8 -16l17 12l9 -13l-19 -13c7 -12 16 -23 26 -33l14 15l12 -12l-15 -15c11 -10 22 -18 34 -25l12 18l14 -9l-12 -17c5 -2 10 -5 15 -7c7 -3 14 -5 22 -7l7 20l15 -5l-6 -19 -c10 -2 20 -4 30 -4c0 3 1 5 1 8zM17 192c0 -105 86 -191 191 -191h4c-1 9 -1 17 -3 26l-22 -7l-5 16l23 7c-2 8 -5 16 -8 24c-2 5 -4 9 -6 14l-20 -13l-9 13l21 14c-7 12 -16 24 -26 35l-17 -17l-11 11l17 17c-10 10 -22 18 -34 25l-14 -21l-14 9l14 20c-5 2 -10 5 -15 7 -c-7 3 -15 6 -23 8l-8 -24l-15 5l7 23c-9 2 -18 2 -27 3v-4zM228 2c88 9 158 78 169 166c-11 1 -23 3 -34 5l-9 -27l-15 5l8 25c-14 4 -28 10 -41 17l-15 -23l-13 9l14 21c-13 8 -26 17 -37 28l-19 -19l-11 11l19 19c-10 11 -19 23 -27 36l-21 -14l-9 13l22 15 -c-7 13 -12 27 -16 41l-25 -8l-5 16l26 8c-2 12 -4 23 -5 35c-88 -11 -157 -81 -166 -169c10 -1 21 -2 31 -4l8 23l15 -5l-7 -22c14 -4 28 -9 42 -16l13 19l14 -9l-13 -18c13 -8 25 -17 36 -28l17 17l11 -11l-17 -17c11 -12 20 -24 28 -37l19 13l9 -14l-20 -13 -c7 -14 12 -28 16 -42l23 7l5 -15l-24 -8c2 -10 3 -20 4 -30z" /> - <glyph glyph-name="ion-ios-baseball" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208c0 -8 0 -16 -1 -24v0v0c-12 -104 -100 -184 -207 -184c-115 0 -208 93 -208 208c0 107 80 195 184 207v0v0c8 1 16 1 24 1zM212 1c5 0 11 0 16 1c-1 10 -2 20 -4 30l24 8l-5 15l-23 -7c-4 14 -9 28 -16 42l20 13l-9 14l-19 -13 -c-8 13 -17 25 -28 37l17 17l-11 11l-17 -17c-11 11 -23 20 -36 28l13 18l-14 9l-13 -19c-14 7 -28 12 -42 16l7 22l-15 5l-8 -23c-10 2 -21 3 -31 4c-1 -5 -1 -11 -1 -16c9 -1 18 -1 27 -3l-7 -23l15 -5l8 24c8 -2 16 -5 23 -8c5 -2 10 -5 15 -7l-14 -20l14 -9l14 21 -c12 -7 24 -15 34 -25l-17 -17l11 -11l17 17c10 -11 19 -23 26 -35l-21 -14l9 -13l20 13c2 -5 4 -9 6 -14c3 -8 6 -16 8 -24l-23 -7l5 -16l22 7c2 -8 2 -17 3 -26zM363 173c11 -2 23 -4 34 -5c1 5 1 11 1 16c-10 1 -20 2 -30 4l6 19l-15 5l-7 -20c-8 2 -15 4 -22 7 -c-5 2 -10 5 -15 7l12 17l-14 9l-12 -18c-12 7 -23 15 -34 25l15 15l-12 12l-15 -15c-10 10 -18 21 -25 33l19 13l-9 13l-17 -12c-3 5 -6 11 -8 16c-3 7 -5 14 -7 21l21 7l-5 15l-20 -6c-2 10 -3 20 -4 31c-5 0 -11 0 -16 -1c1 -12 3 -23 5 -35l-26 -8l5 -16l25 8 -c4 -14 9 -28 16 -41l-22 -15l9 -13l21 14c8 -13 17 -25 27 -36l-19 -19l11 -11l19 19c11 -11 24 -20 37 -28l-14 -21l13 -9l15 23c13 -7 27 -13 41 -17l-8 -25l15 -5z" /> - <glyph glyph-name="ion-ios-basketball-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM399 192c0 55 -24 105 -62 140c-14 -34 -31 -65 -52 -95c15 -12 31 -21 49 -29c21 -9 43 -14 65 -16v0zM325 343c-32 25 -73 40 -117 40v0c2 -22 6 -44 15 -65 -c10 -25 26 -47 45 -66c2 -1 2 -3 4 -4c20 29 38 60 52 93c0 1 1 1 1 2zM192 382c-51 -4 -96 -29 -128 -65c64 -28 121 -69 169 -119c11 12 21 24 30 37c-40 37 -67 89 -71 147zM233 174c-15 -16 -31 -30 -48 -44c28 -35 45 -79 47 -127c33 4 63 17 88 35 -c-22 50 -51 95 -87 136zM214 178l8 8l-10 10c-46 46 -99 82 -158 108c-18 -25 -31 -55 -35 -88c62 -3 116 -31 155 -74c14 11 27 23 40 36zM18 200c0 -3 -1 -5 -1 -8c0 -45 16 -87 43 -120c36 16 71 36 102 60l-7 7c-19 19 -41 35 -66 45c-22 9 -46 15 -71 16zM71 59 -c35 -36 83 -58 137 -58c3 0 5 1 8 1c-1 25 -6 48 -16 71c-7 17 -17 33 -28 47c-31 -24 -65 -45 -101 -61zM333 48c37 32 61 77 65 128c-46 3 -89 21 -123 48c-10 -13 -20 -26 -31 -38c36 -41 67 -87 89 -138z" /> - <glyph glyph-name="ion-ios-basketball" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM333 48c-22 51 -53 97 -89 138c11 12 21 25 31 38c34 -27 77 -45 123 -48c0 5 1 11 1 16c-22 2 -44 7 -65 16c-18 8 -34 17 -49 29c21 30 38 61 52 95c-4 4 -8 8 -12 11 -c0 -1 -1 -1 -1 -2c-14 -33 -32 -64 -52 -93c-2 1 -2 2 -4 4c-19 19 -35 41 -45 66c-9 21 -13 43 -15 65c-5 0 -11 -1 -16 -1c4 -58 31 -110 71 -147c-9 -13 -19 -25 -30 -37c-48 50 -105 91 -169 119c-4 -4 -7 -9 -10 -13c59 -26 112 -62 158 -108l10 -10l-8 -8 -c-13 -13 -26 -25 -40 -36c-39 43 -93 71 -155 74c-1 -5 -1 -11 -1 -16c25 -1 49 -7 71 -16c25 -10 47 -26 66 -45l7 -7c-31 -24 -66 -44 -102 -60c4 -4 7 -9 11 -13c36 16 70 37 101 61c11 -14 21 -30 28 -47c10 -23 15 -46 16 -71c5 0 11 0 16 1c-2 48 -19 92 -47 127 -c17 14 33 28 48 44c36 -41 65 -86 87 -136c4 3 9 6 13 10z" /> - <glyph glyph-name="ion-ios-bell-outline" unicode="" horiz-adv-x="384" -d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM43 80h298c-25 25 -40 58 -40 142c0 46 -13 80 -37 101c-23 19 -52 23 -72 23s-49 -4 -72 -23c-25 -21 -37 -55 -37 -101 -c0 -51 -5 -85 -17 -110c-6 -13 -14 -23 -23 -32zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" /> - <glyph glyph-name="ion-ios-bell" unicode="" horiz-adv-x="384" -d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" /> - <glyph glyph-name="ion-ios-body-outline" unicode="" horiz-adv-x="384" -d="M192 400c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM192 416v0c27 0 48 -21 48 -48s-21 -48 -48 -48s-48 21 -48 48s21 48 48 48zM360 304c13 0 24 -11 24 -24s-11 -24 -24 -24h-100c-5 0 -14 -5 -18 -15c-5 -12 -2 -33 1 -51l4 -21v-1v0l32 -172 -c2 -13 -6 -26 -19 -28h-5c-11 0 -22 8 -24 20l-21 120v0s-5 31 -17 31h-2c-12 0 -19 -31 -19 -31v0l-21 -120c-2 -12 -11 -20 -22 -20h-5c-13 2 -21 15 -19 28l32 172v1l4 21c3 18 6 39 1 51c-4 10 -12 15 -18 15h-100c-13 0 -24 11 -24 24s11 24 24 24h336zM24 272 -c-4 0 -8 4 -8 8s4 8 8 8h336c4 0 8 -4 8 -8s-4 -8 -8 -8h-102c-16 0 -26 -15 -30 -24c-5 -13 -6 -32 -1 -61v0v0l3 -19l1 -3l32 -172c0 -3 0 -5 -1 -6s-2 -2 -5 -3h-2c-4 0 -7 2 -8 6l-21 120v0c0 2 -2 10 -5 19c-2 6 -5 11 -8 15c-7 9 -14 11 -20 11h-2 -c-5 0 -13 -2 -20 -11c-3 -4 -6 -9 -8 -15c-4 -9 -6 -17 -6 -18v-1l-21 -120c-1 -4 -3 -6 -7 -6h-2c-3 0 -4 2 -5 3s-2 3 -1 6l32 172v0v1l4 21v0v0c5 29 5 48 0 61c-4 9 -14 24 -32 24z" /> - <glyph glyph-name="ion-ios-body" unicode="" horiz-adv-x="384" -d="M144 368c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM360 304c7 0 12 -2 17 -7s7 -10 7 -17s-2 -12 -7 -17s-10 -7 -17 -7h-98c-8 -2 -15 -6 -18 -14c-4 -9 -3 -27 1 -52l4 -21v-1v0l30 -172c1 -7 0 -13 -4 -18s-8 -9 -15 -10s-13 0 -18 4 -s-9 9 -10 16l-21 120v-1l-2 9c-1 5 -3 11 -6 16s-6 8 -10 8h-2c-8 0 -14 -11 -18 -33v1l-21 -120c-1 -7 -5 -12 -10 -16s-11 -5 -18 -4s-11 5 -15 10s-5 11 -4 18l30 172v0v1l4 21c4 25 5 43 1 52c-3 8 -10 12 -18 14h-98c-7 0 -12 2 -17 7s-7 10 -7 17s2 12 7 17s10 7 17 7 -h336z" /> - <glyph glyph-name="ion-ios-bolt-outline" unicode="" horiz-adv-x="226" -d="M131 316l-100 -140h65h19l-3 -19l-17 -89l100 140h-65h-19l3 19zM160 384v0l-30 -160h96l-160 -224l30 160h-96z" /> - <glyph glyph-name="ion-ios-bolt" unicode="" horiz-adv-x="226" -d="M160 384v0l-30 -160h96l-160 -224l30 160h-96z" /> - <glyph glyph-name="ion-ios-book-outline" unicode="" horiz-adv-x="384" -d="M284 384c55 0 100 -26 100 -79v-1v-4v-261v-17h-6h-11h-5c-17 30 -44 42 -78 42c-40 0 -74 -28 -82 -64h-20c-8 36 -42 64 -82 64c-34 0 -65 -16 -78 -42h-5h-11h-6v9v264v9v1c0 53 45 79 100 79c41 0 78 -14 92 -44c12 30 51 44 92 44zM184 37v254v13v2 -c-1 43 -39 62 -84 62c-44 0 -81 -19 -84 -61v-1v0v-262h1c19 26 48 36 83 36s66 -17 84 -43zM368 300v14v1c-3 42 -40 53 -84 53c-46 0 -84 -20 -84 -64v-1v-266c18 26 49 43 84 43s66 -10 84 -36v256z" /> - <glyph glyph-name="ion-ios-book" unicode="" horiz-adv-x="384" -d="M100 384c35 0 67 -10 84 -31v-353h-2c-8 36 -42 64 -82 64c-34 0 -65 -16 -78 -42h-5h-11h-6v9v264v9v1c0 53 45 79 100 79zM284 384c55 0 100 -26 100 -79v-1v-4v-261v-17h-6h-11h-5c-17 30 -44 42 -78 42c-40 0 -74 -28 -82 -64h-2v353c17 21 50 31 84 31z" /> - <glyph glyph-name="ion-ios-bookmarks-outline" unicode="" horiz-adv-x="418" -d="M385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150c10 0 20 -5 26 -12v0v0c6 7 16 12 26 12h150zM201 37v309c0 9 -12 22 -25 22h-143 -c-9 0 -16 -7 -16 -16v-286c0 -9 7 -18 16 -18h144c10 0 19 -3 24 -11zM273 368v-100l23 14l9 6l9 -6l23 -14v100h-64zM401 66v286c0 9 -7 16 -16 16h-32v-131l-48 32l-48 -32v131h-15c-13 0 -25 -13 -25 -22v-309c5 9 14 11 24 11h144c9 0 16 9 16 18z" /> - <glyph glyph-name="ion-ios-bookmarks" unicode="" horiz-adv-x="418" -d="M296 283l-23 -15v116h64v-116l-23 15l-9 6zM385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150s18 -8 18 -15v-329l8 -6l8 6v329s10 15 18 15h22v-146 -l48 32l48 -32v146h32z" /> - <glyph glyph-name="ion-ios-box-outline" unicode="" horiz-adv-x="320" -d="M192 208h-1h-63c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16zM192 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-64c-18 0 -32 14 -32 32s14 32 32 32h64zM320 336v-80h-16v-208h-288v208h-16v80h320zM288 64v192h-256v-192h256zM304 272v48h-288 -v-48h288z" /> - <glyph glyph-name="ion-ios-box" unicode="" horiz-adv-x="320" -d="M16 48v192h288v-192h-288zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16h-64zM0 336h320v-80h-16h-288h-16v80z" /> - <glyph glyph-name="ion-ios-briefcase-outline" unicode="" horiz-adv-x="416" -d="M368 320h48v-320h-416v320h48v16h32v-16h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v16h32v-16zM144 320v0h128v0v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30zM400 16v224h-384v-224h384zM400 256v48h-32v-16h-32v16h-256v-16h-32v16h-32v-48 -h384z" /> - <glyph glyph-name="ion-ios-briefcase" unicode="" horiz-adv-x="416" -d="M48 320v16h32v-16h-32zM0 0v240h416v-240h-416zM336 320v16h32v-16h-32zM368 320h48v-64h-416v64h48v-32h32v32h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v-32h32v32zM272 320v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30v0h128v0z" /> - <glyph glyph-name="ion-ios-browsers-outline" unicode="" horiz-adv-x="384" -d="M0 304h304v-304h-304v304zM288 16v272h-272v-272h272zM384 384v-304h-64v16h48v272h-272v-48h-16v64h304z" /> - <glyph glyph-name="ion-ios-browsers" unicode="" horiz-adv-x="384" -d="M0 304h304v-304h-304v304zM80 384h304v-304h-64v240h-240v64z" /> - <glyph glyph-name="ion-ios-calculator-outline" unicode="" horiz-adv-x="288" -d="M32 288v64h224v-64h-224zM48 336v-32h192v32h-192zM256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM272 32v320c0 9 -7 16 -16 16h-224c-9 0 -16 -7 -16 -16v-320c0 -9 7 -16 16 -16h224c9 0 16 7 16 16z -M48 208h32h16v-16h-64v64h16v-16v-32zM48 128h32h16v-16h-64v64h16v-16v-32zM48 48h32h16v-16h-64v64h16v-16v-32zM128 208h32h16v-16h-64v64h16v-16v-32zM208 208h32h16v-16h-64v64h16v-16v-32zM128 128h32h16v-16h-64v64h16v-16v-32zM128 48h32h16v-16h-64v64h16v-16v-32z -M208 48h32h16v-16h-64v144h16v-96v-32z" /> - <glyph glyph-name="ion-ios-calculator" unicode="" horiz-adv-x="288" -d="M256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM248 168h-48v-128h48v128zM248 248h-48v-48h48v48zM168 88h-48v-48h48v48zM168 168h-48v-48h48v48zM168 248h-48v-48h48v48zM88 88h-48v-48h48v48zM88 168 -h-48v-48h48v48zM88 248h-48v-48h48v48zM40 296h208v48h-208v-48z" /> - <glyph glyph-name="ion-ios-calendar-outline" unicode="" horiz-adv-x="384" -d="M16 336v-64h352v64zM288 352h96v-352h-384v352h96v32h16v-32h160v32h16v-32zM368 16v240h-352v-240h352zM368 272v64h-80v-32h-16v32h-160v-32h-16v32h-80v-64h352z" /> - <glyph glyph-name="ion-ios-calendar" unicode="" horiz-adv-x="384" -d="M0 0v256h384v-256h-384zM384 352v-80h-384v80h96v-48h16v48h160v-48h16v48h96zM96 352v32h16v-32h-16zM272 352v32h16v-32h-16z" /> - <glyph glyph-name="ion-ios-camera-outline" unicode="" horiz-adv-x="384" -d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-7l-5 3c-3 4 -7 8 -10 11c-12 13 -20 24 -26 30 -c-5 5 -7 4 -7 4h-88s-2 0 -7 -4c-6 -5 -14 -14 -25 -27c-3 -4 -7 -10 -11 -14l-5 -3h-7h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17zM192 258c47 0 86 -38 86 -85s-39 -85 -86 -85s-86 38 -86 85s39 85 86 85zM192 104c38 0 70 31 70 69 -s-32 69 -70 69s-70 -31 -70 -69s32 -69 70 -69zM288 239v17h17v-17h-17zM160 173c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z" /> - <glyph glyph-name="ion-ios-camera" unicode="" horiz-adv-x="384" -d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM192 88c47 0 86 38 86 85s-39 85 -86 85s-86 -38 -86 -85s39 -85 86 -85zM305 239v17h-17v-17h17 -zM192 242c38 0 70 -31 70 -69s-32 -69 -70 -69s-70 31 -70 69s32 69 70 69zM192 141c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> - <glyph glyph-name="ion-ios-cart-outline" unicode="" horiz-adv-x="384" -d="M96 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM96 16c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM320 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM320 16c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM384 320 -l-16 -128l-271 -48l5 -30c7 -34 21 -34 26 -34h240v-16h-240c-11 0 -21 5 -28 14c-6 8 -11 19 -13 33l-43 234v0c-2 8 -3 12 -7 16c-6 5 -18 7 -37 7v16c23 0 38 -4 47 -11c7 -6 10 -14 12 -21zM355 206l11 99l-304 31l32 -176z" /> - <glyph glyph-name="ion-ios-cart" unicode="" horiz-adv-x="384" -d="M96 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM320 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM384 320l-16 -128l-271 -48l5 -30c7 -34 21 -34 26 -34h240v-16h-240c-11 0 -21 5 -28 14c-6 8 -11 19 -13 33l-43 234v0 -c-2 8 -3 12 -7 16c-6 5 -18 7 -37 7v16c23 0 38 -4 47 -11c7 -6 10 -14 12 -21z" /> - <glyph glyph-name="ion-ios-chatboxes-outline" unicode="" horiz-adv-x="416" -d="M16 384v-192h96v-16h-112v224h288v-112h-16v96h-256zM128 272h288v-224h-48v-64h-13l-64 64h-163v224zM400 64v192h-256v-192h153l55 -55v55h48z" /> - <glyph glyph-name="ion-ios-chatboxes" unicode="" horiz-adv-x="416" -d="M288 400v-112h-176v-112h-112v224h288zM128 272h288v-224h-48v-64h-13l-64 64h-163v224z" /> - <glyph glyph-name="ion-ios-chatbubble-outline" unicode="" horiz-adv-x="384" -d="M192 336c-97 0 -176 -62 -176 -138c0 -26 10 -51 27 -73c0 -1 0 -2 1 -3s2 -1 2 -2c4 -6 6 -13 6 -20c0 -3 1 -3 -13 -47l39 17v0c2 1 10 4 11 4h1v0c5 2 10 3 16 3c5 0 9 -1 14 -2l1 -1h2c19 -6 41 -10 70 -10c48 0 92 15 125 40c32 25 50 58 50 94 -c0 76 -79 138 -176 138zM192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84 -c0 85 86 154 192 154z" /> - <glyph glyph-name="ion-ios-chatbubble" unicode="" horiz-adv-x="384" -d="M192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84c0 85 86 154 192 154z -" /> - <glyph glyph-name="ion-ios-checkmark-empty" unicode="" horiz-adv-x="207" -d="M74 118c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47l125 126l17 -18z" /> - <glyph glyph-name="ion-ios-checkmark-outline" unicode="" horiz-adv-x="416" -d="M292 271l18 -18l-134 -135c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> - <glyph glyph-name="ion-ios-checkmark" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM176 118l134 135l-18 18l-125 -126l-47 47l-18 -18l56 -56c2 -2 6 -4 9 -4s7 2 9 4z" /> - <glyph glyph-name="ion-ios-circle-filled" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 352c88 0 160 -72 160 -160s-72 -160 -160 -160s-160 72 -160 160s72 160 160 160z" /> - <glyph glyph-name="ion-ios-circle-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> - <glyph glyph-name="ion-ios-clock-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 192v128h17v-145h-113v17h96z" /> - <glyph glyph-name="ion-ios-clock" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM225 175v145h-17v-128h-96v-17h113z" /> - <glyph glyph-name="ion-ios-close-empty" unicode="" horiz-adv-x="192" -d="M180 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" /> - <glyph glyph-name="ion-ios-close-outline" unicode="" horiz-adv-x="416" -d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM343 57c74 74 74 196 0 270s-196 74 -270 0s-74 -196 0 -270s196 -74 270 0zM292 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" /> - <glyph glyph-name="ion-ios-close" unicode="" horiz-adv-x="416" -d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM304 108l-84 84l84 84l-12 12l-84 -84l-84 84l-12 -12l84 -84l-84 -84l12 -12l84 84l84 -84z" /> - <glyph glyph-name="ion-ios-cloud-download-outline" unicode="" -d="M161 67l55 -54v242h16v-242l55 54l12 -12l-75 -73l-74 73zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82v0h-101v16h97h4c37 0 66 30 66 66s-29 67 -66 67h-15v20c0 55 -46 97 -101 97c-38 0 -73 -22 -90 -56l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -18 -44 -39l-1 -9 -l-9 -3c-30 -10 -50 -36 -50 -67c0 -40 33 -74 74 -74h91v-16h-91c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115c0 -1 -1 -2 -1 -3z" /> - <glyph glyph-name="ion-ios-cloud-download" unicode="" -d="M216 13v107h16v-107l55 54l12 -12l-75 -73l-74 73l11 12zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82h-134v135h-16v-135h-35h-21h-70c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115 -c0 -1 -1 -2 -1 -3z" /> - <glyph glyph-name="ion-ios-cloud-outline" unicode="" -d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4zM366 64c37 0 66 32 66 69s-29 67 -66 67h-15v21c0 56 -46 99 -101 99 -c-38 0 -73 -23 -90 -58l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39l-1 -9l-9 -3c-30 -10 -50 -37 -50 -69c0 -41 33 -76 74 -76h272h4z" /> - <glyph glyph-name="ion-ios-cloud-upload-outline" unicode="" -d="M161 188l-11 11l74 75l75 -75l-12 -11l-55 54v-242h-16v242zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83v0h-101v16h97h4c37 0 66 30 66 67s-29 70 -66 70l-15 1v20c0 56 -46 99 -101 99c-38 0 -73 -23 -90 -58l-6 -13l-14 6c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39 -l-1 -9l-9 -3c-30 -10 -50 -39 -50 -71c0 -41 33 -75 74 -75h91v-16h-91c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116c0 -1 -1 -3 -1 -4z" /> - <glyph glyph-name="ion-ios-cloud-upload" unicode="" -d="M216 0v96h16v-96h-16zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83h-134v146l55 -54l12 11l-75 75l-74 -75l11 -11l55 54v-146h-35h-31h-60c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116 -c0 -1 -1 -3 -1 -4z" /> - <glyph glyph-name="ion-ios-cloud" unicode="" -d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4z" /> - <glyph glyph-name="ion-ios-cloudy-night-outline" unicode="" horiz-adv-x="384" -d="M125 224c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 240v0c37 0 68 -26 76 -61 -h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78zM361 142c8 0 15 2 23 4c-4 -7 -9 -14 -14 -20c-21 -24 -50 -41 -84 -45c4 6 6 12 8 19c19 4 36 13 50 25c-18 1 -35 6 -50 13c-23 11 -42 29 -56 51 -c-14 21 -22 48 -22 75c0 15 2 30 7 44c-24 -12 -43 -33 -53 -59c-5 2 -12 4 -18 5c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52c0 -32 12 -63 35 -86s54 -36 86 -36h6z" /> - <glyph glyph-name="ion-ios-cloudy-night" unicode="" horiz-adv-x="384" -d="M361 142c8 0 15 2 23 4c-4 -7 -9 -15 -14 -21c-21 -24 -50 -40 -84 -44h-3c4 10 7 21 7 32c0 22 -9 43 -24 58c-14 15 -33 23 -53 24c-6 16 -16 29 -29 40c-10 8 -20 13 -32 17v2c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52 -c0 -32 12 -63 35 -86s54 -36 86 -36h6zM125 239v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v7c0 43 35 79 78 79z" /> - <glyph glyph-name="ion-ios-cloudy-outline" unicode="" horiz-adv-x="274" -d="M125 272c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-6 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 288v0c37 0 68 -26 76 -61 -h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> - <glyph glyph-name="ion-ios-cloudy" unicode="" horiz-adv-x="274" -d="M125 288v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> - <glyph glyph-name="ion-ios-cog-outline" unicode="" horiz-adv-x="384" -d="M384 175l-33 -8l-3 -14l27 -20l-12 -30l-34 5l-8 -11l17 -29l-23 -23l-29 17l-10 -7l5 -34l-29 -12l-21 27l-14 -3l-8 -33h-32l-9 33l-13 3l-21 -28l-29 12l4 34l-11 8l-30 -19l-23 23l18 31l-7 11l-35 -5l-12 29l28 22l-2 12l-35 9v32l35 9l2 12l-29 22l12 30l36 -5 -l7 10l-19 32l22 22l32 -19l11 8l-4 35l29 13l22 -29l12 2l9 35h32l9 -35l12 -2l22 28l29 -12l-5 -35l11 -8l30 18l22 -23l-17 -30l7 -10l35 5l12 -30l-28 -21l3 -13l33 -9v-32zM356 127l-26 20l6 33l32 8v7l-32 8l-6 33l26 19l-3 7l-32 -5l-19 27l17 28l-5 6l-28 -17l-28 18 -l5 34l-6 2l-20 -26l-32 6l-8 33h-7l-9 -33l-32 -6l-20 27l-7 -3l5 -34l-28 -18l-9 6l-21 12l-5 -5l18 -30l-18 -27l-33 5l-3 -7l27 -20l-6 -32l-33 -8v-7l33 -9l6 -32l-27 -20l3 -6l33 4l18 -27l-17 -29l5 -6l29 18l28 -18l-5 -33l7 -3l19 27l33 -7l8 -31h8l7 31l33 7 -l20 -26l7 3l-5 32l26 18l28 -16l5 5l-16 27l19 28l32 -4zM192 320c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM80 192c0 -7 1 -15 2 -22l104 28l28 104c-7 1 -15 2 -22 2c-30 0 -58 -12 -79 -33s-33 -49 -33 -79zM192 80c27 0 53 10 73 27 -l-75 75l-104 -28c6 -15 15 -29 27 -41c21 -21 49 -33 79 -33zM276 118c18 20 28 47 28 74c0 30 -12 58 -33 79c-12 12 -26 22 -42 27l-28 -105z" /> - <glyph glyph-name="ion-ios-cog" unicode="" horiz-adv-x="384" -d="M229 298c16 -5 30 -15 42 -27c21 -21 33 -49 33 -79c0 -27 -10 -54 -28 -74l-75 75zM214 302l-28 -104l-104 -28c-1 7 -2 15 -2 22c0 30 12 58 33 79s49 33 79 33c7 0 15 -1 22 -2zM86 154l104 28l75 -75c-20 -17 -46 -27 -73 -27c-30 0 -58 12 -79 33 -c-12 12 -21 26 -27 41zM384 175l-33 -8l-3 -14l27 -20l-12 -30l-34 5l-8 -11l17 -29l-23 -23l-29 17l-10 -7l5 -34l-29 -12l-21 27l-14 -3l-8 -33h-32l-9 33l-13 3l-21 -28l-29 12l4 34l-11 8l-30 -19l-23 23l18 31l-7 11l-35 -5l-12 29l28 22l-2 12l-35 9v32l35 9l2 12 -l-29 22l12 30l36 -5l7 10l-19 32l22 22l32 -19l11 8l-4 35l29 13l22 -29l12 2l9 35h32l9 -35l12 -2l22 28l29 -12l-5 -35l11 -8l30 18l22 -23l-17 -30l7 -10l35 5l12 -30l-28 -21l3 -13l33 -9v-32zM192 64c71 0 128 57 128 128s-57 128 -128 128s-128 -57 -128 -128 -s57 -128 128 -128z" /> - <glyph glyph-name="ion-ios-color-filter-outline" unicode="" horiz-adv-x="384" -d="M302 236c47 -13 82 -57 82 -108c0 -62 -50 -112 -112 -112c-31 0 -60 13 -80 34c-20 -21 -49 -34 -80 -34c-62 0 -112 50 -112 112c0 51 35 95 82 108c-1 7 -2 13 -2 20c0 62 50 112 112 112s112 -50 112 -112c0 -7 -1 -13 -2 -20zM96 256c0 -6 0 -12 1 -17 -c5 1 10 1 15 1c31 0 60 -13 80 -34c20 21 49 34 80 34c5 0 10 0 15 -1c1 5 1 11 1 17c0 53 -43 96 -96 96s-96 -43 -96 -96zM208 128c0 6 0 12 -1 17c-5 -1 -10 -1 -15 -1s-10 0 -15 1c-1 -5 -1 -11 -1 -17c0 -20 6 -38 16 -53c10 15 16 33 16 53zM192 160c3 0 7 1 10 1 -c-3 7 -6 14 -10 20c-4 -6 -7 -13 -10 -20c3 0 7 -1 10 -1zM166 164c4 11 9 21 16 30c-18 18 -43 30 -70 30c-3 0 -7 -1 -10 -1c10 -29 34 -51 64 -59zM202 194c7 -9 12 -19 16 -30c30 8 54 30 64 59c-3 0 -7 1 -10 1c-27 0 -52 -12 -70 -30zM112 32c27 0 52 12 70 30 -c-14 19 -22 41 -22 66c0 7 1 13 2 20c-36 10 -64 37 -76 72c-40 -11 -70 -48 -70 -92c0 -53 43 -96 96 -96zM272 32c53 0 96 43 96 96c0 44 -30 81 -70 92c-12 -35 -40 -62 -76 -72c1 -7 2 -13 2 -20c0 -25 -8 -47 -22 -66c18 -18 43 -30 70 -30z" /> - <glyph glyph-name="ion-ios-color-filter" unicode="" horiz-adv-x="384" -d="M302 236c47 -13 82 -57 82 -108c0 -62 -50 -112 -112 -112c-31 0 -60 13 -80 34c-20 -21 -49 -34 -80 -34c-62 0 -112 50 -112 112c0 51 35 95 82 108c-1 7 -2 13 -2 20c0 62 50 112 112 112s112 -50 112 -112c0 -7 -1 -13 -2 -20zM192 53l1 -2c3 3 6 7 9 11 -c14 19 22 41 22 66c0 7 -1 13 -2 20c36 10 64 37 76 72c2 5 3 10 4 15c-1 0 -2 1 -3 1v1c-4 1 -8 1 -12 2c-5 1 -10 1 -15 1c-31 0 -60 -13 -80 -34c-20 21 -49 34 -80 34c-5 0 -10 0 -15 -1c-4 -1 -8 -1 -12 -2v-1c-1 0 -2 -1 -3 -1c1 -5 2 -10 4 -15c12 -35 40 -62 76 -72 -c-1 -7 -2 -13 -2 -20c0 -25 8 -47 22 -66c3 -4 6 -8 9 -11zM207 145c1 -5 1 -11 1 -17c0 -20 -6 -38 -16 -53c-10 15 -16 33 -16 53c0 6 0 12 1 17c5 -1 10 -1 15 -1s10 0 15 1zM282 223c-10 -29 -34 -51 -64 -59c-4 11 -9 21 -16 30c18 18 43 30 70 30c3 0 7 -1 10 -1z -M202 161c-3 0 -7 -1 -10 -1s-7 1 -10 1c3 7 6 14 10 20c4 -6 7 -13 10 -20zM112 224c27 0 52 -12 70 -30c-7 -9 -12 -19 -16 -30c-30 8 -54 30 -64 59c3 0 7 1 10 1z" /> - <glyph glyph-name="ion-ios-color-wand-outline" unicode="" horiz-adv-x="384" -d="M128 298l256 -256l-34 -34l-256 256zM149 232l201 -201l11 11l-201 202zM120 344v40h16v-40h-16zM120 140v40h16v-40h-16zM216 256v16h40v-16h-40zM0 256v16h40v-16h-40zM47 354l29 -29l-12 -11l-28 28zM76 198l-29 -28l-11 11l28 28zM220 342l-28 -28l-12 11l29 29z" /> - <glyph glyph-name="ion-ios-color-wand" unicode="" horiz-adv-x="396" -d="M140 289l256 -257l-34 -34l-256 257zM124 322v64h32v-64h-32zM124 118v64h32v-64h-32zM216 238v32h64v-32h-64zM246 336l-45 -45l-23 22l45 46zM34 336l23 23l45 -46l-23 -22zM34 169l45 45l23 -22l-45 -46zM0 238v32h64v-32h-64z" /> - <glyph glyph-name="ion-ios-compose-outline" unicode="" horiz-adv-x="384" -d="M304 32v208l16 16v-240h-320v304h256l-16 -16h-224v-272h288zM174 164l171 171l11 -11l-180 -180h-32v32l180 180l11 -11l-171 -171zM380 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4z" /> - <glyph glyph-name="ion-ios-compose" unicode="" horiz-adv-x="384" -d="M192 128l128 128v-240h-320v304h256l-128 -128v-64h64zM324 356l32 -32l-180 -180h-32v32zM380 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4z" /> - <glyph glyph-name="ion-ios-contact-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 383c-105 0 -191 -86 -191 -191c0 -47 17 -89 45 -122c18 8 62 24 90 32c2 1 3 0 3 10c0 11 -1 18 -4 24c-4 8 -7 20 -9 31c-4 5 -10 15 -14 33c-3 16 -1 22 1 28v2 -c1 4 0 23 -3 38c-2 10 1 34 15 52c9 12 27 26 58 28h18c32 -2 49 -16 58 -28c14 -18 17 -42 15 -52c-3 -15 -4 -34 -3 -38c0 0 1 -1 1 -2c2 -6 3 -12 0 -28c-4 -18 -10 -27 -14 -32c-2 -11 -5 -24 -9 -32c-3 -7 -6 -15 -6 -23c0 -10 0 -10 2 -11c27 -8 73 -24 93 -32 -c28 33 45 76 45 122c0 105 -86 191 -191 191z" /> - <glyph glyph-name="ion-ios-contact" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c59 0 111 27 146 69c-20 8 -66 24 -93 32c-2 1 -3 1 -3 11c0 8 4 16 7 23c4 8 7 21 9 32c4 5 10 14 14 32c3 16 2 22 0 28c0 0 -1 1 -1 2c-1 4 0 23 3 38c2 10 -1 34 -15 52 -c-9 12 -26 26 -58 28h-18c-31 -2 -49 -16 -58 -28c-14 -18 -17 -42 -15 -52c3 -15 4 -34 3 -38v-2c-2 -6 -4 -12 -1 -28c4 -18 10 -28 14 -33c2 -11 5 -23 9 -31c3 -6 4 -13 4 -24c0 -10 -1 -9 -3 -10c-28 -8 -72 -24 -90 -32c35 -42 87 -69 146 -69z" /> - <glyph glyph-name="ion-ios-copy-outline" unicode="" horiz-adv-x="288" -d="M192 352v-64h64v-16h-80v80h16zM213 384l75 -75v-261h-48v-48h-240v336h48v48h165zM224 16v32h-176v272h-32v-304h208zM272 64v238l-65 66h-143v-304h208z" /> - <glyph glyph-name="ion-ios-copy" unicode="" horiz-adv-x="288" -d="M32 32h16h192v-32h-240v336h32v-288v-16zM213 384l75 -75v-261h-48h-192v288v48h165zM256 272v16h-64v64h-16v-80h80z" /> - <glyph glyph-name="ion-ios-crop-strong" unicode="" horiz-adv-x="384" -d="M64 336v48h32v-48h-32zM96 96h176v-32h-208v208h32v-176zM336 64v32h48v-32h-48zM0 320h320v-320h-32v288h-288v32z" /> - <glyph glyph-name="ion-ios-crop" unicode="" horiz-adv-x="384" -d="M64 336v48h16v-48h-16zM80 80h208v-16h-224v224h16v-208zM336 64v16h48v-16h-48zM0 320h320v-320h-16v304h-304v16z" /> - <glyph glyph-name="ion-ios-download-outline" unicode="" horiz-adv-x="320" -d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 196l55 -55v243h16v-243l55 55l11 -12l-74 -74l-74 74z" /> - <glyph glyph-name="ion-ios-download" unicode="" horiz-adv-x="320" -d="M168 304h152v-304h-320v304h152v-163l-55 55l-11 -12l74 -74l74 74l-11 12l-55 -55v163zM152 304v80h16v-80h-16z" /> - <glyph glyph-name="ion-ios-drag" unicode="" horiz-adv-x="352" -d="M0 128v16h352v-16h-352zM0 184v16h352v-16h-352zM0 240v16h352v-16h-352z" /> - <glyph glyph-name="ion-ios-email-outline" unicode="" horiz-adv-x="384" -d="M0 320h384v-256h-384v256zM192 180l163 124h-326zM16 80h352v214l-115 -88l68 -77l-2 -2l-79 70l-48 -37l-48 37l-79 -70l-2 2l68 77l-115 88v-214z" /> - <glyph glyph-name="ion-ios-email" unicode="" horiz-adv-x="384" -d="M384 64h-384v242l131 -100l-68 -77l2 -2l79 70l48 -37l48 37l79 -70l2 2l-68 77l131 100v-242zM376 320l-184 -140l-184 140h368z" /> - <glyph glyph-name="ion-ios-eye-outline" unicode="" horiz-adv-x="384" -d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 288c-62 0 -111 -36 -170 -96c24 -24 48 -50 76 -68c30 -20 60 -28 94 -28 -c75 0 133 56 171 95c-26 29 -50 50 -74 66c-32 21 -64 31 -97 31zM192 112c-44 0 -80 36 -80 80s36 80 80 80s80 -36 80 -80s-36 -80 -80 -80zM192 256c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64zM224 192h16v0c0 -26 -22 -48 -48 -48s-48 21 -48 48 -s22 48 48 48v-16c-16 0 -32 -13 -32 -31s15 -33 32 -33s32 14 32 32v0z" /> - <glyph glyph-name="ion-ios-eye" unicode="" horiz-adv-x="384" -d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM186 221 -c0 -19 16 -35 35 -35c7 0 14 2 19 6v0c0 -27 -22 -48 -48 -48s-48 21 -48 48s22 48 48 48c-4 -5 -6 -12 -6 -19z" /> - <glyph glyph-name="ion-ios-fastforward-outline" unicode="" -d="M16 293v-202l184 101zM240 292v0v-78v-27v-95l176 100zM224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" /> - <glyph glyph-name="ion-ios-fastforward" unicode="" -d="M224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" /> - <glyph glyph-name="ion-ios-filing-outline" unicode="" horiz-adv-x="352" -d="M288 320l64 -96v-160h-176h-176v160l64 96h224zM333 224l-45 68v-68h45zM80 304v-80h48c0 -26 22 -48 48 -48s48 22 48 48h48v80h-192zM64 292l-45 -68h45v68zM336 80v128h-98c-7 -28 -32 -48 -62 -48s-55 20 -62 48h-98v-128h160h160z" /> - <glyph glyph-name="ion-ios-filing" unicode="" horiz-adv-x="352" -d="M176 160c30 0 55 20 62 48h114v-144h-176h-176v144h114c7 -28 32 -48 62 -48zM64 224h-7h-57l64 96v0v-80h16v80h192v-80h16v80v0l64 -96h-56h-8h-16h-8h-40c0 -26 -22 -48 -48 -48s-48 22 -48 48h-39h-9h-16z" /> - <glyph glyph-name="ion-ios-film-outline" unicode="" horiz-adv-x="400" -d="M0 360h400v-336h-400v336zM72 40v48h-56v-48h56zM72 104v48h-56v-48h56zM72 168v48h-56v-48h56zM72 232v48h-56v-48h56zM72 296v48h-56v-48h56zM312 40v144h-224v-144h224zM312 200v144h-224v-144h224zM384 40v48h-56v-48h56zM384 104v48h-56v-48h56zM384 168v48h-56v-48 -h56zM384 232v48h-56v-48h56zM384 296v48h-56v-48h56z" /> - <glyph glyph-name="ion-ios-film" unicode="" horiz-adv-x="400" -d="M0 360h400v-336h-400v336zM72 40v48h-56v-48h56zM72 104v48h-56v-48h56zM72 168v48h-56v-48h56zM72 232v48h-56v-48h56zM72 296v48h-56v-48h56zM312 184v16h-224v-16h224zM384 40v48h-56v-48h56zM384 104v48h-56v-48h56zM384 168v48h-56v-48h56zM384 232v48h-56v-48h56z -M384 296v48h-56v-48h56z" /> - <glyph glyph-name="ion-ios-flag-outline" unicode="" horiz-adv-x="256" -d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4zM240 179v0v141c-11 -1 -25 -4 -40 -4 -c-25 0 -46 6 -68 11s-42 9 -64 9c-30 0 -46 -5 -52 -7v-137c10 3 26 6 52 6c24 0 45 -8 67 -13c21 -4 43 -9 66 -9c15 0 28 2 39 3z" /> - <glyph glyph-name="ion-ios-flag" unicode="" horiz-adv-x="256" -d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4z" /> - <glyph glyph-name="ion-ios-flame-outline" unicode="" horiz-adv-x="256" -d="M96 416c87 -64 170 -179 159 -288c-13 -134 -104 -160 -127 -160s-127 40 -128 160c-1 146 122 143 96 288zM128 -24c0 0 40 36 40 80s-40 80 -40 80s-41 -36 -41 -80s41 -80 41 -80zM239 130c5 47 -10 99 -41 151c-22 36 -50 70 -83 99c0 -57 -24 -91 -49 -123 -c-26 -34 -50 -65 -50 -129c0 -25 5 -48 15 -68c8 -17 20 -32 35 -45c8 -7 16 -12 23 -16c-9 16 -18 35 -18 57c0 51 44 90 46 92l11 9l11 -9c2 -2 45 -41 45 -92c0 -23 -9 -44 -19 -60c7 4 13 8 20 14c14 12 25 27 34 44c11 21 17 47 20 76z" /> - <glyph glyph-name="ion-ios-flame" unicode="" horiz-adv-x="256" -d="M96 416c87 -64 170 -179 159 -288c-13 -134 -104 -160 -127 -160s-127 40 -128 160c-1 146 122 143 96 288zM128 -24c0 0 40 36 40 80s-40 80 -40 80s-41 -36 -41 -80s41 -80 41 -80z" /> - <glyph glyph-name="ion-ios-flask-outline" unicode="" horiz-adv-x="384" -d="M373 78c8 -16 11 -32 11 -46c-1 -36 -27 -64 -63 -64h-256c-36 0 -64 27 -65 64c0 14 4 30 12 46l116 195v127h-16v16h16h16v-16v-16h48v-16h-48v-32h32v-16h-32v-32h48v-16h-48v-3l-2 -4l-15 -25h49v-16h-58l-92 -154c-13 -25 -14 -43 -2 -63c9 -14 23 -23 41 -23h256 -c17 0 33 8 41 22c5 8 6 17 6 26c0 12 -2 25 -9 38l-116 195l-3 4v131v16h16h16v-16h-16v-127zM44 73l72 119h153l72 -119c7 -11 10 -24 10 -33c-1 -24 -16 -40 -46 -40h-226c-30 0 -46 12 -46 40c0 9 4 22 11 33zM260 176h-135l-67 -111v0v0c-5 -8 -9 -19 -9 -25 -c0 -13 5 -17 6 -18c4 -4 13 -6 24 -6h226c10 0 18 3 23 7c4 4 7 10 7 18c0 6 -3 16 -8 24v0v0z" /> - <glyph glyph-name="ion-ios-flask" unicode="" horiz-adv-x="384" -d="M327 65v0c5 -8 8 -18 8 -24c0 -8 -3 -14 -7 -18c-5 -4 -13 -7 -23 -7h-226c-11 0 -20 2 -24 6c-1 1 -6 5 -6 18c0 6 4 17 9 25v0v0l67 111h135l67 -111v0zM373 78c8 -16 11 -32 11 -46c-1 -36 -27 -64 -63 -64h-256c-36 0 -64 27 -65 64c0 14 4 30 12 46l116 195v127h-16 -v16h160v-16h-16v-127zM144 384v-16h48v16h-48zM144 336v-16h32v16h-32zM144 288v-16h48v16h-48zM127 240l-9 -16h58v16h-49zM351 40c0 9 -3 22 -10 33l-72 119h-154l-71 -119c-7 -11 -11 -24 -11 -33c0 -28 16 -40 46 -40h226c30 0 45 16 46 40z" /> - <glyph glyph-name="ion-ios-flower-outline" unicode="" -d="M363 164c-29 0 -65 7 -93 14c-1 -3 -2 -6 -4 -9c25 -15 56 -36 76 -56c40 -40 53 -68 41 -80c-3 -3 -7 -4 -12 -4c-15 0 -38 15 -68 45c-20 20 -41 51 -56 76c-3 -2 -7 -3 -10 -4c7 -28 15 -64 15 -93c0 -56 -12 -85 -28 -85s-28 29 -28 85c0 29 8 65 15 93 -c-3 1 -7 2 -10 4c-15 -25 -36 -56 -56 -76c-30 -30 -53 -45 -68 -45c-5 0 -9 1 -12 4c-12 12 1 40 41 80c20 20 51 41 76 56c-2 3 -3 6 -4 9c-28 -7 -64 -14 -93 -14c-56 0 -85 12 -85 28s29 28 85 28c29 0 65 -8 93 -15c1 3 2 7 4 10c-25 15 -56 35 -76 55 -c-40 40 -53 68 -41 80c3 3 7 4 12 4c15 0 38 -14 68 -44c20 -20 41 -51 56 -76c3 2 7 3 10 4c-7 28 -15 64 -15 93c0 56 12 85 28 85s28 -29 28 -85c0 -29 -8 -65 -15 -93c3 -1 7 -2 10 -4c15 25 36 56 56 76c30 30 53 44 68 44c5 0 9 -1 12 -4c12 -12 -1 -40 -41 -80 -c-20 -20 -51 -40 -76 -55c2 -3 3 -7 4 -10c28 7 64 15 93 15c56 0 85 -12 85 -28s-29 -28 -85 -28zM288 193v-3c30 -7 56 -10 75 -10c21 0 39 2 52 5c10 3 14 6 16 7c-2 1 -6 4 -16 7c-13 3 -31 5 -52 5c-19 0 -45 -4 -75 -11zM314 299c-14 -14 -30 -35 -46 -61l2 -2 -c26 16 47 32 61 46c15 15 26 28 33 40c5 9 7 14 7 16c-4 0 -22 -4 -57 -39zM178 236l2 2c-16 26 -32 47 -46 61c-35 35 -53 39 -57 39c0 -2 2 -7 7 -16c7 -12 18 -25 33 -40c14 -14 35 -30 61 -46zM85 180c19 0 45 3 75 10v3c-30 7 -56 11 -75 11c-21 0 -39 -2 -52 -5 -c-10 -3 -14 -6 -16 -7c2 -1 5 -4 15 -7c13 -3 32 -5 53 -5zM134 85c14 14 30 35 46 61l-2 2c-26 -16 -47 -32 -61 -46c-15 -15 -26 -29 -33 -41c-5 -9 -7 -14 -7 -16c4 0 22 5 57 40zM270 148l-2 -2c16 -26 32 -47 46 -61c35 -35 53 -40 57 -40c0 2 -2 7 -7 16 -c-7 12 -18 26 -33 41c-14 14 -35 30 -61 46zM217 383c-3 -13 -5 -31 -5 -52c0 -19 4 -45 11 -75h2c7 30 11 56 11 75c0 21 -2 39 -5 52c-3 10 -6 14 -7 16c-1 -2 -4 -6 -7 -16zM231 0c3 13 5 32 5 53c0 19 -4 45 -11 75h-2c-7 -30 -11 -56 -11 -75c0 -21 2 -40 5 -53 -c3 -10 6 -13 7 -15c1 2 4 5 7 15zM224 160c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM313 42c10 -34 7 -53 -5 -58c-2 -1 -3 -1 -5 -1c-11 0 -25 13 -37 35c5 35 -2 76 -2 76s24 -34 49 -52zM302 -1c1 4 2 14 -3 34c-5 4 -10 9 -15 14 -c0 -9 0 -17 -1 -25c10 -16 16 -22 19 -23zM182 365c-6 -35 1 -75 1 -75s-27 35 -48 51c-10 35 -7 54 5 59c2 1 3 1 5 1c11 0 24 -12 37 -36zM164 337c0 9 0 17 1 25c-10 16 -16 21 -19 22c-1 -4 -2 -14 3 -34c5 -4 10 -8 15 -13zM50 149c35 -4 76 2 76 2s-34 -24 -51 -48 -c-12 -4 -26 -6 -35 -6c-13 0 -21 4 -24 11c-5 11 7 25 34 41zM66 117c4 5 8 10 13 15c-9 0 -17 0 -25 1c-16 -10 -21 -16 -22 -19c1 0 4 -1 8 -1c7 0 16 1 26 4zM432 276c5 -11 -7 -26 -34 -42c-35 5 -76 -2 -76 -2s33 25 51 49c13 4 26 5 35 5c13 0 21 -3 24 -10zM394 250 -c16 10 21 16 22 19c-1 0 -4 1 -8 1c-7 0 -16 -1 -26 -4c-4 -5 -8 -9 -13 -14c9 0 17 -1 25 -2zM131 39c31 24 53 55 53 55s-7 -39 -3 -71c-15 -26 -28 -39 -39 -39c-2 0 -4 0 -6 1c-11 5 -13 24 -5 54zM143 1c4 2 12 8 22 26c0 6 -1 13 -1 20c-6 -6 -13 -12 -19 -17 -c-4 -18 -3 -26 -2 -29zM312 398c11 -5 13 -22 5 -54c-29 -21 -53 -55 -53 -55s8 48 3 71c13 25 28 39 39 39c2 0 4 0 6 -1zM303 353c5 18 3 27 2 30c-4 -2 -12 -8 -22 -26c0 -6 1 -14 1 -21c6 6 13 12 19 17zM71 285c18 -24 55 -53 55 -53s-40 7 -70 3c-28 15 -43 32 -38 44 -c3 7 10 11 22 11c8 0 21 -1 31 -5zM33 273c2 -4 8 -12 26 -22c6 0 13 1 20 1c-6 6 -12 12 -17 18c-8 2 -16 4 -22 4c-4 0 -6 -1 -7 -1zM392 149c30 -17 43 -33 38 -45c-3 -7 -10 -10 -22 -10c-8 0 -19 1 -31 5c-20 27 -55 52 -55 52s45 -8 70 -2zM408 110c4 0 6 1 7 1 -c-2 4 -8 12 -26 22c-6 0 -13 -1 -20 -1c6 -6 12 -13 17 -19c8 -2 16 -3 22 -3z" /> - <glyph glyph-name="ion-ios-flower" unicode="" -d="M363 220c56 0 85 -12 85 -28s-29 -28 -85 -28c-29 0 -65 7 -93 14c-1 -3 -2 -6 -4 -9c25 -15 56 -36 76 -56c40 -40 53 -68 41 -80s-40 1 -80 41c-20 20 -41 51 -56 76c-3 -2 -7 -3 -10 -4c7 -28 15 -64 15 -93c0 -56 -12 -85 -28 -85s-28 29 -28 85c0 29 8 65 15 93 -c-3 1 -7 2 -10 4c-15 -25 -36 -56 -56 -76c-40 -40 -68 -53 -80 -41s1 40 41 80c20 20 51 41 76 56c-2 3 -3 6 -4 9c-28 -7 -64 -14 -93 -14c-56 0 -85 12 -85 28s29 28 85 28c29 0 65 -8 93 -15c1 3 2 7 4 10c-25 15 -56 35 -76 55c-40 40 -53 68 -41 80s40 0 80 -40 -c20 -20 41 -51 56 -76c3 2 6 3 9 4c-7 28 -14 64 -14 93c0 56 12 85 28 85s28 -29 28 -85c0 -29 -7 -65 -14 -93c3 -1 6 -2 9 -4c15 25 36 56 56 76c40 40 68 52 80 40s-1 -40 -41 -80c-20 -20 -51 -40 -76 -55c2 -3 3 -7 4 -10c28 7 64 15 93 15zM264 94c0 0 24 -34 49 -52 -c10 -34 7 -53 -5 -58c-2 -1 -3 -1 -5 -1c-11 0 -25 13 -37 35c5 35 -2 76 -2 76zM183 290c0 0 -27 35 -48 51c-10 35 -7 54 5 59c2 1 3 1 5 1c11 0 24 -12 37 -36c-6 -35 1 -75 1 -75zM126 151c0 0 -34 -24 -51 -48c-12 -4 -26 -6 -35 -6c-13 0 -21 4 -24 11 -c-5 11 7 25 34 41c35 -4 76 2 76 2zM322 232c0 0 33 25 51 49c13 4 26 5 35 5c13 0 21 -3 24 -10c5 -11 -7 -26 -34 -42c-35 5 -76 -2 -76 -2zM131 39c31 24 53 55 53 55s-7 -39 -3 -71c-15 -26 -28 -39 -39 -39c-2 0 -4 0 -6 1c-11 5 -13 24 -5 54zM317 344 -c-29 -21 -53 -55 -53 -55s8 48 3 71c13 25 28 39 39 39c2 0 4 0 6 -1c11 -5 13 -22 5 -54zM56 235c-28 15 -43 32 -38 44c3 7 10 11 22 11c8 0 21 -1 31 -5c18 -24 55 -53 55 -53s-40 7 -70 3zM392 149c30 -17 43 -33 38 -45c-3 -7 -10 -10 -22 -10c-8 0 -19 1 -31 5 -c-20 27 -55 52 -55 52s45 -8 70 -2z" /> - <glyph glyph-name="ion-ios-folder-outline" unicode="" -d="M425 352c13 0 23 -10 23 -23v-304c0 -14 -10 -25 -23 -25h-400c-13 0 -25 12 -25 25v336c0 13 11 23 25 23h112c8 0 12 -2 17 -7v0l23 -23c2 -2 3 -2 6 -2h242zM25 368c-4 0 -9 -3 -9 -7v-74c3 1 5 1 8 1h400c3 0 5 0 8 -1v42c0 4 -3 7 -7 7h-242c-7 0 -12 2 -17 7 -l-23 23c-2 2 -3 2 -6 2h-112zM432 25v239c0 4 -4 8 -8 8h-400c-4 0 -8 -4 -8 -8v-239c0 -4 5 -9 9 -9h400c4 0 7 5 7 9z" /> - <glyph glyph-name="ion-ios-folder" unicode="" -d="M440 272c4 0 8 -4 8 -8v-239c0 -14 -10 -25 -23 -25h-400c-13 0 -25 12 -25 25v239c0 4 4 8 8 8h432zM425 352c13 0 23 -10 23 -23v-42c-3 1 -5 1 -8 1h-432c-3 0 -5 0 -8 -1v74c0 13 11 23 25 23h112c8 0 12 -2 17 -7v0l23 -23c2 -2 3 -2 6 -2h242z" /> - <glyph glyph-name="ion-ios-football-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM249 6c3 1 5 1 8 2l24 64l-20 39v1h-106l-20 -39l25 -65c2 -1 5 -1 7 -2c12 -3 25 -5 38 -5c14 0 30 2 44 5zM41 284c-15 -27 -23 -57 -24 -89l43 37v0zM142 371 -c-36 -14 -68 -38 -90 -69l22 -64l5 -2l49 -23l71 60v58zM277 201l-70 58l-69 -58v-1l18 -72h104l18 72zM399 195c-1 32 -9 63 -24 90l-19 -53v0zM364 302c-22 31 -54 56 -90 69l-58 -40v-58l71 -60l54 24zM18 175c3 -34 15 -66 33 -92l70 -1l21 39l-20 77l-1 1l-49 22z -M295 82l70 1c18 26 30 58 33 92l-54 46l-50 -23l-20 -77zM207 345l47 32c-15 4 -30 6 -46 6s-32 -2 -47 -6zM118 66l-54 1c20 -23 46 -42 75 -53l-20 50zM277 14c29 11 55 30 75 53l-56 -1l-2 -3z" /> - <glyph glyph-name="ion-ios-football" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM249 6c3 1 5 1 8 2l24 64l-20 39v1h-106l-20 -39l25 -65c2 -1 5 -1 7 -2c12 -3 25 -5 38 -5c14 0 30 2 44 5zM142 371c-36 -14 -68 -38 -90 -69l22 -64l5 -2l49 -23l71 60v58z -M364 302c-22 31 -54 56 -90 69l-58 -40v-58l71 -60l54 24zM18 175c3 -34 15 -66 33 -92l70 -1l21 39l-20 77l-1 1l-49 22zM295 82l70 1c18 26 30 58 33 92l-54 46l-50 -23l-20 -77z" /> - <glyph glyph-name="ion-ios-game-controller-a-outline" unicode="" -d="M163 208c3 0 5 -2 5 -5v-22c0 -3 -2 -5 -5 -5h-35v-35c0 -3 -3 -5 -6 -5h-21c-3 0 -5 2 -5 5v35h-35c-3 0 -5 3 -5 6v21c0 3 2 5 5 5h35v35c0 3 2 5 5 5h22c3 0 5 -2 5 -5v-35h35zM330 169c11 0 20 -8 20 -19s-9 -19 -20 -19s-19 8 -19 19s8 19 19 19zM288 211 -c11 0 19 -8 19 -19s-8 -19 -19 -19s-20 8 -20 19s9 19 20 19zM373 211c11 0 19 -8 19 -19s-8 -19 -19 -19s-20 8 -20 19s9 19 20 19zM330 253c11 0 20 -8 20 -19s-9 -20 -20 -20s-19 9 -19 20s8 19 19 19zM337 286h-226c-26 0 -49 -9 -67 -26s-28 -41 -28 -67s10 -51 28 -68 -s41 -27 67 -27h226c26 0 49 10 67 27s28 42 28 68s-10 50 -28 67s-41 26 -67 26zM337 302v0c61 0 111 -45 111 -109s-50 -111 -111 -111h-226c-61 0 -111 47 -111 111s50 109 111 109h226z" /> - <glyph glyph-name="ion-ios-game-controller-a" unicode="" -d="M337 302c61 0 111 -45 111 -109s-50 -111 -111 -111h-226c-61 0 -111 47 -111 111s50 109 111 109h226zM168 181v0v22c0 3 -2 5 -5 5h-35v35c0 3 -2 5 -5 5h-22c-3 0 -5 -2 -5 -5v-35h-35c-3 0 -5 -2 -5 -5v-21c0 -3 2 -6 5 -6h35v-35c0 -3 2 -5 5 -5h21c3 0 6 2 6 5v35 -h35c3 0 5 2 5 5zM288 173c11 0 19 8 19 19s-8 19 -19 19s-20 -8 -20 -19s9 -19 20 -19zM330 131c11 0 20 8 20 19s-9 19 -20 19s-19 -8 -19 -19s8 -19 19 -19zM330 214c11 0 20 9 20 20s-9 19 -20 19s-19 -8 -19 -19s8 -20 19 -20zM373 173c11 0 19 8 19 19s-8 19 -19 19 -s-20 -8 -20 -19s9 -19 20 -19z" /> - <glyph glyph-name="ion-ios-game-controller-b-outline" unicode="" -d="M276 244c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM320 200c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM103 264c22 0 39 -18 39 -40s-17 -40 -39 -40s-39 18 -39 40s17 40 39 40zM103 205c11 0 19 8 19 19s-8 19 -19 19 -s-19 -8 -19 -19s8 -19 19 -19zM320 288c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM364 244c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM434 199c21 -88 18 -152 -7 -164c-4 -2 -9 -3 -13 -3c-22 0 -45 24 -68 52c-26 32 -32 33 -110 33 -h-24c-78 0 -84 -1 -110 -33c-23 -28 -46 -52 -68 -52c-4 0 -9 1 -13 3c-25 12 -28 76 -7 164s43 136 88 149c10 3 18 4 26 4c28 0 47 -15 96 -15s68 15 96 15c8 0 16 -1 26 -4c45 -13 67 -61 88 -149zM420 49c10 5 23 48 -1 146c-21 90 -43 128 -78 138c-8 2 -14 3 -21 3 -c-10 0 -19 -2 -30 -5c-16 -4 -36 -10 -66 -10s-50 6 -66 10c-11 3 -20 5 -30 5c-7 0 -13 -1 -21 -3c-35 -10 -57 -48 -78 -138c-24 -98 -11 -141 -1 -146c2 -1 4 -1 6 -1c6 0 14 4 23 12s19 18 32 34s24 28 44 34c17 5 38 5 79 5h24c41 0 62 0 79 -5c20 -6 31 -18 44 -34 -s23 -26 32 -34s17 -12 23 -12c2 0 4 0 6 1z" /> - <glyph glyph-name="ion-ios-game-controller-b" unicode="" -d="M103 243c11 0 19 -8 19 -19s-8 -19 -19 -19s-19 8 -19 19s8 19 19 19zM434 199c21 -88 18 -152 -7 -164c-4 -2 -9 -3 -13 -3c-22 0 -45 24 -68 52c-26 32 -32 33 -110 33h-24c-78 0 -84 -1 -110 -33c-23 -28 -46 -52 -68 -52c-4 0 -9 1 -13 3c-25 12 -28 76 -7 164 -s43 136 88 149c10 3 18 4 26 4c28 0 47 -15 96 -15s68 15 96 15c8 0 16 -1 26 -4c45 -13 67 -61 88 -149zM103 184c22 0 39 18 39 40s-17 40 -39 40s-39 -18 -39 -40s17 -40 39 -40zM276 204c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM320 160 -c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM320 248c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM364 204c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20z" /> - <glyph glyph-name="ion-ios-gear-outline" unicode="" horiz-adv-x="384" -d="M193 288c26 0 50 -10 68 -28s28 -42 28 -68s-10 -50 -28 -68s-42 -28 -68 -28s-50 10 -68 28s-28 42 -28 68s10 50 28 68s42 28 68 28zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM138 365c-10 -3 -20 -7 -30 -12c2 -8 1 -16 0 -24 -c-2 -13 -8 -25 -18 -35c-12 -12 -29 -19 -46 -19c-4 0 -9 0 -13 1c-5 -10 -9 -20 -12 -30c7 -4 12 -10 17 -17c8 -11 12 -24 12 -37s-4 -26 -12 -37c-5 -7 -10 -13 -17 -17c3 -10 7 -20 12 -30c4 1 9 1 13 1c17 0 34 -7 46 -19c10 -10 16 -22 18 -35c1 -8 2 -16 0 -24 -c10 -5 20 -9 30 -12c4 7 10 12 17 17c11 8 24 12 37 12s26 -4 37 -12c7 -5 13 -10 17 -17c10 3 20 7 30 12c-2 8 -1 16 0 24c2 13 8 25 18 35c12 12 29 19 46 19c4 0 9 0 13 -1c5 10 9 20 12 30c-7 4 -12 10 -17 17c-8 11 -12 24 -12 37s4 26 12 37c5 7 10 13 17 17 -c-3 10 -7 20 -12 30c-4 -1 -9 -1 -13 -1c-17 0 -34 7 -46 19c-10 10 -16 22 -18 35c-1 8 -2 16 0 24c-10 5 -20 9 -30 12c-4 -7 -10 -12 -17 -17c-11 -8 -24 -12 -37 -12s-26 4 -37 12c-7 5 -13 10 -17 17zM238 384v0c20 -5 40 -13 57 -24c-8 -18 -5 -40 10 -55 -c10 -10 22 -14 35 -14c7 0 14 1 20 4c11 -17 19 -37 24 -57c-19 -7 -32 -25 -32 -46s14 -39 32 -46c-5 -20 -13 -40 -24 -57c-6 3 -13 4 -20 4c-13 0 -25 -4 -35 -14c-15 -15 -18 -37 -10 -55c-17 -11 -37 -19 -57 -24c-7 18 -25 32 -46 32s-39 -14 -46 -32 -c-20 5 -40 13 -57 24c8 18 5 40 -10 55c-10 10 -22 14 -35 14c-7 0 -14 -1 -20 -4c-11 17 -19 37 -24 57c18 7 32 25 32 46s-13 39 -32 46c5 20 13 40 24 57c6 -3 13 -4 20 -4c13 0 25 4 35 14c15 15 18 37 10 55c17 11 37 19 57 24c7 -19 25 -32 46 -32s39 13 46 32z" /> - <glyph glyph-name="ion-ios-gear" unicode="" horiz-adv-x="384" -d="M352 192c0 -21 14 -39 32 -46c-5 -20 -13 -40 -24 -57c-6 3 -13 4 -20 4c-13 0 -25 -4 -35 -14c-15 -15 -18 -37 -10 -55c-17 -11 -37 -19 -57 -24c-7 18 -25 32 -46 32s-39 -14 -46 -32c-20 5 -40 13 -57 24c8 18 5 40 -10 55c-10 10 -22 14 -35 14c-7 0 -14 -1 -20 -4 -c-11 17 -19 37 -24 57c18 7 32 25 32 46s-13 39 -32 46c5 20 13 40 24 57c6 -3 13 -4 20 -4c13 0 25 4 35 14c15 15 18 37 10 55c17 11 37 19 57 24c7 -19 25 -32 46 -32s39 13 46 32c20 -5 40 -13 57 -24c-8 -18 -5 -40 10 -55c10 -10 22 -14 35 -14c7 0 14 1 20 4 -c11 -17 19 -37 24 -57c-19 -7 -32 -25 -32 -46zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" /> - <glyph glyph-name="ion-ios-glasses-outline" unicode="" -d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24 -c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58zM342 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77zM106 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77z" /> - <glyph glyph-name="ion-ios-glasses" unicode="" -d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24 -c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58z" /> - <glyph glyph-name="ion-ios-grid-view-outline" unicode="" horiz-adv-x="384" -d="M384 256h-112v-128h112v-16h-112v-112h-16v112h-128v-112h-16v112h-112v16h112v128h-112v16h112v112h16v-112h128v112h16v-112h112v-16zM256 128v128h-128v-128h128z" /> - <glyph glyph-name="ion-ios-grid-view" unicode="" horiz-adv-x="384" -d="M128 128v128h128v-128h-128zM0 384h384v-384h-384v384zM352 256v16h-80v80h-16v-80h-128v80h-16v-80h-80v-16h80v-128h-80v-16h80v-80h16v80h128v-80h16v80h80v16h-80v128h80z" /> - <glyph glyph-name="ion-ios-heart-outline" unicode="" -d="M327 368c69 0 121 -43 121 -116c0 -31 -13 -71 -41 -105s-45 -52 -100 -88s-83 -43 -83 -43s-28 7 -83 43s-72 54 -100 88s-41 74 -41 105c0 73 52 116 121 116c39 0 82 -18 103 -53c21 35 64 53 103 53zM395 157c12 14 22 31 28 49c6 16 9 31 9 46c0 30 -10 56 -29 74 -c-9 8 -20 15 -33 19c-13 5 -28 7 -43 7c-38 0 -73 -18 -89 -45l-14 -23l-14 23c-16 27 -51 45 -89 45c-15 0 -30 -2 -43 -7c-13 -4 -24 -11 -33 -19c-19 -18 -29 -44 -29 -74c0 -15 3 -30 9 -46c6 -18 16 -35 28 -49c27 -32 42 -49 97 -85c40 -27 65 -36 74 -39 -c9 3 34 12 74 39c55 36 70 53 97 85z" /> - <glyph glyph-name="ion-ios-heart" unicode="" -d="M327 368c69 0 121 -43 121 -116c0 -31 -13 -71 -41 -105s-45 -52 -100 -88s-83 -43 -83 -43s-28 7 -83 43s-72 54 -100 88s-41 74 -41 105c0 73 52 116 121 116c39 0 82 -18 103 -53c21 35 64 53 103 53z" /> - <glyph glyph-name="ion-ios-help-empty" unicode="" horiz-adv-x="128" -d="M68 82c-9 0 -17 8 -17 17s8 17 17 17s17 -8 17 -17s-8 -17 -17 -17zM102 197c-23 -22 -22 -27 -23 -53h-19c1 28 7 43 30 64c11 10 19 24 19 39c0 24 -19 39 -42 39c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62c33 0 60 -20 60 -54c0 -22 -11 -37 -26 -51z" /> - <glyph glyph-name="ion-ios-help-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM212 302c33 0 60 -21 60 -55c0 -22 -11 -36 -26 -50c-23 -23 -22 -27 -23 -53h-19 -c1 28 7 43 30 64c11 10 19 23 19 38c0 24 -19 40 -42 40c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62zM212 116c9 0 17 -8 17 -17s-8 -17 -17 -17s-17 8 -17 17s8 17 17 17z" /> - <glyph glyph-name="ion-ios-help" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM212 82c9 0 17 8 17 17s-8 17 -17 17s-17 -8 -17 -17s8 -17 17 -17zM246 197c15 14 26 29 26 51c0 34 -27 54 -60 54c-43 0 -68 -20 -68 -62h19c-1 30 16 46 48 46 -c23 0 42 -15 42 -39c0 -15 -8 -29 -19 -39c-23 -21 -29 -36 -30 -64h19c1 26 0 31 23 53z" /> - <glyph glyph-name="ion-ios-home-outline" unicode="" horiz-adv-x="384" -d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM336 16v184l-144 116l-144 -116v-184h80v128h128v-128h80zM192 384l192 -153l-12 -12l-180 145l-180 -145l-12 12l32 25v96h64v-45zM80 294v42h-32v-67z" /> - <glyph glyph-name="ion-ios-home" unicode="" horiz-adv-x="384" -d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM192 384l192 -153l-12 -12l-180 145l-180 -145l-12 12l32 25v96h64v-45z" /> - <glyph glyph-name="ion-ios-infinite-outline" unicode="" -d="M419 260c19 -19 29 -43 29 -68s-10 -49 -29 -68c-19 -18 -44 -28 -70 -28s-50 10 -69 28l-126 123c-15 15 -35 22 -56 22s-40 -7 -55 -22c-31 -30 -31 -80 0 -110c15 -15 34 -22 55 -22s41 7 56 22l43 42l13 -14l-42 -41c-19 -18 -44 -28 -70 -28s-50 10 -69 28 -c-19 19 -29 43 -29 68s10 49 29 68c19 18 43 28 69 28s51 -10 70 -28l126 -123c15 -15 34 -22 55 -22s41 7 56 22c31 30 31 80 0 110c-15 15 -35 22 -56 22s-40 -7 -55 -22l-43 -42l-13 14l42 41c19 18 44 28 70 28s50 -10 69 -28z" /> - <glyph glyph-name="ion-ios-infinite" unicode="" horiz-adv-x="464" -d="M433 266c20 -20 31 -46 31 -74s-11 -54 -31 -74s-48 -30 -76 -30s-55 10 -75 30l-125 123c-13 13 -32 20 -51 20s-37 -7 -50 -20s-21 -31 -21 -49c0 -19 8 -36 21 -49s31 -20 50 -20s38 7 51 20l39 38l25 -25l-39 -38c-20 -20 -48 -30 -76 -30s-55 10 -75 30 -s-31 46 -31 74s11 54 31 74s47 30 75 30s56 -10 76 -30l125 -123c13 -13 31 -20 50 -20s38 7 51 20s20 31 20 49c0 19 -7 36 -20 49s-32 20 -51 20s-37 -7 -50 -20l-39 -38l-25 25l39 38c20 20 48 30 76 30s55 -10 75 -30z" /> - <glyph glyph-name="ion-ios-information-empty" unicode="" horiz-adv-x="64" -d="M8 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM48 104h16v-8h-64v8h16v120h-16v8h48v-128z" /> - <glyph glyph-name="ion-ios-information-outline" unicode="" horiz-adv-x="416" -d="M184 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM224 104h16v-8h-64v8h16v120h-16v8h48v-128zM208 400c57 0 106 -20 147 -61s61 -90 61 -147s-20 -106 -61 -147s-90 -61 -147 -61s-106 20 -147 61s-61 90 -61 147s20 106 61 147s90 61 147 61z -M208 1c53 0 98 19 135 56s56 82 56 135s-19 98 -56 135s-82 56 -135 56s-98 -19 -135 -56s-56 -82 -56 -135s19 -98 56 -135s82 -56 135 -56z" /> - <glyph glyph-name="ion-ios-information" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM204 296c-11 0 -20 -9 -20 -20s9 -20 20 -20s20 9 20 20s-9 20 -20 20zM240 96v8h-16v128h-48v-8h16v-120h-16v-8h64z" /> - <glyph glyph-name="ion-ios-ionic-outline" unicode="" horiz-adv-x="416" -d="M378 313c24 -34 38 -76 38 -121c0 -115 -92 -208 -207 -208s-209 93 -209 208s94 208 209 208c45 0 86 -14 120 -38c6 5 13 8 21 8c19 0 35 -16 35 -35c0 -8 -2 -16 -7 -22zM350 357c-12 0 -22 -10 -22 -22s10 -22 22 -22s22 10 22 22s-10 22 -22 22zM344 56 -c18 18 31 39 41 62c10 24 15 48 15 74s-5 51 -15 75c-5 13 -12 25 -20 36c-5 -2 -10 -3 -15 -3c-19 0 -35 16 -35 35c0 5 2 11 4 15c-11 8 -23 15 -36 20c-24 10 -49 14 -75 14s-51 -4 -75 -14c-23 -10 -43 -24 -61 -42s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75 -s5 -50 15 -74c10 -23 23 -44 41 -62s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15c23 10 43 23 61 41zM208 288c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM208 112c44 0 80 36 80 80s-36 80 -80 80s-79 -36 -79 -80s35 -80 79 -80z" /> - <glyph glyph-name="ion-ios-keypad-outline" unicode="" horiz-adv-x="384" -d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM331 16c21 0 37 16 37 37s-16 38 -37 38s-38 -17 -38 -38s17 -37 38 -37zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM192 16c21 0 37 16 37 37s-16 38 -37 38 -s-37 -17 -37 -38s16 -37 37 -37zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM53 16c21 0 38 16 38 37s-17 38 -38 38s-37 -17 -37 -38s16 -37 37 -37zM331 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM331 155 -c21 0 37 16 37 37s-16 37 -37 37s-38 -16 -38 -37s17 -37 38 -37zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM192 155c21 0 37 16 37 37s-16 37 -37 37s-37 -16 -37 -37s16 -37 37 -37zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53 -s-53 23 -53 53s23 53 53 53zM53 155c21 0 38 16 38 37s-17 37 -38 37s-37 -16 -37 -37s16 -37 37 -37zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54zM331 368c-21 0 -38 -16 -38 -37s17 -38 38 -38s37 17 37 38s-16 37 -37 37zM192 384 -c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM192 293c21 0 37 17 37 38s-16 37 -37 37s-37 -16 -37 -37s16 -38 37 -38zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53zM53 293c21 0 38 17 38 38s-17 37 -38 37 -s-37 -16 -37 -37s16 -38 37 -38z" /> - <glyph glyph-name="ion-ios-keypad" unicode="" horiz-adv-x="384" -d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM331 245c30 0 53 -23 53 -53 -s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53s-53 23 -53 53s23 53 53 53zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54z -M192 384c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53z" /> - <glyph glyph-name="ion-ios-lightbulb-outline" unicode="" horiz-adv-x="288" -d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-128v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141zM239 194l6 8c16 22 27 47 27 73c0 33 -16 65 -40 89s-55 36 -88 36 -s-64 -12 -88 -36s-40 -56 -40 -89c0 -26 11 -51 27 -73l19 -26v0c5 -6 9 -13 13 -21c17 -29 21 -58 21 -75h16v112l-32 64h17l31 -64v-112h32v112l31 64h17l-32 -64v-112h16c0 17 4 45 21 75c8 14 16 25 24 36c1 1 1 2 2 3zM112 -32v16h64v-16h-64zM96 0v16h96v-16h-96z -M96 32v16h96v-16h-96z" /> - <glyph glyph-name="ion-ios-lightbulb" unicode="" horiz-adv-x="288" -d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-32v128l32 64h-16l-32 -64v-128h-32v128l-31 64h-17l32 -64v-128h-32v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141z -M112 -32v16h64v-16h-64zM96 0v16h96v-16h-96zM96 32v16h96v-16h-96z" /> - <glyph glyph-name="ion-ios-list-outline" unicode="" horiz-adv-x="384" -d="M368 368h-352v-352h352v352zM384 384v0v-384h-384v384h384zM128 280v16h192v-16h-192zM128 184v16h192v-16h-192zM128 88v16h192v-16h-192zM64 288c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM64 192c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16 -s-16 5 -16 16zM64 96c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z" /> - <glyph glyph-name="ion-ios-list" unicode="" horiz-adv-x="384" -d="M0 384h384v-384h-384v384zM80 80c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM80 176c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM80 272c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM320 88v16h-192v-16h192zM320 184v16 -h-192v-16h192zM320 280v16h-192v-16h192z" /> - <glyph glyph-name="ion-ios-location-outline" unicode="" horiz-adv-x="288" -d="M144 400c-34 0 -67 -13 -91 -37s-37 -57 -37 -91c0 -43 24 -107 70 -186c22 -38 44 -72 58 -91c14 19 36 53 58 91c46 79 70 143 70 186c0 34 -13 67 -37 91s-57 37 -91 37zM144 416v0c80 0 144 -64 144 -144c0 -112 -144 -304 -144 -304s-144 192 -144 304 -c0 80 64 144 144 144zM144 336c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM144 225c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" /> - <glyph glyph-name="ion-ios-location" unicode="" horiz-adv-x="288" -d="M144 416c80 0 144 -64 144 -144c0 -112 -144 -304 -144 -304s-144 192 -144 304c0 80 64 144 144 144zM144 225c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" /> - <glyph glyph-name="ion-ios-locked-outline" unicode="" horiz-adv-x="320" -d="M264 224h56v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-72zM72 296v-72h176v72c0 49 -39 88 -88 88s-88 -39 -88 -88zM304 0v208h-288v-208h288zM160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-33h-16v33c-14 4 -24 16 -24 31c0 18 14 32 32 32z -M160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> - <glyph glyph-name="ion-ios-locked" unicode="" horiz-adv-x="320" -d="M264 224h56v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32c0 -15 10 -27 24 -31v-33h16v33zM248 224v72c0 49 -39 88 -88 88s-88 -39 -88 -88v-72h176zM160 144c9 0 16 -7 16 -16 -s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16z" /> - <glyph glyph-name="ion-ios-loop-strong" unicode="" horiz-adv-x="512" -d="M256 400c115 0 208 -93 208 -208c0 -14 -1 -28 -4 -42l-1 -4l-24 5l1 4c2 12 4 24 4 37c0 101 -83 184 -184 184c-66 0 -127 -36 -160 -94l-2 -3l-21 11l2 4c37 65 106 106 181 106zM416 102l2 3l21 -11l-2 -4c-37 -65 -106 -106 -181 -106c-115 0 -208 93 -208 208 -c0 14 1 28 4 42l1 4l24 -5l-1 -4c-2 -12 -4 -24 -4 -37c0 -101 83 -184 184 -184c66 0 127 36 160 94zM384 192h128l-64 -64zM0 192l64 64l64 -64h-128z" /> - <glyph glyph-name="ion-ios-loop" unicode="" horiz-adv-x="489" -d="M478 192l11 -11l-52 -53l-53 53l10 11l43 -41zM449 192v0v0c0 -7 0 -14 -1 -21l-16 1c1 7 1 14 1 21c-1 103 -85 187 -188 187c-68 0 -131 -37 -164 -96l-14 8c36 64 104 104 178 104c112 0 203 -91 204 -202v0v-2zM409 100l14 -8c-36 -64 -104 -104 -178 -104 -c-111 0 -202 90 -204 200v0v3v1v0c0 7 0 14 1 21l16 -1c-1 -7 -1 -14 -1 -21c0 -103 85 -187 188 -187c68 0 131 37 164 96zM53 256l52 -53l-11 -11l-41 41l-42 -41l-11 11z" /> - <glyph glyph-name="ion-ios-medical-outline" unicode="" horiz-adv-x="364" -d="M364 260l-118 -68l118 -68l-32 -56l-118 69v-137h-64v137l-118 -69l-32 56l118 68l-118 68l32 56l118 -69v137h64v-137l118 69zM342 118l-128 74l128 74l-16 28l-128 -74v148h-32v-148l-128 74l-16 -28l128 -74l-128 -74l16 -28l128 74v-148h32v148l128 -74z" /> - <glyph glyph-name="ion-ios-medical" unicode="" horiz-adv-x="364" -d="M364 260l-118 -68l118 -68l-32 -56l-118 69v-137h-64v137l-118 -69l-32 56l118 68l-118 68l32 56l118 -69v137h64v-137l118 69z" /> - <glyph glyph-name="ion-ios-medkit-outline" unicode="" horiz-adv-x="416" -d="M224 240h-32v-48v-16h-16h-48v-32h48h16v-16v-48h32v48v16h16h48v32h-48h-16v16v48zM240 256v0v-64h64v-64h-64v-64h-64v64h-64v64h64v64h64zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97 -c-11 0 -14 -8 -14 -18zM400 16v288h-384v-288h384z" /> - <glyph glyph-name="ion-ios-medkit" unicode="" horiz-adv-x="416" -d="M224 176h16h48v-32h-48h-16v-16v-48h-32v48v16h-16h-48v32h48h16v16v48h32v-48v-16zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18zM304 128v64h-64v64h-64v-64h-64 -v-64h64v-64h64v64h64z" /> - <glyph glyph-name="ion-ios-mic-off" unicode="" horiz-adv-x="280" -d="M266 -32l-258 440l14 8l258 -440zM128 95c-44 0 -79 37 -79 83v118l113 -193c-10 -5 -22 -8 -34 -8zM207 178c0 -10 -2 -19 -5 -28l-136 234c14 20 37 32 62 32c44 0 79 -38 79 -84v-154zM256 176c0 -28 -9 -54 -24 -75l-10 17c11 17 17 36 17 58v80h17v-80zM139 49v0 -v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109c17 0 34 4 48 11l9 -16c-14 -7 -30 -12 -47 -13z" /> - <glyph glyph-name="ion-ios-mic-outline" unicode="" horiz-adv-x="256" -d="M128 416c44 0 79 -38 79 -84v-154c0 -46 -35 -84 -79 -84s-79 38 -79 84v154c0 46 35 84 79 84zM191 178v154c0 37 -28 68 -63 68s-63 -31 -63 -68v-154c0 -37 28 -68 63 -68s63 31 63 68zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63 -c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" /> - <glyph glyph-name="ion-ios-mic" unicode="" horiz-adv-x="256" -d="M128 94c-44 0 -79 38 -79 84v154c0 46 35 84 79 84s79 -38 79 -84v-154c0 -46 -35 -84 -79 -84zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" /> - <glyph glyph-name="ion-ios-minus-empty" unicode="" horiz-adv-x="256" -d="M256 183h-256v17h256v-17z" /> - <glyph glyph-name="ion-ios-minus-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM80 183v17h256v-17h-256z" /> - <glyph glyph-name="ion-ios-minus" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-256v-17h256z" /> - <glyph glyph-name="ion-ios-monitor-outline" unicode="" horiz-adv-x="480" -d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448z" /> - <glyph glyph-name="ion-ios-monitor" unicode="" horiz-adv-x="480" -d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448zM32 96v224h416v-224h-416z" /> - <glyph glyph-name="ion-ios-moon-outline" unicode="" horiz-adv-x="216" -d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5zM116 93c25 0 48 9 65 24c-65 5 -116 59 -116 125 -c0 14 2 28 6 40c-33 -16 -55 -51 -55 -90c0 -55 45 -99 100 -99z" /> - <glyph glyph-name="ion-ios-moon" unicode="" horiz-adv-x="216" -d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5z" /> - <glyph glyph-name="ion-ios-more-outline" unicode="" horiz-adv-x="320" -d="M160 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32 -s-32 14 -32 32s14 32 32 32zM288 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" /> - <glyph glyph-name="ion-ios-more" unicode="" horiz-adv-x="320" -d="M160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" /> - <glyph glyph-name="ion-ios-musical-note" unicode="" horiz-adv-x="192" -d="M192 346v-1v-65c0 -3 -3 -6 -6 -5v0l-73 13v-192c0 -33 1 -80 -51 -82c-48 -2 -62 16 -62 41c0 19 9 39 51 41c22 1 37 1 45 1v273l90 -19l2 -1c2 0 3 -1 4 -3v0v-1v0z" /> - <glyph glyph-name="ion-ios-musical-notes" unicode="" horiz-adv-x="320" -d="M320 128c0 -34 4 -80 -49 -82c-49 -2 -62 16 -62 41c0 20 9 39 52 41c23 1 34 2 43 2v160l-191 -32v-161c0 -34 3 -81 -50 -83c-49 -2 -63 17 -63 42c0 20 9 39 52 41c23 1 35 1 44 1v237l224 35v-242z" /> - <glyph glyph-name="ion-ios-navigate-outline" unicode="" horiz-adv-x="416" -d="M208 384c-51 0 -99 -21 -135 -57s-57 -84 -57 -135s21 -99 57 -135s84 -57 135 -57s99 21 135 57s57 84 57 135s-21 99 -57 135s-84 57 -135 57zM208 400v0c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM304 288l-96 -224v128h-128z" /> - <glyph glyph-name="ion-ios-navigate" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64l96 224l-224 -96h128v-128z" /> - <glyph glyph-name="ion-ios-nutrition-outline" unicode="" horiz-adv-x="384" -d="M294 214v0c6 -6 10 -14 10 -23c0 -11 -5 -20 -13 -26v0s-51 -37 -106 -77l-38 31c-2 2 -4 3 -6 3c-1 0 -2 0 -3 -1v0c-2 -2 -2 -6 1 -10l29 -35l-115 -84c-6 -4 -13 -8 -21 -8c-18 0 -32 14 -32 32c0 7 1 13 4 18v0c2 2 17 25 37 57l21 -17c2 -2 4 -2 6 -2c1 0 3 0 4 1v0 -c2 2 1 6 -2 10l-19 23c27 43 60 96 84 134l36 -30c2 -2 4 -3 6 -3c1 0 2 1 3 2v0c2 2 2 5 -1 9l-33 40c11 18 19 29 19 29v0c6 10 15 16 27 16c9 0 18 -4 24 -10v0l78 -79v0v0zM282 178c4 3 6 8 6 13c0 4 -2 9 -5 12l-5 4v1l-69 69v0l-5 5c-3 3 -8 5 -12 5 -c-6 0 -10 -3 -13 -8l-5 -8c-2 -3 -5 -7 -8 -12l25 -30v0l1 -1c8 -10 8 -22 0 -30l-1 -1l-1 -1c-4 -3 -8 -5 -13 -5s-11 2 -16 6v1h-1l-21 18l-24 -39l-44 -70l12 -14v0v0c8 -10 8 -23 0 -31v0c-4 -4 -9 -6 -15 -6c-5 0 -11 2 -16 6v0v0l-7 5c-3 -5 -5 -9 -8 -13 -c-12 -19 -16 -26 -18 -29c-1 -3 -2 -6 -2 -9c0 -9 7 -16 16 -16c3 0 6 2 11 5l101 74l-18 22h-1v0c-8 10 -8 23 0 31v0v0v0c4 4 10 6 15 6s11 -2 16 -6v0h1l28 -24c49 36 93 68 96 70zM376 333l8 -14l-5 -3l-103 -60l-17 17l71 123l2 4l14 -8l-3 -4l-63 -111l91 53z" /> - <glyph glyph-name="ion-ios-nutrition" unicode="" horiz-adv-x="384" -d="M295 214v0c6 -6 9 -13 9 -22c0 -11 -5 -20 -13 -26v0s-51 -38 -106 -78l-38 32c-4 3 -8 3 -10 1v0c-2 -2 -2 -6 1 -10l29 -35l-114 -84c-6 -4 -13 -8 -21 -8c-18 0 -32 14 -32 32c0 7 2 13 5 18v0c1 2 16 25 36 57l20 -17c4 -3 8 -3 10 -1v0c2 2 2 6 -1 10l-20 23 -c27 43 60 96 84 134l36 -30c4 -3 8 -3 10 -1v0c2 2 2 6 -1 10l-33 40c11 18 18 29 18 29v0c6 10 16 16 28 16c9 0 18 -4 24 -10v0l78 -79l1 -1v0zM384 309l-103 -59l-28 29l70 121l28 -16l-50 -85l67 38z" /> - <glyph glyph-name="ion-ios-paper-outline" unicode="" horiz-adv-x="384" -d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-16h-16v-289c0 -8 7 -15 15 -15h322c8 0 15 7 15 15v337h-304v-320h-16v320v16zM96 320v16h128v-16h-128zM96 240v16h240v-16h-240zM96 160v16h192v-16h-192zM96 80v16h240v-16h-240z" /> - <glyph glyph-name="ion-ios-paper" unicode="" horiz-adv-x="384" -d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-288h16v288v32v16zM96 336v-16h128v16h-128zM96 176v-16h192v16h-192zM336 80v16h-240v-16h240zM336 240v16h-240v-16h240z" /> - <glyph glyph-name="ion-ios-paperplane-outline" unicode="" horiz-adv-x="320" -d="M0 198l320 154l-146 -320l-57 115zM132 152l41 -83l115 249zM286 320l-248 -121l83 -36z" /> - <glyph glyph-name="ion-ios-paperplane" unicode="" horiz-adv-x="320" -d="M0 198l320 154l-214 -200zM320 352l-146 -320l-52 104z" /> - <glyph glyph-name="ion-ios-partlysunny-outline" unicode="" horiz-adv-x="384" -d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM129 153c-4 -3 -8 -7 -12 -12c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 40 -10 53 -25c-4 -2 -9 -4 -14 -8 -c-10 11 -23 17 -39 17c-30 0 -55 -25 -55 -55c0 -23 15 -43 35 -51zM235 208c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14 -c-3 14 -11 26 -22 35s-25 14 -39 14zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" /> - <glyph glyph-name="ion-ios-partlysunny" unicode="" horiz-adv-x="384" -d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8 -c0 43 35 78 78 78zM201 252l1 -2v0c-31 -5 -62 -43 -62 -75c0 -2 1 -5 1 -7l-1 -1h-1c-11 -6 -18 -14 -22 -26v1v-1c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 39 -9 52 -23z" /> - <glyph glyph-name="ion-ios-pause-outline" unicode="" horiz-adv-x="256" -d="M63 336h-47v-288h47v288zM79 352v0v-320h-79v320h79zM240 336h-47v-288h47v288zM256 352v0v-320h-79v320h79z" /> - <glyph glyph-name="ion-ios-pause" unicode="" horiz-adv-x="256" -d="M0 32v320h79v-320h-79zM177 32v320h79v-320h-79z" /> - <glyph glyph-name="ion-ios-paw-outline" unicode="" horiz-adv-x="384" -d="M380 252c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM362 202c6 15 7 31 2 44c-2 5 -5 12 -12 15c-2 1 -4 2 -7 2c-13 0 -28 -15 -36 -36c-9 -25 -6 -50 8 -56 -c2 -1 5 -1 8 -1c14 0 29 13 37 32zM90 234c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43c-8 19 -9 40 -3 57c4 12 11 21 21 25c4 2 9 3 14 3c20 0 41 -18 51 -46zM67 171c14 6 17 31 8 56c-8 21 -23 36 -36 36c-3 0 -5 -1 -7 -2c-7 -3 -10 -10 -12 -15 -c-5 -13 -4 -29 2 -44c8 -19 23 -32 37 -32c3 0 6 0 8 1zM134 237c-28 1 -52 32 -56 69c-2 23 4 45 16 60c8 10 19 17 31 18h6c27 -1 46 -29 50 -67c3 -24 -1 -48 -13 -63c-8 -9 -17 -15 -28 -16c-2 0 -4 -1 -6 -1zM107 356c-10 -12 -14 -29 -12 -48c3 -29 21 -53 40 -54h3 -c6 1 12 4 17 10c10 12 12 31 10 51c-3 29 -17 52 -35 53h-3c-9 -1 -16 -7 -20 -12zM192 208c64 0 128 -76 128 -149c0 -22 -11 -40 -22 -47c-13 -9 -23 -12 -42 -12c-23 0 -29 8 -40 15c-8 5 -14 10 -24 10s-16 -5 -24 -10c-11 -7 -17 -15 -40 -15c-19 0 -29 3 -42 12 -c-11 7 -22 25 -22 47c0 73 64 149 128 149zM290 27c6 4 14 16 14 32c0 30 -14 64 -36 91c-11 13 -23 24 -36 31c-13 8 -27 11 -40 11s-27 -3 -40 -11c-13 -7 -25 -18 -36 -31c-22 -27 -36 -61 -36 -91c0 -16 8 -28 14 -32c11 -7 18 -10 34 -10c14 0 19 4 26 9c2 1 4 3 6 4 -c9 6 18 12 32 12s23 -6 32 -12c2 -1 4 -3 6 -4c7 -5 12 -9 26 -9c16 0 23 3 34 10zM244 238c-11 1 -20 7 -28 16c-12 15 -16 39 -13 63c4 38 23 66 50 67h7c12 -1 22 -8 30 -18c12 -15 18 -37 16 -60c-4 -37 -28 -67 -56 -68h-6zM219 315c-2 -20 0 -39 10 -51 -c5 -6 11 -9 17 -10h3c19 1 38 25 41 54c2 19 -3 36 -13 48c-4 5 -10 11 -19 12h-4c-18 -1 -32 -24 -35 -53z" /> - <glyph glyph-name="ion-ios-paw" unicode="" horiz-adv-x="384" -d="M380 252c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM90 234c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43c-8 19 -9 40 -3 57c4 12 11 21 21 25 -c4 2 9 3 14 3c20 0 41 -18 51 -46zM134 237c-28 1 -52 32 -56 69c-2 23 4 45 16 60c8 10 19 17 31 18h6c27 -1 46 -29 50 -67c3 -24 -1 -48 -13 -63c-8 -9 -17 -15 -28 -16c-2 0 -4 -1 -6 -1zM192 208c64 0 128 -76 128 -149c0 -22 -11 -40 -22 -47c-13 -9 -23 -12 -42 -12 -c-23 0 -29 8 -40 15c-8 5 -14 10 -24 10s-16 -5 -24 -10c-11 -7 -17 -15 -40 -15c-19 0 -29 3 -42 12c-11 7 -22 25 -22 47c0 73 64 149 128 149zM244 238c-11 1 -20 7 -28 16c-12 15 -16 39 -13 63c4 38 23 66 50 67h7c12 -1 22 -8 30 -18c12 -15 18 -37 16 -60 -c-4 -37 -28 -67 -56 -68h-6z" /> - <glyph glyph-name="ion-ios-people-outline" unicode="" -d="M224 336v0v0zM317 113c11 -4 -11 4 0 0c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39 -c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM115 84c-6 -6 9 10 0 0c-6 -6 -10 -12 -12 -20h4 -h238c-4 15 -17 27 -30 33s-28 4 -41 9s-25 9 -28 25c-2 11 -2 22 -2 33c0 2 7 7 8 9c3 5 4 11 5 17c1 5 0 12 4 15c5 4 7 7 9 13c2 8 3 12 -1 19c-3 5 0 8 1 13c3 11 4 24 2 36c-8 37 -62 45 -86 19c-12 -13 -12 -31 -9 -47c1 -6 6 -14 3 -19c-1 -3 -5 -6 -4 -10 -c2 -5 2 -11 4 -16c2 -4 4 -6 7 -8s3 -6 3 -9c1 -7 2 -17 6 -23c3 -4 8 -6 8 -11v-21c-1 -8 -2 -18 -8 -24c-7 -6 -18 -10 -27 -12c-11 -3 -23 -3 -33 -7c-8 -3 -15 -8 -21 -14zM112 126c-15 -7 9 4 0 0c-9 -5 -18 -11 -25 -19c-1 -2 -6 -11 -7 -11h-25h-55c0 20 13 34 31 40 -c6 2 27 4 30 11c2 5 0 11 0 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12l3 12c1 9 1 19 1 28c0 16 -1 34 8 48c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7 -c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-8 -1 -15 -1 -22 -5zM71 112c6 10 16 18 26 24c-9 9 -5 26 -4 37c0 2 0 5 2 5h8c6 0 11 1 17 2c-7 23 0 47 -5 70c-3 16 -15 23 -31 23c-17 0 -27 -9 -30 -25c-4 -22 3 -46 -4 -68c9 -1 17 -2 26 -2c1 0 1 -28 1 -29 -c-1 -12 -8 -18 -19 -22c-12 -4 -29 -3 -36 -15h49zM368 96c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44 -c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10c18 -6 31 -20 31 -40h-80zM367 123c4 -4 -5 5 0 0s8 -11 15 -11h16h28c-7 12 -26 11 -38 16c-11 4 -16 12 -17 24c0 2 -1 27 1 27c9 0 18 0 26 1 -c-7 23 1 47 -4 70c-3 15 -15 23 -30 23c-17 0 -28 -8 -31 -25c-4 -23 2 -46 -5 -68c6 -2 12 -2 18 -2s8 1 9 -5c1 -11 5 -28 -4 -37c6 -4 11 -8 16 -13z" /> - <glyph glyph-name="ion-ios-people" unicode="" -d="M317 113c11 -4 -11 4 0 0v0zM317 113c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39 -c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM111 126h2h-1h-1zM111 126c-9 -5 -17 -11 -24 -19 -c-1 -2 -6 -11 -7 -11h-25h-55c0 20 12 34 30 40c6 2 27 4 30 11c2 5 1 11 1 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12c1 4 2 7 3 11c1 9 1 19 1 28c0 16 -1 35 8 49c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3 -c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-7 -1 -14 -2 -21 -5c2 1 2 2 -1 0c-8 -4 -4 -2 -1 0zM417 136c18 -6 31 -20 31 -40h-80c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6 -s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10z" /> - <glyph glyph-name="ion-ios-person-outline" unicode="" horiz-adv-x="320" -d="M106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10 -c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4 -c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8 -s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" /> - <glyph glyph-name="ion-ios-person" unicode="" horiz-adv-x="320" -d="M267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10 -c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" /> - <glyph glyph-name="ion-ios-personadd-outline" unicode="" horiz-adv-x="320" -d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68 -s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3 -c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38 -v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" /> - <glyph glyph-name="ion-ios-personadd" unicode="" horiz-adv-x="320" -d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68 -s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" /> - <glyph glyph-name="ion-ios-photos-outline" unicode="" -d="M64 320h384v-320h-384v320zM432 16v288h-352v-288h352zM0 384h384v-48h-16v32h-352v-288h32v-16h-48v320z" /> - <glyph glyph-name="ion-ios-photos" unicode="" -d="M64 320h384v-320h-384v320zM384 384v-48h-336v-272h-48v320h384z" /> - <glyph glyph-name="ion-ios-pie-outline" unicode="" -d="M256 367v0v-207v-12l-12 -4l-180 -45c6 -13 13 -25 21 -36c12 -16 25 -30 41 -42c33 -24 73 -37 114 -37c26 0 51 5 75 15c23 10 43 23 61 41s31 38 41 61c10 24 15 49 15 75c0 51 -20 100 -56 136c-32 32 -75 51 -120 55zM240 384v0c115 0 208 -93 208 -208 -s-93 -208 -208 -208c-92 0 -171 60 -198 143l198 49v224zM208 400c-31 -1 -60 -7 -85 -18c-24 -11 -44 -26 -61 -46c-29 -34 -46 -80 -46 -127v0v0c0 -13 3 -46 12 -70l180 46v215zM224 416v0v-244l-205 -52c-19 32 -19 89 -19 89c0 91 58 207 218 207h6z" /> - <glyph glyph-name="ion-ios-pie" unicode="" -d="M240 384v0c115 0 208 -93 208 -208s-93 -208 -208 -208c-92 0 -171 60 -198 143l198 49v224zM224 416v0v-244l-205 -52c-19 32 -19 89 -19 89c0 91 58 207 218 207h6z" /> - <glyph glyph-name="ion-ios-pint-outline" unicode="" horiz-adv-x="224" -d="M224 278c0 -98 -32 -101 -32 -181c0 -40 16 -71 16 -99c0 -27 -9 -30 -32 -30h-128c-23 0 -32 2 -32 29c0 28 16 60 16 100c0 80 -32 83 -32 181c0 21 1 89 19 125c4 9 13 13 32 13h122c19 0 28 -4 32 -13c18 -36 19 -104 19 -125zM34 396c-8 -16 -14 -43 -17 -76h190 -c-3 33 -9 60 -17 76c-1 2 -1 1 -2 2c-2 1 -6 2 -15 2h-122c-9 0 -13 -1 -15 -2c-1 -1 -1 0 -2 -2zM191 -15c0 1 1 5 1 13c0 11 -4 23 -7 37c-4 18 -9 39 -9 62c0 41 8 64 16 86c8 23 16 46 16 95c0 9 -1 18 -1 26h-190c0 -8 -1 -17 -1 -26c0 -49 8 -72 16 -95 -c8 -22 16 -45 16 -86c0 -23 -5 -44 -9 -62c-3 -14 -7 -26 -7 -37c0 -8 1 -12 1 -13c2 -1 7 -1 15 -1h128c8 0 13 0 15 1z" /> - <glyph glyph-name="ion-ios-pint" unicode="" horiz-adv-x="224" -d="M224 278c0 -98 -32 -101 -32 -181c0 -40 16 -71 16 -99c0 -27 -9 -30 -32 -30h-128c-23 0 -32 2 -32 29c0 28 16 60 16 100c0 80 -32 83 -32 181c0 21 1 89 19 125c4 9 13 13 32 13h122c19 0 28 -4 32 -13c18 -36 19 -104 19 -125zM34 396c-8 -16 -14 -43 -17 -76h190 -c-3 33 -9 60 -17 76c-1 2 -1 1 -2 2c-2 1 -6 2 -15 2h-122c-9 0 -13 -1 -15 -2c-1 -1 -1 0 -2 -2z" /> - <glyph glyph-name="ion-ios-play-outline" unicode="" horiz-adv-x="256" -d="M16 323v-262l210 131zM0 352v0l256 -160l-256 -160v320z" /> - <glyph glyph-name="ion-ios-play" unicode="" horiz-adv-x="256" -d="M0 352v0l256 -160l-256 -160v320z" /> - <glyph glyph-name="ion-ios-plus-empty" unicode="" horiz-adv-x="256" -d="M256 183h-120v-119h-17v119h-119v17h119v120h17v-120h120v-17z" /> - <glyph glyph-name="ion-ios-plus-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM216 320v-120h120v-17h-120v-119h-17v119h-119v17h119v120h17z" /> - <glyph glyph-name="ion-ios-plus" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-120v120h-17v-120h-119v-17h119v-119h17v119h120z" /> - <glyph glyph-name="ion-ios-pricetag-outline" unicode="" horiz-adv-x="416" -d="M416 416v-160l-256 -288l-160 160l256 288h160zM400 264v136h-136l-240 -272l136 -136zM320 288c-18 0 -32 14 -32 32s14 32 32 32s32 -14 32 -32s-14 -32 -32 -32zM320 336c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" /> - <glyph glyph-name="ion-ios-pricetag" unicode="" horiz-adv-x="416" -d="M304 320c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM256 416h160v-160l-256 -288l-160 160zM320 288c9 0 16 4 22 10s10 13 10 22s-4 16 -10 22s-13 10 -22 10s-16 -4 -22 -10s-10 -13 -10 -22s4 -16 10 -22s13 -10 22 -10z" /> - <glyph glyph-name="ion-ios-pricetags-outline" unicode="" -d="M416 384h32v-144l-240 -272l-25 24l-23 -24l-160 160l256 288h160v-32zM160 -9l12 12l11 12l217 248v105v16v16h-137l-241 -272zM432 247v121h-16v-112l-221 -253l13 -12zM320 288c-18 0 -32 14 -32 32s14 32 32 32s32 -14 32 -32s-14 -32 -32 -32zM320 336 -c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" /> - <glyph glyph-name="ion-ios-pricetags" unicode="" -d="M432 384h16v-144l-240 -272l-13 13l237 266v137zM256 416h160v-32v-16v-112l-221 -253l-12 -11l-23 -24l-160 160zM320 288c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 320c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z" /> - <glyph glyph-name="ion-ios-printer-outline" unicode="" horiz-adv-x="416" -d="M384 336c18 0 32 -13 32 -31v-159c0 -18 -14 -32 -32 -32h-48v-114h-256v114h-48c-18 0 -32 14 -32 32v159c0 18 14 31 32 31h32v48h288v-48h32zM80 368v-32h256v32h-256zM320 16v192h-224v-192h224zM400 146v159c0 9 -7 15 -16 15v0h-352c-9 0 -16 -6 -16 -15v-159 -c0 -9 7 -16 16 -16h48v94h256v-94h48c9 0 16 7 16 16z" /> - <glyph glyph-name="ion-ios-printer" unicode="" horiz-adv-x="416" -d="M80 0v224h256v-224h-256zM80 -0v224h256v-224h-256zM64 352v32h288v-32h-288zM385 336c18 0 31 -14 31 -31v-158c0 -17 -13 -34 -31 -34h-33v126h-288v-126h-31c-18 0 -33 17 -33 34v158c0 17 15 31 33 31h352z" /> - <glyph glyph-name="ion-ios-pulse-strong" unicode="" horiz-adv-x="480" -d="M432 175c27 0 48 -20 48 -47s-21 -49 -48 -49c-21 0 -38 13 -45 31h-51c-7 0 -13 4 -15 11l-16 47l-50 -173c-2 -7 -8 -11 -15 -11h-1c-7 0 -14 5 -15 12l-51 308l-45 -182c-2 -7 -9 -12 -16 -12h-112v32h99l61 245c2 7 8 13 16 13s15 -7 16 -14l52 -314l45 155 -c2 7 8 11 15 11v0c7 0 13 -4 15 -11l29 -85h38c6 19 25 33 46 33z" /> - <glyph glyph-name="ion-ios-pulse" unicode="" -d="M416 160c18 0 32 -14 32 -32s-14 -32 -32 -32c-15 0 -27 10 -31 23h-65c-3 0 -7 2 -8 5l-23 72l-57 -198c-1 -3 -4 -6 -8 -6v0c-4 0 -7 3 -8 7l-58 346l-54 -220c-1 -4 -4 -6 -8 -6h-96v16h90l62 251c1 4 4 6 8 6s7 -3 8 -7l58 -349l54 190c1 3 4 5 8 5s7 -2 8 -5l30 -91 -h59c3 14 16 25 31 25z" /> - <glyph glyph-name="ion-ios-rainy-outline" unicode="" horiz-adv-x="288" -d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44 -c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1zM220 146c28 0 52 24 52 52s-24 54 -52 54h-6l-15 -2l-3 15c-3 14 -11 31 -23 40c-12 10 -26 14 -41 14 -c-36 0 -66 -31 -66 -67v-12v-10c-6 0 -12 -2 -14 -2c-20 -3 -35 -23 -35 -43c0 -10 4 -20 11 -27s16 -12 26 -12h124v0v0h42z" /> - <glyph glyph-name="ion-ios-rainy" unicode="" horiz-adv-x="288" -d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44 -c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1z" /> - <glyph glyph-name="ion-ios-recording-outline" unicode="" horiz-adv-x="480" -d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -75 -53 -95h146c-32 20 -53 55 -53 95c0 62 49 112 110 112zM16 192c0 -53 42 -95 94 -95s93 42 93 95s-41 95 -93 95s-94 -42 -94 -95z -M370 97c52 0 94 42 94 95s-42 95 -94 95s-93 -42 -93 -95s41 -95 93 -95zM368 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM368 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM112 240c-26 0 -48 -22 -48 -48 -s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM112 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64z" /> - <glyph glyph-name="ion-ios-recording" unicode="" horiz-adv-x="480" -d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -76 -53 -95h146c-32 19 -53 55 -53 95c0 62 49 112 110 112zM112 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64z -M368 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM368 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM112 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48z" /> - <glyph glyph-name="ion-ios-redo-outline" unicode="" horiz-adv-x="384" -d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10zM208 256c-201 0 -192 -169 -192 -169c48 81 101 105 192 105v-65l148 97l-148 97v-65z" /> - <glyph glyph-name="ion-ios-redo" unicode="" horiz-adv-x="384" -d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10z" /> - <glyph glyph-name="ion-ios-refresh-empty" unicode="" horiz-adv-x="256" -d="M128 64c-71 0 -128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108h20c0 -71 -57 -128 -128 -128z" /> - <glyph glyph-name="ion-ios-refresh-outline" unicode="" horiz-adv-x="416" -d="M316 192v0h20c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1 -c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" /> - <glyph glyph-name="ion-ios-refresh" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64c71 0 128 57 128 128h-20c0 -60 -48 -108 -108 -108s-108 48 -108 108s48 108 108 108v-56l96 56l-96 64v-44c-71 0 -128 -57 -128 -128s57 -128 128 -128z" /> - <glyph glyph-name="ion-ios-reload" unicode="" -d="M192 384c106 0 192 -86 192 -192l55 53l9 -9l-70 -68l-67 68l9 9l51 -52c0 98 -80 178 -179 178s-179 -80 -179 -179s80 -179 179 -179c79 0 146 50 170 121l12 -3c-26 -76 -97 -131 -182 -131c-106 0 -192 86 -192 192s86 192 192 192z" /> - <glyph glyph-name="ion-ios-reverse-camera-outline" unicode="" horiz-adv-x="384" -d="M238 129l2 2l11 -12l-2 -2c-16 -14 -36 -21 -57 -21c-45 0 -82 36 -87 78h-30l38 50l39 -50h-31c5 -33 35 -62 71 -62c17 0 33 6 46 17zM252 249c16 -14 25 -37 27 -57h30l-38 -51l-39 51h31c-5 35 -35 64 -71 64c-17 0 -33 -6 -46 -17l-2 -2l-11 12l2 2 -c16 14 36 21 57 21c22 0 44 -8 60 -23zM354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-6s-4 1 -6 3s-6 8 -9 11 -c-12 13 -21 24 -27 30c-5 5 -7 4 -7 4h-88s-1 0 -6 -4c-6 -5 -15 -14 -26 -27c-3 -4 -8 -11 -11 -14s-4 -3 -6 -3h-6h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17z" /> - <glyph glyph-name="ion-ios-reverse-camera" unicode="" horiz-adv-x="384" -d="M354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM249 117l2 2l-11 12l-2 -2c-13 -11 -29 -17 -46 -17c-36 0 -66 29 -71 62h31l-39 50l-38 -50h30 -c5 -42 42 -78 87 -78c21 0 41 7 57 21zM271 141l38 51h-30c-2 20 -11 43 -27 57c-16 15 -38 23 -60 23c-21 0 -41 -7 -57 -21l-2 -2l11 -12l2 2c13 11 29 17 46 17c36 0 66 -29 71 -64h-31z" /> - <glyph glyph-name="ion-ios-rewind-outline" unicode="" -d="M432 293l-184 -101l184 -101v202zM208 292v0l-176 -100l176 -100v95v27v78zM224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" /> - <glyph glyph-name="ion-ios-rewind" unicode="" -d="M224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" /> - <glyph glyph-name="ion-ios-rose-outline" unicode="" horiz-adv-x="320" -d="M284 295c-4 -1 -9 -3 -13 -4c-37 -11 -71 -24 -103 -39c-17 -8 -24 -12 -44 -24l-7 -4c-31 -18 -50 -33 -63 -51c-15 -21 -22 -45 -22 -77c0 -16 3 -30 9 -44c6 -13 14 -26 25 -36c23 -21 55 -32 94 -32s71 11 94 32c11 10 19 23 25 36c6 14 9 28 9 44c0 20 -5 40 -11 60 -c-11 40 -23 83 7 139zM320 320v0c-77 -96 -16 -151 -16 -224s-56 -128 -144 -128s-144 55 -144 128s35 109 93 142c25 14 33 19 52 28c30 14 65 28 105 40c17 5 35 10 54 14zM38 325c14 -28 18 -57 19 -83c9 7 20 13 30 20c7 4 14 9 21 13c5 3 10 6 16 9c-5 4 -11 7 -17 11 -c-22 13 -48 23 -69 30zM0 352v0s66 -15 115 -43c15 -8 28 -18 37 -29c-12 -6 -24 -12 -36 -19c-7 -4 -14 -8 -20 -12c-25 -16 -44 -31 -57 -42c5 41 2 98 -39 145zM249 367c-8 -1 -20 -2 -35 -7c-25 -8 -47 -20 -64 -36c8 -6 15 -12 21 -18c29 12 65 26 95 34 -c-5 10 -12 20 -17 27zM256 384v0s26 -32 32 -55c-33 -8 -84 -25 -121 -42l-3 3c-9 11 -22 22 -39 32c52 60 131 62 131 62zM85 394c-6 -10 -10 -20 -14 -28c12 -4 22 -10 36 -17c4 5 9 10 14 14c-13 15 -27 25 -36 31zM80 416v0s35 -16 64 -56c-12 -9 -23 -20 -33 -31 -c-26 13 -40 21 -61 27c5 15 15 38 30 60z" /> - <glyph glyph-name="ion-ios-rose" unicode="" horiz-adv-x="320" -d="M320 320v0c-77 -96 -16 -151 -16 -224s-56 -128 -144 -128s-144 55 -144 128s35 109 93 142c25 14 33 19 52 28c30 14 65 28 105 40c17 5 35 10 54 14zM0 352v0s66 -15 115 -43c15 -8 28 -18 37 -29c-12 -6 -24 -12 -36 -19c-7 -4 -14 -8 -20 -12 -c-25 -16 -44 -31 -57 -42c5 41 2 98 -39 145zM256 384v0s26 -32 32 -55c-33 -8 -84 -25 -121 -42l-3 3c-9 11 -22 22 -39 32c52 60 131 62 131 62zM80 416v0s35 -16 64 -56c-12 -9 -23 -20 -33 -31c-26 13 -40 21 -61 27c5 15 15 38 30 60z" /> - <glyph glyph-name="ion-ios-search-strong" unicode="" horiz-adv-x="384" -d="M280 150l-4 -7l108 -109l-34 -34l-108 109l-7 -5c-24 -15 -53 -25 -83 -25c-84 0 -152 69 -152 153s68 152 152 152s152 -68 152 -152c0 -30 -9 -58 -24 -82zM237 317c-23 23 -53 35 -85 35s-62 -12 -85 -35s-35 -53 -35 -85s12 -62 35 -85s53 -35 85 -35s62 12 85 35 -s36 53 36 85s-13 62 -36 85z" /> - <glyph glyph-name="ion-ios-search" unicode="" horiz-adv-x="384" -d="M384 23l-23 -23l-113 113c-26 -21 -60 -33 -96 -33c-84 0 -152 68 -152 152s68 152 152 152s152 -68 152 -152c0 -36 -12 -69 -33 -95zM56 135c26 -26 60 -39 96 -39s70 14 96 40s40 60 40 96s-14 70 -40 96s-60 40 -96 40s-70 -14 -96 -40s-40 -60 -40 -96 -s14 -71 40 -97z" /> - <glyph glyph-name="ion-ios-settings-strong" unicode="" -d="M0 72h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283zM0 208h91c6 14 21 24 37 24s31 -10 37 -24h283v-32h-283c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-91zM0 344h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91 -c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283z" /> - <glyph glyph-name="ion-ios-settings" unicode="" -d="M320 344c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 360v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM320 72c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 88v0c18 0 32 -14 32 -32s-14 -32 -32 -32 -s-32 14 -32 32s14 32 32 32zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM128 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM175 200h273v-16h-273c0 3 1 5 1 8s-1 5 -1 8zM80 192c0 -3 1 -5 1 -8h-81v16h81 -c0 -3 -1 -5 -1 -8zM367 64h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM272 56c0 -3 1 -5 1 -8h-273v16h273c0 -3 -1 -5 -1 -8zM367 336h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM273 336c0 -3 -1 -5 -1 -8s1 -5 1 -8h-273v16h273z" /> - <glyph glyph-name="ion-ios-shuffle-strong" unicode="" horiz-adv-x="384" -d="M301 296c-85 0 -119 -64 -152 -126c-1 -3 -3 -5 -4 -8l-1 -1c-2 -3 -2 -5 -4 -8c-21 -38 -43 -68 -68 -83c-15 -9 -34 -18 -72 -18v32c45 0 76 18 112 84c2 3 2 6 4 9h1c1 2 3 4 4 7c34 64 76 144 180 144h15l-52 43l21 25l99 -84l-99 -82l-21 24l51 42h-14zM285 154 -l99 -82l-99 -84l-21 25l52 43h-15c-78 0 -122 45 -153 95l18 33c29 -51 64 -96 135 -96h14l-51 42zM112 216c-36 66 -67 84 -112 84v32c38 0 57 -9 72 -18c25 -15 47 -44 67 -81c-7 -11 -13 -22 -19 -33c-1 2 -2 5 -3 7h-1c-2 3 -2 6 -4 9z" /> - <glyph glyph-name="ion-ios-shuffle" unicode="" horiz-adv-x="384" -d="M298 241l-10 12l62 51h-46c-93 0 -129 -75 -164 -139c-2 -3 -3 -6 -5 -9c-20 -37 -41 -61 -65 -75c-14 -8 -33 -17 -70 -17v16c48 0 83 14 121 84c2 3 3 6 5 9c35 65 75 147 178 147h46l-62 52l10 12l86 -72zM135 228c0 -1 1 -2 1 -3c-3 -5 -6 -11 -9 -16c0 1 -1 1 -1 2 -c-2 3 -3 6 -5 9c-38 70 -73 84 -121 84v16c37 0 56 -9 70 -17c24 -14 45 -38 65 -75zM298 143l86 -71l-86 -72l-10 12l62 52h-46c-76 0 -118 45 -149 95c1 2 2 5 3 7c2 3 4 7 6 10c30 -50 67 -96 140 -96h46l-62 51z" /> - <glyph glyph-name="ion-ios-skipbackward-outline" unicode="" horiz-adv-x="320" -d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320zM80 192l7 -4l217 -128v264v0l-217 -128zM16 336v-288h47v126v8v28v126h-47z" /> - <glyph glyph-name="ion-ios-skipbackward" unicode="" horiz-adv-x="320" -d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320z" /> - <glyph glyph-name="ion-ios-skipforward-outline" unicode="" horiz-adv-x="320" -d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142zM233 188l7 4l-7 4l-217 128v0v-264zM304 48v288h-47v-126v-28v-8v-126h47z" /> - <glyph glyph-name="ion-ios-skipforward" unicode="" horiz-adv-x="320" -d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142z" /> - <glyph glyph-name="ion-ios-snowy" unicode="" horiz-adv-x="256" -d="M252 131c4 -2 5 -7 3 -11s-7 -5 -11 -3l-29 17c-2 -8 -2 -16 0 -24c1 -4 -3 -9 -7 -10s-8 2 -9 6c-2 12 -3 24 1 36l-64 36v-73c11 -3 22 -8 31 -16c3 -3 4 -8 1 -11s-8 -4 -11 -1c-6 5 -13 10 -21 12v-33c0 -4 -4 -8 -8 -8s-8 4 -8 8v33c-8 -2 -15 -7 -21 -12 -c-3 -3 -8 -2 -11 1s-3 8 0 11c9 8 20 13 32 16v73l-65 -36c4 -12 4 -23 2 -35c-1 -4 -5 -8 -9 -7s-8 6 -7 10c2 8 2 16 0 24l-29 -17c-4 -2 -9 -1 -11 3s-1 9 3 11l29 16c-6 6 -13 10 -21 13c-4 1 -6 6 -5 10c2 4 6 6 10 5c12 -4 22 -11 30 -19l65 36l-65 37 -c-8 -9 -18 -15 -30 -19c-4 -1 -9 0 -10 4s1 10 5 11c8 3 15 6 21 12l-29 16c-4 2 -5 7 -3 11s7 5 11 3l29 -16c2 8 2 15 0 23c-1 4 3 9 7 10s8 -2 9 -6c2 -12 1 -25 -2 -36l65 -36v73c-12 3 -23 8 -32 16c-3 3 -3 8 0 11s8 4 11 1c6 -5 13 -10 21 -12v33c0 4 4 8 8 8 -s8 -4 8 -8v-33c8 2 15 7 21 12c3 3 8 2 11 -1s2 -8 -1 -11c-9 -8 -20 -13 -31 -16v-73l64 36c-3 11 -4 24 -2 36c1 4 6 7 10 6s7 -6 6 -10c-2 -8 -1 -15 1 -23l29 16c4 2 9 1 11 -3s1 -9 -3 -11l-29 -16c6 -6 13 -10 21 -13c4 -1 6 -6 5 -10s-6 -6 -10 -5 -c-12 4 -23 10 -31 19l-64 -36l64 -36c8 8 19 15 31 19c4 1 9 -1 10 -5s-1 -9 -5 -10c-8 -3 -15 -7 -21 -13z" /> - <glyph glyph-name="ion-ios-speedometer-outline" unicode="" -d="M224 384c124 0 224 -100 224 -224c0 -57 -21 -108 -56 -148c-4 -4 -7 -8 -11 -12l-10 10l-1 2c-19 18 -41 33 -65 43c-26 11 -53 16 -81 16s-55 -5 -81 -16c-24 -10 -46 -25 -65 -43l-1 -2l-10 -10c-4 4 -7 8 -11 12c-35 40 -56 91 -56 148c0 124 100 224 224 224z -M416 79c10 23 15 48 16 73h-32v16h32c-1 25 -6 50 -16 73c-9 22 -23 42 -39 60l-27 -27l-6 6l-5 5v0h-1l27 27c-18 17 -38 31 -60 40c-23 10 -48 15 -74 16v-38h-16v38c-25 -1 -49 -6 -72 -16c-22 -10 -43 -23 -61 -40l27 -27v0v0l-6 -6l-5 -5l-27 27 -c-16 -18 -30 -38 -39 -60c-10 -23 -15 -49 -16 -74h32v-16h-32c1 -25 6 -49 16 -72c9 -20 20 -39 35 -56c40 40 96 64 157 64s117 -24 157 -64c15 17 26 36 35 56zM336 273l2 -1l-75 -84c6 -8 9 -18 9 -28c0 -26 -22 -48 -48 -48c-10 0 -19 4 -27 9l-13 -12l-11 11l12 12 -c-6 8 -9 18 -9 28c0 26 22 48 48 48c10 0 19 -3 27 -8zM224 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> - <glyph glyph-name="ion-ios-speedometer" unicode="" -d="M385 169v-15h30c-1 -22 -6 -44 -15 -65c-8 -18 -19 -35 -32 -50c-39 37 -90 58 -144 58s-105 -21 -144 -58c-13 15 -24 32 -32 50c-9 21 -14 43 -15 65h28h1v16h-29c1 23 6 45 15 66c9 20 20 38 35 54l25 -24l10 10l1 1v0v0l-25 25c16 15 36 26 56 35c21 9 43 14 66 15 -v-34h14h1v34c23 -1 46 -6 67 -15s39 -20 55 -35l-24 -25l11 -11l25 25c15 -16 26 -35 35 -55c9 -21 14 -43 15 -66h-30v-1zM272 160c0 10 -3 20 -9 28l63 76l-2 1l-73 -65c-8 5 -17 8 -27 8c-26 0 -48 -22 -48 -48c0 -10 3 -20 9 -28l-12 -12l11 -11l13 12c8 -5 17 -9 27 -9 -c26 0 48 22 48 48zM224 384c124 0 224 -100 224 -224c0 -57 -21 -108 -56 -148c-4 -4 -7 -8 -11 -12h-23c-32 39 -80 64 -134 64s-102 -25 -134 -64h-23c-4 4 -7 8 -11 12c-35 40 -56 91 -56 148c0 124 100 224 224 224zM379 27c34 37 52 86 52 136c0 55 -22 106 -61 145 -s-91 60 -146 60s-107 -21 -146 -60s-61 -90 -61 -145c0 -50 18 -99 52 -136l10 -10l1 -1v1l9 9l1 1v0c17 17 38 30 60 39c24 10 48 15 74 15s50 -5 74 -15c22 -9 43 -22 60 -39v0l1 -1l9 -9v-1l1 1zM192 160c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z -" /> - <glyph glyph-name="ion-ios-star-half" unicode="" -d="M140 143l-140 98h171l53 159l53 -159h171l-140 -98l54 -159l-138 99l-138 -99zM224 347v-244l107 -76l-43 122l108 75h-131z" /> - <glyph glyph-name="ion-ios-star-outline" unicode="" -d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171zM331 27l-43 122l108 75h-131l-41 123l-41 -123h-131l108 -75l-43 -122l107 76z" /> - <glyph glyph-name="ion-ios-star" unicode="" -d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171z" /> - <glyph glyph-name="ion-ios-stopwatch-outline" unicode="" horiz-adv-x="384" -d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM192 2 -c96 0 173 77 173 171s-77 171 -173 171c-95 0 -173 -77 -173 -171s77 -171 173 -171zM200 191c14 -4 24 -17 24 -31c0 -15 -10 -26 -24 -30l-8 -18v0l-8 18c-14 4 -24 15 -24 30c0 14 12 27 24 31v129h16v-129z" /> - <glyph glyph-name="ion-ios-stopwatch" unicode="" horiz-adv-x="384" -d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM200 130 -c14 4 24 15 24 30c0 14 -10 27 -24 31v129h-16v-129c-12 -4 -24 -17 -24 -31c0 -15 10 -26 24 -30l8 -18z" /> - <glyph glyph-name="ion-ios-sunny-outline" unicode="" horiz-adv-x="320" -d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76 -s76 -34 76 -76s-34 -76 -76 -76zM160 251c-32 0 -59 -27 -59 -59s27 -59 59 -59s59 27 59 59s-27 59 -59 59z" /> - <glyph glyph-name="ion-ios-sunny" unicode="" horiz-adv-x="320" -d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76 -s76 -34 76 -76s-34 -76 -76 -76z" /> - <glyph glyph-name="ion-ios-telephone-outline" unicode="" horiz-adv-x="352" -d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53 -c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44zM324 57c19 22 13 31 1 43c-13 14 -50 39 -72 39c-3 0 -6 -1 -8 -2 -c-19 -12 -28 -18 -37 -18s-15 6 -23 13h-1c-19 16 -23 21 -30 29l-2 2c-1 1 -3 2 -4 3c-6 6 -11 12 -27 30v1c-10 11 -17 18 -18 28s5 20 16 34c15 20 -5 48 -31 79l-1 1c-7 8 -14 12 -22 12c-10 0 -18 -6 -23 -9c-1 0 -2 -1 -2 -1c-11 -7 -18 -16 -21 -24 -c-5 -16 -7 -35 17 -79c23 -42 43 -70 76 -104c31 -32 45 -42 76 -64c32 -23 64 -38 84 -38c21 0 32 1 52 25z" /> - <glyph glyph-name="ion-ios-telephone" unicode="" horiz-adv-x="352" -d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53 -c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44z" /> - <glyph glyph-name="ion-ios-tennisball-outline" unicode="" horiz-adv-x="416" -d="M416 192v-8v0c0 -5 0 -11 -1 -16v0c-11 -97 -90 -174 -187 -183v0h-4h-2s-1 -1 -2 -1h-3h-1h-8c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208zM399 192c0 105 -86 191 -191 191c-3 0 -5 -1 -8 -1c1 -24 6 -46 15 -68c10 -26 26 -49 46 -69s43 -36 69 -46 -c22 -9 44 -14 68 -15c0 3 1 5 1 8zM17 192c0 -105 86 -191 191 -191h4c-1 22 -7 45 -15 66c-10 26 -26 48 -46 68s-42 36 -68 46c-21 8 -44 14 -66 15v-4zM228 2c88 9 158 78 169 166c-54 3 -106 25 -147 66s-63 93 -66 147c-88 -11 -157 -81 -166 -169 -c53 -3 105 -25 145 -65s62 -92 65 -145z" /> - <glyph glyph-name="ion-ios-tennisball" unicode="" horiz-adv-x="416" -d="M0 196v0v0v0zM212 -16h1h-1v0zM208 400c115 0 208 -93 208 -208c0 -8 0 -16 -1 -24v0v0c-11 -97 -90 -174 -187 -183v0v0c-6 -1 -13 -1 -20 -1c-115 0 -208 93 -208 208v4v0v0c0 6 0 11 1 16v0v0c9 97 86 176 183 187v0v0c6 1 11 1 16 1v0v0h8zM83 181 -c26 -10 48 -26 68 -46s36 -42 46 -68c8 -21 14 -44 15 -66c5 0 11 0 16 1c-3 53 -25 105 -65 145s-92 62 -145 65c-1 -5 -1 -11 -1 -16c22 -1 45 -7 66 -15zM250 234c41 -41 93 -63 147 -66c1 5 1 11 1 16c-24 1 -46 6 -68 15c-26 10 -49 26 -69 46s-36 43 -46 69 -c-9 22 -14 44 -15 68c-5 0 -11 0 -16 -1c3 -54 25 -106 66 -147z" /> - <glyph glyph-name="ion-ios-thunderstorm-outline" unicode="" horiz-adv-x="274" -d="M193 176l-88 -128l29 96h-52l15 80h72l-16 -48h40zM209 275c36 0 65 -29 65 -65s-29 -66 -65 -66h-8v17h8c27 0 49 22 49 49s-22 50 -49 50h-6l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 13 -39 13c-34 0 -63 -27 -63 -62v-12s1 -9 1 -9c-5 0 -12 -2 -14 -2 -c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h11v-17h-11c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78c37 0 68 -26 76 -61h8z" /> - <glyph glyph-name="ion-ios-thunderstorm" unicode="" horiz-adv-x="274" -d="M153 176h40l-22 -32l-66 -96l29 96h-52l15 80h72zM84 240h107l-16 -48h18h30l-33 -48h19c36 0 65 30 65 66s-29 65 -65 65h-8c-8 35 -39 61 -76 61c-43 0 -78 -35 -78 -78v-8c-26 -2 -47 -26 -47 -53c0 -29 24 -53 52 -53h14z" /> - <glyph glyph-name="ion-ios-time-outline" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45 -s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45zM216 368c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM216 16c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM392 192 -c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM40 192c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8 -zM64 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM64 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8 -s-8 3 -8 8zM238 200c4 -8 2 -18 -6 -22v-122c0 -4 -4 -8 -8 -8s-8 4 -8 8v122c-2 1 -4 4 -6 6c-3 5 -3 11 0 16l-37 63c-2 4 -1 9 3 11s8 1 10 -3l38 -63c5 0 11 -3 14 -8z" /> - <glyph glyph-name="ion-ios-time" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 376c-4 0 -8 -4 -8 -8s4 -8 8 -8s8 4 8 8s-4 8 -8 8zM48 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM76 97c4 2 4 7 2 11s-6 5 -10 3s-5 -7 -3 -11s7 -5 11 -3z -M78 276c2 4 2 9 -2 11s-9 1 -11 -3s-1 -9 3 -11s8 -1 10 3zM132 351c-4 -2 -5 -7 -3 -11s7 -4 11 -2s5 6 3 10s-7 5 -11 3zM143 36c2 4 1 8 -3 10s-9 2 -11 -2s-1 -9 3 -11s9 -1 11 3zM224 8c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM232 178c8 4 10 14 6 22 -c-3 5 -9 8 -14 8l-38 64c-2 4 -7 4 -11 2s-4 -7 -2 -11l37 -63c-3 -5 -3 -11 0 -16c2 -2 4 -5 6 -6v-122c0 -4 4 -8 8 -8s8 4 8 8v122zM316 33c4 2 5 7 3 11s-7 4 -11 2s-5 -6 -3 -10s7 -5 11 -3zM319 340c2 4 1 9 -3 11s-9 1 -11 -3s-1 -8 3 -10s9 -2 11 2zM383 100 -c2 4 1 9 -3 11s-8 1 -10 -3s-2 -9 2 -11s9 -1 11 3zM380 273c4 2 5 7 3 11s-7 5 -11 3s-4 -7 -2 -11s6 -5 10 -3zM400 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8z" /> - <glyph glyph-name="ion-ios-timer-outline" unicode="" horiz-adv-x="416" -d="M189 176l-1 2s-89 118 -86 120s121 -85 121 -85c1 -1 1 -2 2 -3c5 -5 8 -11 8 -18c0 -14 -11 -25 -25 -25c-8 0 -14 3 -19 9zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208c0 57 23 109 61 147l12 -12c-35 -35 -56 -82 -56 -135 -c0 -106 85 -191 191 -191s191 85 191 191c0 100 -77 183 -175 191v-95h-16v112v0v0z" /> - <glyph glyph-name="ion-ios-timer" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM102 298c-2 -2 86 -120 86 -120l1 -1c5 -6 11 -10 19 -10c14 0 25 11 25 25c0 7 -3 13 -8 18l-3 3c0 0 -117 87 -120 85zM208 1c106 0 192 85 192 191s-86 192 -192 192v-96h16v78 -c88 -9 158 -84 158 -174c0 -96 -78 -174 -174 -174s-175 78 -175 174c0 48 19 92 51 124l-11 12c-35 -35 -56 -83 -56 -136c0 -106 85 -191 191 -191z" /> - <glyph glyph-name="ion-ios-toggle-outline" unicode="" -d="M96 128c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM96 144v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM351 160v0h-255c-44 0 -80 -36 -80 -80s36 -80 80 -80h256c44 0 80 36 80 80s-37 80 -81 80zM352 176v0 -c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM352 352c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM352 368v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM97 384v0c-44 0 -81 -36 -81 -80 -s36 -80 80 -80h256c44 0 80 36 80 80s-36 80 -80 80h-255zM96 400v0h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96z" /> - <glyph glyph-name="ion-ios-toggle" unicode="" -d="M96 128c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM352 176c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM96 16c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM352 256c-26 0 -48 22 -48 48 -s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM96 208c-53 0 -96 43 -96 96s43 96 96 96h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256zM352 368c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64z" /> - <glyph glyph-name="ion-ios-trash-outline" unicode="" horiz-adv-x="288" -d="M288 335v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20h80zM95 355v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM230 30l23 290h-217l23 -290v0v-1c0 -8 7 -14 15 -14 -h141c8 0 15 6 15 14v1v0zM137 47v241h14v-241h-14zM208 288l-11 -241h-14l10 241h15zM94 288l11 -241h-14l-11 241h14z" /> - <glyph glyph-name="ion-ios-trash" unicode="" horiz-adv-x="288" -d="M208 335h80v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20zM95 355v0v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM91 47h14l-11 241h-14zM151 47v241h-14v-241h14z -M197 47l11 241h-14l-11 -241h14z" /> - <glyph glyph-name="ion-ios-undo-outline" unicode="" horiz-adv-x="384" -d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136zM368 87c0 0 9 169 -192 169v65l-148 -97l148 -97v65c91 0 144 -24 192 -105z" /> - <glyph glyph-name="ion-ios-undo" unicode="" horiz-adv-x="384" -d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136z" /> - <glyph glyph-name="ion-ios-unlocked-outline" unicode="" horiz-adv-x="320" -d="M160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-33h-16v33c-14 4 -24 16 -24 31c0 18 14 32 32 32zM160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM72 224h248v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-8h-16v8 -c0 49 -39 88 -88 88s-88 -39 -88 -88v-72zM304 0v208h-288v-208h288z" /> - <glyph glyph-name="ion-ios-unlocked" unicode="" horiz-adv-x="320" -d="M160 144c9 0 16 -7 16 -16s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16zM72 224h248v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-8h-16v8c0 49 -39 88 -88 88s-88 -39 -88 -88v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32 -c0 -15 10 -27 24 -31v-33h16v33z" /> - <glyph glyph-name="ion-ios-upload-outline" unicode="" horiz-adv-x="320" -d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 330l-11 12l74 74l74 -74l-11 -12l-55 55v-243h-16v243z" /> - <glyph glyph-name="ion-ios-upload" unicode="" horiz-adv-x="320" -d="M168 304h152v-304h-320v304h152v-162h16v162zM168 385v-81h-16v81l-55 -55l-11 12l74 74l74 -74l-11 -12z" /> - <glyph glyph-name="ion-ios-videocam-outline" unicode="" horiz-adv-x="418" -d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM273 99v188c0 9 -8 16 -17 16h-221c-9 0 -18 -7 -18 -16v-188c0 -9 10 -18 19 -18h221c9 0 16 9 16 18zM320 235l98 53v-192l-98 53v86zM401 258v0l-64 -33 -v-66l64 -33v132z" /> - <glyph glyph-name="ion-ios-videocam" unicode="" horiz-adv-x="418" -d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM320 235l98 53v-192l-98 53v86z" /> - <glyph glyph-name="ion-ios-volume-high" unicode="" horiz-adv-x="320" -d="M278 320c26 -36 42 -80 42 -128s-16 -92 -42 -128l-14 10c24 33 39 74 39 118s-15 85 -39 118zM224 96l-14 10c18 24 29 54 29 86s-11 62 -29 86l14 10c20 -27 32 -60 32 -96s-12 -69 -32 -96zM177 128l-13 10c12 15 18 34 18 54s-6 39 -18 54l13 10 -c14 -18 22 -40 22 -64s-8 -46 -22 -64zM58 232l70 56v-192l-70 56h-58v80h58z" /> - <glyph glyph-name="ion-ios-volume-low" unicode="" horiz-adv-x="128" -d="M58 232l70 56v-192l-70 56h-58v80h58z" /> - <glyph glyph-name="ion-ios-wineglass-outline" unicode="" horiz-adv-x="192" -d="M104 139v-155h72v-16h-80h-80v16h72v155c0 22 -20 39 -40 55c-8 6 -16 13 -22 19c-27 28 -26 52 -26 71v4c0 44 31 125 32 128h64h64c1 -3 32 -84 32 -128v-4c0 -19 1 -43 -26 -71c-6 -6 -14 -13 -22 -19c-20 -16 -40 -33 -40 -55zM43 400c-5 -16 -20 -63 -25 -96h156 -c-5 33 -20 80 -25 96h-53h-53zM96 175c3 0 5 0 7 2v0c9 11 20 20 31 29c8 6 15 12 20 18c22 23 22 41 22 60v4h-160v-4c0 -19 0 -37 22 -60c5 -6 12 -12 20 -18c11 -9 22 -18 31 -29v0c2 -2 4 -2 7 -2z" /> - <glyph glyph-name="ion-ios-wineglass" unicode="" horiz-adv-x="192" -d="M104 139v-155h72v-16h-80h-80v16h72v155c0 22 -20 39 -40 55c-8 6 -16 13 -22 19c-27 28 -26 52 -26 71v4c0 44 31 125 32 128h64h64c1 -3 32 -84 32 -128v-4c0 -19 1 -43 -26 -71c-6 -6 -14 -13 -22 -19c-20 -16 -40 -33 -40 -55zM43 400c-5 -16 -20 -63 -25 -96h156 -c-5 33 -20 80 -25 96h-53h-53z" /> - <glyph glyph-name="ion-ios-world-outline" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM216 276v-76h75c-1 31 -5 60 -11 84c-21 -5 -42 -7 -64 -8zM216 292c20 1 41 3 60 8c-14 46 -38 76 -60 82v-90zM200 382c-23 -6 -45 -36 -60 -82 -c19 -5 39 -7 60 -8v90zM200 276c-22 1 -44 3 -65 8c-6 -24 -10 -53 -11 -84h76v76zM108 200c1 32 4 62 11 88c-21 6 -41 15 -59 25c-26 -31 -41 -70 -43 -113h91zM108 184h-91c2 -43 17 -82 43 -113c19 10 38 19 59 25c-7 26 -10 56 -11 88zM124 184c1 -31 5 -60 11 -84 -c21 5 43 8 65 9v75h-76zM200 92c-21 -1 -41 -3 -60 -8c15 -46 37 -76 60 -82v90zM216 2c22 6 46 36 60 82c-19 5 -40 7 -60 8v-90zM216 109c22 -1 43 -4 64 -9c6 24 10 53 11 84h-75v-75zM308 184c-1 -32 -5 -62 -12 -88c21 -6 41 -15 60 -25c26 31 41 70 43 113h-91z -M308 200v0h91c-2 43 -17 82 -43 113c-19 -10 -38 -19 -59 -25c7 -26 10 -56 11 -88zM344 326c-25 25 -56 44 -91 52c16 -17 29 -43 39 -74c18 6 35 13 52 22zM163 378c-35 -8 -67 -27 -91 -52c16 -9 34 -15 52 -21c10 31 23 56 39 73zM72 58c25 -25 56 -44 91 -52 -c-16 17 -30 43 -40 74c-18 -6 -35 -13 -51 -22zM253 6c35 8 66 27 91 52c-17 9 -34 16 -52 22c-10 -31 -23 -57 -39 -74z" /> - <glyph glyph-name="ion-ios-world" unicode="" horiz-adv-x="416" -d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM208 1c106 0 191 85 191 191s-85 191 -191 191v0v0v0c-106 0 -191 -85 -191 -191s86 -191 191 -191v0v0v0zM274 276c6 -22 9 -48 10 -76h-68v68c20 1 39 4 58 8 -zM216 366c20 -6 41 -34 54 -75c-17 -4 -36 -6 -54 -7v82zM145 291c13 42 35 69 55 75v-82c-19 1 -37 3 -55 7zM333 315c-15 -8 -31 -15 -48 -20c-9 29 -21 52 -36 67c32 -8 61 -24 84 -47zM299 200c-1 29 -4 56 -10 80c19 6 37 14 54 23c23 -28 38 -64 40 -103h-84zM132 200 -c1 28 3 54 9 76c19 -5 39 -7 59 -8v-68h-68zM284 184c-1 -28 -4 -54 -10 -76c-19 5 -38 7 -58 8v68h68zM141 108c-6 22 -8 48 -9 76h68v-68c-20 -1 -40 -3 -59 -8zM200 18c-20 6 -42 33 -55 75c18 4 36 6 55 7v-82zM249 22c15 15 27 38 36 67c17 -5 33 -11 48 -19 -c-23 -23 -52 -40 -84 -48zM167 362c-15 -15 -27 -39 -36 -67c-16 5 -33 11 -48 19c22 23 52 40 84 48zM289 104c6 24 9 51 10 80h84c-2 -39 -17 -75 -40 -103c-17 9 -35 17 -54 23zM216 100c18 -1 37 -3 54 -7c-13 -42 -34 -69 -54 -75v82zM127 280c-6 -24 -11 -51 -11 -80 -h-83c2 39 17 75 40 103c17 -9 35 -17 54 -23zM116 184c1 -29 4 -56 10 -80c-19 -6 -36 -14 -53 -23c-23 28 -38 64 -40 103h83zM83 70c15 8 32 14 48 19c9 -28 21 -52 36 -67c-32 8 -62 25 -84 48z" /> - <glyph glyph-name="ion-ipad" unicode="" horiz-adv-x="288" -d="M0 375c0 5 4 9 9 9h270c5 0 9 -4 9 -9v-366c0 -5 -4 -9 -9 -9h-270c-5 0 -9 4 -9 9v366zM144 10c8 0 14 6 14 14s-7 14 -14 14c-8 0 -14 -6 -14 -14s6 -14 14 -14zM32 329v-275c0 -4 3 -6 6 -6h211c3 0 7 2 7 6v275c0 4 -4 7 -7 7h-211c-3 0 -6 -3 -6 -7z" /> - <glyph glyph-name="ion-iphone" unicode="" horiz-adv-x="192" -d="M168 384c13 0 24 -11 24 -24v-336c0 -13 -11 -24 -24 -24h-144c-13 0 -24 11 -24 24v336c0 13 11 24 24 24h144zM80 348v0c0 -2 2 -4 4 -4h24c2 0 4 2 4 4v0c0 2 -2 4 -4 4h-24c-2 0 -4 -2 -4 -4zM68 352c-2 0 -4 -2 -4 -4s2 -4 4 -4s4 2 4 4s-2 4 -4 4zM96 16 -c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM176 64v256h-160v-256h160z" /> - <glyph glyph-name="ion-ipod" unicode="" horiz-adv-x="224" -d="M112 137c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM196 384c15 0 28 -12 28 -28v-328c0 -16 -13 -28 -28 -28h-168c-15 0 -28 12 -28 28v328c0 16 13 28 28 28h168zM112 32c40 0 72 32 72 72s-32 72 -72 72s-72 -32 -72 -72s32 -72 72 -72z -M192 221v118c-1 7 -6 12 -12 13h-136c-7 -1 -12 -7 -12 -15v-114c0 -8 6 -15 14 -15h131c8 0 14 5 15 13z" /> - <glyph glyph-name="ion-jet" unicode="" horiz-adv-x="326" -d="M222 80l-2 -13l53 -58l-18 -27l-74 9l-18 -55l-19 55l-73 -9l-18 27l53 58l-2 13l-104 -35l3 53l114 103s26 173 28 192c5 40 18 55 18 55s13 -15 18 -55c2 -19 28 -192 28 -192l114 -103l3 -53z" /> - <glyph glyph-name="ion-key" unicode="" horiz-adv-x="192" -d="M144 147c28 -17 48 -48 48 -83c0 -53 -43 -96 -96 -96s-96 43 -96 96c0 36 19 67 48 84c0 0 7 16 12 41c0 4 11 6 11 12v20c0 5 -7 9 -7 11v8v8c0 2 0 4 1 6c0 1 1 1 1 2l2 1l4 4v1c2 2 3 4 3 6c0 1 1 8 1 9c0 3 -2 6 -4 8l-1 1l-4 4v0l-1 1v0c-2 2 -3 5 -3 8v7 -c0 3 2 7 4 9v0l5 5v0c2 2 4 3 4 6v24c0 3 -2 6 -4 8v1l-4 4l-1 1c-2 2 -3 5 -3 8v18c0 11 0 19 9 23c3 1 14 3 23 3c20 0 30 -8 32 -36c0 0 7 -81 9 -143s7 -90 7 -90zM96 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> - <glyph glyph-name="ion-knife" unicode="" horiz-adv-x="64" -d="M62 416c2 0 2 -1 2 -6v-412c0 -15 -10 -30 -24 -30v0v0c-14 0 -24 15 -24 30c1 19 14 83 16 130v0c1 30 -32 31 -32 70c0 134 35 191 54 214c2 2 5 4 8 4z" /> - <glyph glyph-name="ion-laptop" unicode="" horiz-adv-x="512" -d="M480 342v-262h-448v262c0 6 4 10 10 10h428c6 0 10 -4 10 -10zM448 112v208h-384v-208h384zM0 59v5h512v-5c-70 -20 -116 -27 -256 -27s-186 7 -256 27z" /> - <glyph glyph-name="ion-leaf" unicode="" horiz-adv-x="422" -d="M412 69c18 -3 10 -41 -5 -39c0 0 -21 -1 -63 12c0 0 -16 -19 -39 -30c-26 -12 -118 -33 -197 38c-108 97 -120 354 -100 333c86 -90 197 -47 270 -106c55 -44 88 -127 77 -192c0 0 5 -8 57 -16zM316 65c5 5 10 16 10 24c-161 52 -252 160 -252 160s104 -143 242 -184z -" /> - <glyph glyph-name="ion-levels" unicode="" horiz-adv-x="350" -d="M46 349c11 -5 18 -16 18 -29s-7 -24 -18 -29v-275c0 -9 -7 -16 -16 -16s-16 7 -16 16v278c-8 6 -14 15 -14 26s6 20 14 26v22c0 9 7 16 16 16s16 -7 16 -16v-19zM142 155c9 -6 15 -16 15 -27s-6 -21 -15 -27v-85c0 -9 -7 -16 -16 -16s-16 7 -16 16v84 -c-10 5 -17 16 -17 28s7 23 17 28v212c0 9 7 16 16 16s16 -7 16 -16v-213zM238 285c10 -6 16 -16 16 -28s-6 -22 -16 -28v-213c0 -9 -7 -16 -16 -16s-16 7 -16 16v213c-10 6 -16 16 -16 28s6 22 16 28v83c0 9 7 16 16 16s16 -7 16 -16v-83zM350 65c0 -12 -6 -22 -16 -28v-21 -c0 -9 -7 -16 -16 -16s-16 7 -16 16v21c-10 6 -16 16 -16 28s6 22 16 28v275c0 9 7 16 16 16s16 -7 16 -16v-275c10 -6 16 -16 16 -28z" /> - <glyph glyph-name="ion-lightbulb" unicode="" horiz-adv-x="256" -d="M128 416c71 0 128 -56 128 -124c0 -5 0 -9 -1 -14s-2 -11 -3 -16v-2c-17 -63 -45 -71 -59 -167v-1c-2 -9 -10 -12 -20 -12h-90c-10 0 -18 3 -20 12v1c-14 96 -42 104 -59 167v2c-1 5 -2 11 -3 16s-1 9 -1 14c0 68 57 124 128 124zM190 52v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8 -v-1c1 -2 2 -3 2 -5s-1 -4 -2 -6v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8v-1c1 -2 2 -4 2 -6c0 -5 -4 -9 -10 -11h-1c-6 -1 -13 -2 -19 -3h-2c-6 -1 -11 -5 -14 -9v0c-4 -5 -10 -10 -18 -10s-15 6 -19 11v0c-3 4 -7 7 -13 8h-2c-6 1 -13 2 -19 3h-1c-6 2 -10 6 -10 11c0 2 1 4 2 6v1 -c2 2 3 4 3 7s-1 5 -3 8v1c-1 2 -2 4 -2 6s1 3 2 5v1c2 3 3 5 3 8s-1 4 -3 7v1v0c-1 2 -2 4 -2 6c0 4 -1 6 7 6h114c8 0 7 -2 7 -6c0 -2 -1 -4 -2 -6v0z" /> - <glyph glyph-name="ion-link" unicode="" horiz-adv-x="384" -d="M192 240v0v0v0zM304 288c44 0 80 -36 80 -80v-32c0 -44 -36 -80 -80 -80h-112c-33 0 -60 20 -73 48c-4 10 -7 20 -7 32v32h48v-32c0 -18 14 -32 32 -32h112c18 0 32 14 32 32v32c0 18 -14 32 -32 32v0h-16c-6 31 -32 48 -32 48h48zM266 240c4 -10 6 -21 6 -32v-32v0h-48 -v0v32c0 18 -14 32 -32 32v0h-112c-18 0 -32 -14 -32 -32v-32c0 -18 14 -32 32 -32h16c6 -31 32 -48 32 -48h-48c-44 0 -80 36 -80 80v32c0 44 36 80 80 80h112c33 0 62 -20 74 -48z" /> - <glyph glyph-name="ion-load-a" unicode="" horiz-adv-x="384" -d="M144 352c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM0 192c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM312 304c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM132 340c10 -10 15 -22 15 -36s-5 -26 -15 -36s-22 -15 -36 -15 -s-26 5 -36 15s-15 22 -15 36s5 26 15 36s22 15 36 15s26 -5 36 -15zM352 192c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM297 79c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM176 32c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32 -s-32 11 -32 32zM56 80c0 27 13 40 40 40s40 -13 40 -40s-13 -40 -40 -40s-40 13 -40 40z" /> - <glyph glyph-name="ion-load-b" unicode="" -d="M256 288c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM224 128v0c18 0 32 -14 32 -32v-96c0 -18 -14 -32 -32 -32s-32 14 -32 32v96c0 18 14 32 32 32zM416 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-96 -c-18 0 -32 14 -32 32s14 32 32 32h96zM128 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-96c-18 0 -32 14 -32 32s14 32 32 32h96zM314 237c-12 -12 -33 -12 -45 0v0c-12 12 -12 34 0 46l68 67c12 12 33 12 45 0v0c12 -12 12 -33 0 -45zM179 147v0c12 -12 12 -33 0 -46 -l-68 -67c-12 -12 -33 -12 -45 0s-12 33 0 45l67 68c12 12 34 12 46 0zM382 79v0c12 -12 12 -33 0 -45s-33 -12 -45 0l-68 68c-12 12 -12 33 0 45s33 12 45 0zM179 282v0c12 -12 12 -33 0 -45s-34 -12 -46 0l-67 68c-12 12 -12 33 0 45s33 12 45 0z" /> - <glyph glyph-name="ion-load-c" unicode="" -d="M448 222c0 -3 0 -6 -1 -9c-4 -8 -15 -12 -23 -7c-4 2 -6 7 -7 11c-1 5 -1 9 -2 14c-4 20 -12 40 -22 58c-12 21 -28 41 -47 56c-18 15 -40 26 -62 33c-21 6 -42 9 -64 9h-4c-3 0 -6 -1 -9 -1c-6 0 -14 -1 -20 -2c-13 -2 -25 -6 -37 -11c-21 -8 -40 -20 -57 -35 -s-31 -33 -42 -52c-12 -22 -20 -45 -24 -70c-2 -11 -2 -23 -2 -34c0 -6 0 -11 1 -16c1 -6 2 -13 3 -19c5 -24 14 -47 28 -67c13 -20 29 -38 48 -52c20 -15 42 -26 65 -33c25 -7 50 -9 76 -7c25 2 50 9 73 20c11 5 22 12 32 19s19 15 27 24c4 4 8 9 12 14s7 10 10 15 -c6 10 12 20 17 31c4 8 8 16 11 25c2 4 3 9 4 13s1 7 2 11c1 -9 1 -18 -1 -26c-1 -5 -2 -11 -4 -16c-1 -5 -3 -10 -5 -15c-4 -10 -8 -19 -13 -28c-6 -11 -12 -21 -20 -30s-16 -18 -25 -26c-18 -15 -40 -27 -62 -36c-23 -9 -48 -14 -73 -15s-51 3 -75 11c-23 7 -45 19 -65 33 -c-19 14 -36 31 -50 50c-7 10 -13 20 -18 31s-9 21 -13 33c-6 18 -9 37 -10 56c-1 20 1 39 5 58c5 24 15 47 28 68c12 19 26 35 42 50s35 27 55 36c23 11 48 19 74 21c10 1 19 1 29 1c13 0 26 -2 38 -4c24 -5 47 -14 68 -26s41 -29 57 -48c15 -18 27 -37 36 -58 -c4 -10 7 -21 10 -32c2 -8 5 -17 6 -26z" /> - <glyph glyph-name="ion-load-d" unicode="" horiz-adv-x="384" -d="M368 208c9 0 16 -7 16 -16s-7 -16 -16 -16h-80c-9 0 -16 7 -16 16s7 16 16 16h80zM112 192c0 -9 -7 -16 -16 -16h-80c-9 0 -16 7 -16 16s7 16 16 16h80c9 0 16 -7 16 -16zM192 112c9 0 16 -7 16 -16v-80c0 -9 -7 -16 -16 -16s-16 7 -16 16v80c0 9 7 16 16 16zM192 384 -c9 0 16 -7 16 -16v-80c0 -9 -7 -16 -16 -16s-16 7 -16 16v80c0 9 7 16 16 16zM261 232c-4 8 -2 18 6 22l69 40c8 4 18 2 22 -6s2 -18 -6 -22l-69 -40c-8 -4 -18 -2 -22 6zM123 152c4 -8 2 -18 -6 -22l-69 -40c-8 -4 -18 -2 -22 6s-2 18 6 22l69 40c8 4 18 2 22 -6zM254 117 -l40 -69c4 -8 2 -18 -6 -22s-18 -2 -22 6l-40 69c-4 8 -2 18 6 22s18 2 22 -6zM118 352l40 -69c4 -8 2 -18 -6 -22s-18 -2 -22 6l-40 69c-4 8 -2 18 6 22s18 2 22 -6zM232 261c-8 4 -10 14 -6 22l40 69c4 8 14 10 22 6s10 -14 6 -22l-40 -69c-4 -8 -14 -10 -22 -6zM152 123 -c8 -4 10 -14 6 -22l-40 -69c-4 -8 -14 -10 -22 -6s-10 14 -6 22l40 69c4 8 14 10 22 6zM352 118c8 -4 10 -14 6 -22s-14 -10 -22 -6l-69 40c-8 4 -10 14 -6 22s14 10 22 6zM32 266c-8 4 -10 14 -6 22s14 10 22 6l69 -40c8 -4 10 -14 6 -22s-14 -10 -22 -6z" /> - <glyph glyph-name="ion-location" unicode="" horiz-adv-x="239" -d="M119 384c66 0 120 -54 120 -120c0 -115 -120 -264 -120 -264s-119 149 -119 264c0 66 53 120 119 120zM119 206c31 0 57 25 57 56s-26 57 -57 57s-56 -26 -56 -57s25 -56 56 -56z" /> - <glyph glyph-name="ion-lock-combination" unicode="" horiz-adv-x="384" -d="M320 271c39 -35 64 -86 64 -143c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 57 25 108 64 143v49c0 71 57 128 128 128s128 -57 128 -128v-49zM96 320v-26c28 16 61 26 96 26s68 -10 96 -26v26c0 53 -43 96 -96 96s-96 -43 -96 -96zM192 -32c88 0 160 72 160 160 -s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM192 272c80 0 144 -64 144 -144s-64 -144 -144 -144s-144 64 -144 144s64 144 144 144zM315 95c2 9 4 18 4 29h-7v7h8c0 11 -2 20 -5 30l-25 -7l-4 12l25 8c-4 10 -8 18 -14 26l-11 -8l-4 6l11 8c-6 8 -13 16 -21 22 -l-15 -21l-11 8l15 20c-8 6 -17 11 -27 14l-4 -13l-6 2l5 13c-9 3 -20 5 -29 5v-13v-6h-16v6v13c-11 -1 -19 -2 -29 -5l4 -12l-6 -2l-4 12c-10 -3 -19 -8 -27 -14l15 -20l-10 -8l-15 21c-8 -6 -16 -14 -22 -22l11 -8l-4 -5l-10 8c-6 -8 -10 -17 -14 -27l24 -8l-5 -12l-25 7 -c-3 -10 -3 -19 -3 -30h6v-7h-5c0 -11 2 -20 4 -29l24 7l4 -12l-24 -8c4 -10 8 -19 14 -27l9 7l4 -5l-9 -7c6 -8 13 -16 21 -22l15 21l10 -8l-15 -20c8 -5 17 -11 27 -14l3 11l7 -2l-4 -11c10 -3 18 -4 29 -5v13v6h16v-6v-13c9 1 19 2 29 5l-5 12l6 2l4 -12c10 3 19 8 27 14 -l-15 20l11 8l15 -21c8 6 15 14 21 22l-11 7l4 6l10 -8c6 8 11 17 15 27l-25 8l4 12zM111 128c0 54 27 81 81 81s81 -27 81 -81s-27 -81 -81 -81s-81 27 -81 81z" /> - <glyph glyph-name="ion-locked" unicode="" horiz-adv-x="384" -d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46s43 -73 43 -115v-31h22c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340zM97 255v-31h17h155h18v31c0 27 -10 61 -28 80v0v1 -c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80z" /> - <glyph glyph-name="ion-log-in" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224c-96 0 -177 60 -209 144h34c9 -20 23 -40 39 -56c36 -36 85 -56 136 -56s100 20 136 56s56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56c-16 -16 -30 -36 -39 -56h-34c32 84 113 144 209 144z -M175 124l52 52h-227v32h227l-52 52l22 23l91 -91l-91 -91z" /> - <glyph glyph-name="ion-log-out" unicode="" -d="M335 124l52 52h-227v32h227l-52 52l22 23l91 -91l-91 -91zM359 56c3 3 6 5 8 8h41c-40 -58 -108 -96 -184 -96c-124 0 -224 100 -224 224s100 224 224 224c76 0 144 -38 184 -96h-41c-2 3 -5 5 -8 8c-36 36 -84 56 -135 56s-100 -20 -136 -56s-56 -85 -56 -136 -s20 -100 56 -136s85 -56 136 -56s99 20 135 56z" /> - <glyph glyph-name="ion-loop" unicode="" horiz-adv-x="334" -d="M184 148v-58c49 8 86 50 86 102c0 16 -4 30 -10 44c-3 6 -5 12 -9 17l47 43c1 -1 2 -3 3 -4c21 -28 33 -62 33 -100v-4c-2 -72 -47 -131 -111 -154c-12 -4 -26 -8 -39 -9v-57l-76 67l-26 23l44 39zM0 196c2 72 48 133 113 155c12 4 24 7 37 8v57l76 -67l26 -23l-44 -39 -l-59 -51l1 58c-49 -8 -86 -51 -86 -102c0 -16 4 -31 10 -45c3 -6 5 -11 9 -16l-47 -44c-1 2 -2 3 -3 5c-20 28 -33 63 -33 100v4z" /> - <glyph glyph-name="ion-magnet" unicode="" horiz-adv-x="384" -d="M192 416c115 0 192 -78 192 -200c0 -49 -3 -77 -15 -128c-16 -66 -39 -113 -39 -113v-1c-2 -3 -6 -6 -10 -6c-1 0 -3 1 -4 1l-2 1l-50 20l-2 1c-3 2 -5 5 -5 9c0 1 0 3 1 4v1c7 16 27 59 37 101s13 63 13 108c0 71 -52 122 -116 122s-116 -51 -116 -122 -c0 -45 3 -66 13 -108s30 -85 37 -101v-1c1 -1 1 -3 1 -4c0 -4 -2 -7 -5 -9l-2 -1l-50 -20l-2 -1c-1 0 -3 -1 -4 -1c-4 0 -8 3 -10 6v1s-24 47 -40 113c-12 51 -14 79 -14 128c0 122 77 200 192 200zM109 4c-9 19 -27 59 -36 98l-42 -12c13 -53 30 -92 35 -104l43 17v1z -M317 -14c5 12 23 51 36 104l-43 12c-9 -39 -26 -79 -35 -98v-1z" /> - <glyph glyph-name="ion-male" unicode="" -d="M448 256l-63 63l-69 -69c22 -30 36 -66 36 -106c0 -97 -79 -176 -176 -176s-176 79 -176 176s79 176 176 176c40 0 76 -14 106 -36l69 69l-63 63h160v-160zM266 54c24 24 38 56 38 90s-14 66 -38 90s-56 38 -90 38s-66 -14 -90 -38s-38 -56 -38 -90s14 -66 38 -90 -s56 -38 90 -38s66 14 90 38z" /> - <glyph glyph-name="ion-man" unicode="" horiz-adv-x="168" -d="M84 341c-21 0 -37 17 -37 38s16 37 37 37s37 -16 37 -37s-16 -38 -37 -38zM121 333c28 0 47 -24 47 -48v-114c0 -22 -32 -22 -32 0v105h-5v-286c0 -28 -41 -31 -43 0v165h-1h-7v-165c-1 -29 -43 -30 -43 0v286h-6v-105c0 -22 -31 -22 -31 0v114c0 24 19 48 47 48h37h37z -" /> - <glyph glyph-name="ion-map" unicode="" -d="M441 311c4 -3 7 -8 7 -14v-281c0 -6 -2 -11 -7 -14c-2 -1 -5 -2 -7 -2c-3 0 -6 0 -8 2l-97 66l-97 -66c-5 -3 -10 -3 -15 0l-97 66l-97 -66c-5 -3 -10 -3 -15 0s-8 8 -8 14v281c0 6 3 11 7 14l105 71c5 3 10 3 15 0l97 -66l98 66c5 3 10 3 15 0zM103 95v242l-71 -50v-242 -zM135 95l73 -49v129l-4 -11c-7 2 -13 6 -20 10l8 13c5 -3 11 -6 16 -8v109l-73 49v-101c4 -2 9 -4 13 -7l-10 -13c-1 1 -2 1 -3 2v-123zM240 46l73 49v109c0 -1 -1 -1 -1 -2l-6 -6l-12 11l6 6c3 3 5 7 8 10l5 -5v119l-73 -49v-112h7l3 -15c-3 0 -6 -1 -9 -1h-1v-114zM416 46 -v242l-71 49v-88c3 1 5 1 8 2l4 -16c-4 -1 -8 -1 -12 -3v-137zM97 227c-3 -1 -11 -5 -14 -7l-11 12c4 3 8 6 12 8c3 2 6 3 9 4l5 -15c-2 -1 1 -1 -1 -2zM265 182c5 3 10 5 15 10l11 -12c-6 -6 -12 -10 -19 -13zM67 192v-1l-15 5v1c2 7 4 13 9 20l13 -9c-4 -5 -5 -10 -7 -16z -M166 210c3 -4 7 -8 11 -11l-11 -12c-4 4 -8 9 -12 13l-3 3l12 11c1 -1 2 -3 3 -4zM376 218l-11 12l10 10l-10 10l11 12l10 -11l11 11l11 -12l-10 -10l10 -10l-11 -12l-11 11z" /> - <glyph glyph-name="ion-medkit" unicode="" -d="M440 304c4 0 8 -4 8 -8v-288c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v288c0 4 4 8 8 8h120v31c1 28 22 49 51 49h45h45c30 0 50 -21 51 -49v-31h120zM160 331v-27h128v27v1v1c0 10 -9 19 -19 19h-45h-45c-10 0 -19 -9 -19 -19v-1v-1zM320 128v64h-64v64h-64v-64h-64v-64 -h64v-64h64v64h64z" /> - <glyph glyph-name="ion-merge" unicode="" horiz-adv-x="384" -d="M320 224c35 0 64 -29 64 -64s-29 -64 -64 -64c-24 0 -44 13 -55 32h-10c-61 0 -115 25 -159 74v-115c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -19 -8 -37 -22 -49 -c4 -9 17 -35 37 -58c32 -35 70 -53 112 -53h10c11 19 31 32 55 32zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 128c18 0 32 14 32 32s-14 32 -32 32 -s-32 -14 -32 -32s14 -32 32 -32z" /> - <glyph glyph-name="ion-mic-a" unicode="" horiz-adv-x="288" -d="M0 210c0 10 9 19 20 19s19 -9 19 -19v-14c0 -28 12 -53 31 -72s45 -31 74 -31s55 12 74 31s31 44 31 72v14c0 10 8 19 19 19s20 -9 20 -19v-14c0 -66 -46 -120 -108 -136c-1 0 -3 -1 -4 -1c-6 -2 -10 -7 -12 -13v-58c0 -11 -9 -20 -20 -20v0c-11 0 -20 9 -20 20v58 -c-2 6 -6 11 -12 13c-1 0 -3 1 -4 1c-62 16 -108 70 -108 136v14zM67 340c0 42 34 76 77 76s78 -34 78 -76v-144c0 -42 -35 -75 -78 -75s-77 33 -77 75v144z" /> - <glyph glyph-name="ion-mic-b" unicode="" horiz-adv-x="160" -d="M80 416c35 0 65 -23 76 -59c6 -18 4 -45 2 -55s-8 -20 -14 -28c-3 -4 -7 -7 -11 -9c-1 0 -1 -1 -2 -1c-3 -1 -6 -2 -10 -3c-12 -3 -25 -5 -39 -5v0h-1h-1v0c-14 0 -29 2 -41 5c-4 1 -7 2 -10 3c-1 0 -1 1 -2 1c-4 2 -8 5 -11 9c-6 8 -12 18 -14 28s-4 37 2 55 -c11 36 41 59 76 59zM119 247c6 0 12 -5 12 -12v-2c-5 -67 -18 -241 -19 -252c0 0 -3 -13 -32 -13v0c-29 0 -32 13 -32 13c-1 11 -13 185 -18 252v2c0 7 5 12 11 12h1c1 0 1 -1 2 -1c2 0 4 -1 6 -1c9 -2 21 -2 31 -2s20 0 29 2c2 0 4 1 6 1c1 0 1 1 2 1h1zM90 166v33 -c0 6 -4 11 -10 11s-10 -5 -10 -11v-33c0 -6 4 -11 10 -11s10 5 10 11z" /> - <glyph glyph-name="ion-mic-c" unicode="" horiz-adv-x="256" -d="M201 416c30 0 55 -23 55 -52v-28h-59v-37h59v-43h-59v-37h59v-43h-59v-37h59v-42c0 -29 -25 -52 -55 -52h-30v-77h-86v77h-30c-30 0 -55 23 -55 52v42h152v37h-152v43h152v37h-152v43h152v37h-152v28c0 29 25 52 55 52h146z" /> - <glyph glyph-name="ion-minus-circled" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-256v-32h256z" /> - <glyph glyph-name="ion-minus-round" unicode="" horiz-adv-x="384" -d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322z" /> - <glyph glyph-name="ion-minus" unicode="" horiz-adv-x="384" -d="M0 160v64h384v-64h-384z" /> - <glyph glyph-name="ion-model-s" unicode="" horiz-adv-x="512" -d="M509 57v-8v0v-1v-3v0c0 -3 -1 -5 -1 -7c-1 -12 -2 -18 -6 -20c-3 -2 -6 -2 -10 -2h-43s-10 1 -11 16v8c20 1 39 1 52 0c10 0 13 0 16 6c2 3 2 7 3 11zM3 57c1 -4 1 -8 3 -11c3 -6 6 -6 16 -6c13 1 32 1 52 0v-8c-1 -15 -8 -16 -11 -16h-43s-7 0 -10 2c-4 2 -6 8 -7 20v7 -v0v3v1v0v8zM512 151c0 -31 -2 -58 -2 -68c0 -4 0 -11 -1 -18c-1 -4 -1 -8 -3 -11c-3 -6 -6 -6 -16 -6c-13 1 -32 1 -52 0c-13 0 -27 -2 -39 -2c-30 -1 -21 4 -34 4s-63 -2 -109 -2s-97 2 -110 2s-4 -5 -34 -4c-12 0 -25 2 -38 2c-20 1 -39 1 -52 0c-10 0 -13 0 -16 6 -c-2 3 -2 7 -3 11c-1 7 -1 14 -1 18c0 10 -2 37 -2 68s4 61 6 64c1 2 8 9 26 21s17 10 20 18c-3 1 -5 3 -7 3c-4 0 -4 -3 -12 -3s-24 1 -28 5c-4 3 -5 5 -5 8s2 9 5 13s19 6 27 7s10 0 12 -1c4 -2 3 -22 3 -22l9 -1c5 13 12 41 24 62c13 23 26 30 32 32s10 2 48 6s69 5 96 5 -s58 -1 96 -5s42 -4 48 -6s19 -9 32 -32c12 -21 19 -49 24 -62l9 1s-1 20 3 22c2 1 4 2 12 1s24 -3 27 -7s5 -10 5 -13s-1 -4 -5 -8s-20 -5 -28 -5s-8 3 -12 3c-2 0 -4 -2 -7 -3c3 -8 2 -6 20 -18s25 -19 26 -21c2 -3 6 -33 6 -64zM86 303c-5 -11 -11 -33 -10 -36 -s-1 -5 15 -4s117 3 165 3s149 -2 165 -3s14 1 15 4s-5 25 -10 36s-17 31 -26 37c-2 1 -17 7 -54 9c-34 2 -72 3 -90 3s-56 -1 -90 -3c-37 -2 -52 -8 -54 -9c-7 -4 -21 -26 -26 -37zM123 178c7 2 11 2 11 2s-17 16 -48 25s-49 11 -66 10c0 0 -3 -16 0 -27s8 -10 16 -12 -s13 -5 16 -4s7 4 12 4s29 -4 38 -4s14 4 21 6zM358 99c15 2 34 19 21 33c-18 19 -15 19 -55 24c-35 4 -61 4 -68 4s-33 0 -68 -4c-40 -5 -37 -5 -55 -24c-13 -14 6 -31 21 -33c14 -2 74 -3 102 -3s88 1 102 3zM492 188c3 11 0 27 0 27c-17 1 -35 -1 -66 -10s-48 -26 -48 -26 -s4 1 11 -1s12 -6 21 -6s33 4 38 4s9 -3 12 -4s8 2 16 4s13 1 16 12z" /> - <glyph glyph-name="ion-monitor" unicode="" -d="M437 384c6 0 11 -5 11 -11v-266c0 -6 -5 -11 -11 -11h-426c-6 0 -11 5 -11 11v266c0 6 5 11 11 11h426zM416 128v224h-384v-224h384zM270 0h-92c-28 0 -42 3 -30 12s30 16 30 23c0 4 1 45 1 45h45h45s1 -41 1 -45c0 -7 18 -14 30 -23s-2 -12 -30 -12z" /> - <glyph glyph-name="ion-more" unicode="" horiz-adv-x="384" -d="M50 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM192 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM334 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48z" /> - <glyph glyph-name="ion-mouse" unicode="" horiz-adv-x="256" -d="M128 416h-1h5h-4zM251 255c2 1 2 1 4 1h1v-176c0 -37 -21 -71 -53 -91c-5 -3 -9 -5 -14 -7v-1v0c-18 -9 -39 -13 -61 -13c-71 0 -128 50 -128 112v176h1c2 0 3 0 5 -1v0c34 -13 76 -23 122 -23s88 10 122 23h1zM189 -18c5 2 10 4 14 7c-5 -3 -9 -5 -14 -7v0v-1v1v0z -M203 -11c-4 -3 -9 -5 -14 -7c5 2 9 4 14 7zM132 416c69 -2 124 -51 124 -112v-23c-2 -2 -4 -4 -6 -5c-1 -1 -3 0 -4 -1c-23 -10 -50 -16 -82 -19h-1h-2c-11 0 -17 0 -17 10v86c0 9 -7 16 -16 16s-16 -7 -16 -16v-85c0 -11 -6 -11 -17 -11h-2c-32 3 -61 9 -84 19v0 -c-1 0 -1 1 -2 1c-3 1 -5 3 -7 5v23c0 61 57 111 127 112h5z" /> - <glyph glyph-name="ion-music-note" unicode="" horiz-adv-x="384" -d="M362 416c12 0 22 -9 22 -21v-303s-3 -43 -12 -55v0c-9 -15 -25 -21 -43 -21h-37c-28 0 -52 20 -52 48s24 48 52 48h60v192l-208 -38v-232c0 -8 -3 -27 -13 -41c-1 -2 -2 -3 -3 -5c0 -1 -1 -1 -2 -2v0c-9 -11 -23 -18 -38 -18h-37c-28 0 -51 20 -51 48s23 48 51 48v0h61 -v286c1 14 13 28 27 32l218 33s3 1 5 1z" /> - <glyph glyph-name="ion-navicon-round" unicode="" horiz-adv-x="384" -d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 352c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 96c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32 -h322z" /> - <glyph glyph-name="ion-navicon" unicode="" horiz-adv-x="320" -d="M0 175v32h320v-32h-320zM0 271v32h320v-32h-320zM0 79v32h320v-32h-320z" /> - <glyph glyph-name="ion-navigate" unicode="" -d="M448 416l-192 -448v256h-256z" /> - <glyph glyph-name="ion-network" unicode="" horiz-adv-x="384" -d="M384 352c0 -24 -13 -44 -32 -55v-93l-128 -64v-53c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v53l-128 64v93c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-53l96 -48l96 48v53c-19 11 -32 31 -32 55 -c0 35 29 64 64 64s64 -29 64 -64zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM192 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 320c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> - <glyph glyph-name="ion-no-smoking" unicode="" -d="M328 144v48h16v-48h-16zM80 144v48h90l48 -48h-138zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 9 -35 15h-1c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2 -c12 -4 24 -9 35 -15v0zM224 22c37 0 72 12 100 32l-238 238c-20 -28 -32 -63 -32 -100c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2zM362 93c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2 -c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -71 -12 -99 -32zM320 150l-42 42h42v-42zM352 144v48h16v-48h-16zM328 235c16 -7 16 -27 16 -34v-1h-16v1c0 8 -1 17 -7 20c-4 2 -13 4 -39 4h-3c-13 0 -24 0 -33 13c-5 8 -5 19 -2 29c-4 1 -8 1 -12 3c-17 7 -26 20 -26 38 -c0 33 27 44 39 44v-16c-1 0 -23 -2 -23 -28c0 -11 5 -19 16 -23c9 -4 18 -3 18 -3c3 0 6 -2 7 -5s2 -6 0 -8c-5 -7 -7 -18 -4 -22c4 -6 7 -6 20 -6h3c24 0 37 -2 46 -6zM368 200v0h-16c0 28 -4 41 -7 46c-6 10 -14 14 -25 14h-30c-3 0 -5 2 -6 4s-1 6 0 8c0 0 8 18 6 32 -c-1 8 -6 17 -27 17v16c24 0 40 -11 43 -30c2 -11 0 -23 -3 -31h17c16 0 30 -8 39 -22c6 -10 9 -28 9 -54z" /> - <glyph glyph-name="ion-nuclear" unicode="" -d="M176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM448 176c0 -27 -5 -53 -15 -78s-23 -47 -40 -66s-36 -35 -59 -48l-79 136c22 12 33 31 33 56h160zM224 240 -c-12 0 -23 -3 -33 -9l-80 138c35 20 73 31 113 31s78 -10 113 -30l-81 -139c-10 6 -21 9 -32 9zM160 176c0 -25 11 -44 33 -56l-79 -136c-35 20 -62 46 -83 80s-31 71 -31 112h160z" /> - <glyph glyph-name="ion-outlet" unicode="" -d="M338 416c61 0 110 -51 110 -113v-222c0 -62 -49 -113 -110 -113h-228c-61 0 -110 51 -110 113v222c0 62 49 113 110 113h228zM143 197v102c0 11 -9 21 -20 21h-23c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h23c11 0 20 9 20 20v1zM265 52v29 -c0 23 -18 42 -41 42s-41 -19 -41 -42v-29v0c0 -11 9 -20 20 -20h21h21c11 0 20 7 20 18v2zM368 197v102c0 11 -9 21 -20 21h-24c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h24c11 0 20 9 20 20v1z" /> - <glyph glyph-name="ion-paintbrush" unicode="" -d="M118 165c52 0 102 -41 90 -102c-11 -52 -54 -71 -90 -77c-30 -5 -100 0 -118 35c24 9 34 26 34 49c0 49 32 95 84 95zM436 388c13 -13 17 -30 5 -45l-154 -175c2 -9 1 -17 -3 -23l-50 -58v0v0c-2 -2 -4 -2 -6 0c-1 1 -1 2 -1 3v1c2 53 -41 87 -89 90v0h-2s-2 0 -2 1 -c-2 2 -2 4 0 6l59 49c6 4 14 4 23 2l175 154c15 12 32 8 45 -5zM134 188v0v0v0z" /> - <glyph glyph-name="ion-paintbucket" unicode="" horiz-adv-x="480" -d="M112 384l32 32l275 -276l-58 -12l-163 -160l-198 192l152 152zM309 160l-110 110l-110 -110h220zM419 140c0 0 61 -66 61 -99s-27 -60 -61 -60s-60 27 -60 60s60 99 60 99z" /> - <glyph glyph-name="ion-paper-airplane" unicode="" -d="M0 176l448 240l-112 -448l-112 112l-80 -112l-16 160zM319 31l80 323l-322 -173l83 -31l192 154l-128 -176z" /> - <glyph glyph-name="ion-paperclip" unicode="" horiz-adv-x="160" -d="M149 293c6 0 11 -5 11 -12v-195c0 -28 -10 -49 -24 -63c-15 -15 -36 -23 -56 -23c-40 0 -80 31 -80 88v234c0 24 11 44 29 54s39 11 57 0s29 -30 29 -54l-1 -225c0 -13 -3 -24 -9 -32s-16 -12 -25 -12c-17 0 -34 15 -34 44v173c0 6 6 12 12 12s11 -6 11 -12v-173 -c0 -14 5 -21 11 -21c2 0 5 2 7 4c3 4 5 10 5 17v225c0 15 -6 28 -17 34s-24 6 -35 0s-17 -19 -17 -34v-234c0 -44 29 -64 57 -64s57 19 57 63v195c0 6 6 11 12 11z" /> - <glyph glyph-name="ion-pause" unicode="" horiz-adv-x="256" -d="M96 12c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72c7 0 12 -5 12 -12v-360zM244 384c7 0 12 -5 12 -12v-360c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72z" /> - <glyph glyph-name="ion-person-add" unicode="" -d="M397 120h-42v51h-51v42h51v51h42v-51h51v-42h-51v-51zM384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27 -c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" /> - <glyph glyph-name="ion-person-stalker" unicode="" -d="M393 123c42 -16 52 -26 53 -33c2 -9 2 -90 2 -90h-98c0 18 0 71 -1 77c-1 10 -1 29 -55 50c-8 3 -14 5 -19 7c18 8 15 15 15 28c0 19 -9 11 -15 47c-2 14 -4 5 -9 28c-3 12 1 12 1 18s-1 10 -2 22c-1 14 11 52 57 52s59 -38 58 -52c-1 -12 -2 -16 -2 -22 -c-1 -6 4 -6 1 -18c-5 -23 -7 -14 -9 -28c-6 -36 -16 -28 -16 -47c0 -29 -2 -23 39 -39zM325 0h-163h-162s0 65 2 77c2 10 15 22 69 43c54 20 50 17 50 55c0 24 -12 8 -20 54c-3 18 -5 7 -11 36c-3 15 2 16 1 23s-2 14 -3 29c-2 19 15 67 74 67s77 -49 75 -67 -c-1 -15 -2 -22 -3 -29s5 -8 2 -23c-6 -29 -9 -18 -12 -36c-8 -46 -20 -30 -20 -54c0 -32 -2 -36 31 -48c6 -2 11 -4 19 -7c54 -21 67 -33 69 -43c1 -6 2 -28 2 -47v-30z" /> - <glyph glyph-name="ion-person" unicode="" horiz-adv-x="384" -d="M384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64 -c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" /> - <glyph glyph-name="ion-pie-graph" unicode="" -d="M1 192c0 5 -1 11 -1 16c0 115 93 208 208 208c5 0 11 -1 16 -1v-32v-191h-191h-32zM78 46c-26 32 -42 71 -45 114h223v223c43 -3 82 -19 114 -45c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78z" /> - <glyph glyph-name="ion-pin" unicode="" horiz-adv-x="224" -d="M188 220c20 -10 36 -31 36 -55c0 -17 -3 -21 -15 -21h-81l-12 -176h-8l-12 176h-81c-12 0 -15 5 -15 21c0 24 16 45 36 55v0c1 0 3 1 4 2c7 4 12 11 14 19l18 118v5c0 7 -4 10 -10 13v0c-1 0 -1 1 -2 1c-7 3 -12 9 -12 17c0 20 6 21 18 21h92c12 0 18 -1 18 -21 -c0 -8 -5 -14 -12 -17c-1 0 -1 -1 -2 -1v0c-6 -3 -10 -6 -10 -13v-5l18 -118c2 -8 7 -15 14 -19c1 -1 3 -2 4 -2v0z" /> - <glyph glyph-name="ion-pinpoint" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c32 32 51 75 55 120l-63 8v16l63 8c-4 45 -23 88 -55 120s-75 51 -120 55l-8 -63h-16l-8 63c-45 -4 -88 -23 -120 -55s-51 -75 -55 -120l63 -8v-16l-63 -8 -c4 -45 23 -88 55 -120s75 -51 120 -55l8 63h16l8 -63c45 4 88 23 120 55z" /> - <glyph glyph-name="ion-pizza" unicode="" horiz-adv-x="352" -d="M315 318c10 -4 12 -13 9 -20l-148 -330s-143 320 -148 331s2 16 9 19c39 18 90 28 139 28s96 -9 139 -28zM112 256c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM176 109c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM240 224 -c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM342 382c6 -3 10 -6 10 -13c0 -1 0 -3 -1 -5l-8 -19c-3 -5 -8 -9 -14 -9c-1 0 -3 1 -6 2c-41 18 -95 30 -147 30s-102 -11 -147 -30c-3 -1 -4 -2 -6 -2c-6 0 -11 4 -14 9l-8 19s-1 2 -1 5c0 8 6 12 10 14 -c49 21 107 33 166 33s118 -13 166 -34z" /> - <glyph glyph-name="ion-plane" unicode="" -d="M250 136c0 -7 1 -69 -6 -102c-1 -4 3 -4 5 -7l51 -33c2 -2 3 -8 3 -8l1 -18l-68 16l-12 -32l-12 32l-68 -16l1 18s0 6 2 8l52 33c2 3 6 3 5 7c-7 33 -6 95 -6 102s-8 5 -8 5l-62 -13l-128 -49c0 23 2 26 9 31l183 131s5 63 5 113c0 24 12 78 27 78s27 -54 27 -78 -c0 -53 5 -113 5 -113l183 -131c6 -4 9 -7 9 -31l-128 49l-62 13s-8 2 -8 -5z" /> - <glyph glyph-name="ion-planet" unicode="" horiz-adv-x="512" -d="M96 182c39 -24 85 -48 134 -69c44 -19 87 -35 126 -46c-27 -22 -62 -35 -100 -35c-85 0 -155 66 -160 150zM107 251c1 4 3 8 5 11c10 21 26 40 44 55c27 22 62 35 100 35c85 0 155 -66 160 -150v-10c0 -21 -4 -41 -11 -59c-1 -4 -3 -8 -5 -11c-6 1 -13 3 -19 5 -c-39 11 -82 26 -126 45c-56 24 -108 52 -148 79zM430 163c57 -35 87 -62 81 -82c-4 -12 -19 -17 -44 -17c-50 0 -136 23 -231 64c-141 61 -246 140 -235 175c4 12 20 20 44 17c22 -3 47 -9 73 -18c-8 -9 -8 -12 -14 -22c-23 5 -44 8 -59 8h-6c2 -2 5 -6 8 -9 -c11 -11 27 -24 46 -37c41 -29 97 -59 156 -85c44 -19 89 -35 128 -46c36 -10 68 -15 90 -15h6c-2 2 -5 6 -8 9c-10 10 -24 22 -41 34c4 11 5 12 6 24z" /> - <glyph glyph-name="ion-play" unicode="" horiz-adv-x="320" -d="M309 215c7 -6 11 -14 11 -23s-4 -17 -11 -23l-278 -166c-4 -2 -7 -3 -11 -3c-11 0 -20 9 -20 20v0v344v0c0 11 9 20 20 20c4 0 8 -1 11 -3z" /> - <glyph glyph-name="ion-playstation" unicode="" horiz-adv-x="512" -d="M400 245c0 -11 0 -22 -2 -33c-2 -10 -5 -20 -10 -28c-4 -7 -10 -13 -18 -17c-7 -4 -16 -6 -24 -6c-13 0 -31 4 -42 9v131v2c0 9 -7 17 -15 17h-1c-9 0 -16 -8 -16 -17v-3v-300l-80 26v358s28 -4 75 -18s67 -21 84 -31c8 -5 15 -11 21 -17c7 -7 13 -14 17 -23 -c8 -16 10 -33 11 -50zM87 90c-4 -2 -8 -3 -11 -6c-1 -1 -3 -3 -2 -5s4 -4 6 -5c6 -2 13 -3 19 -3c7 0 15 0 22 2c5 1 9 3 14 5c30 10 41 12 41 12v-42c-14 -2 -36 -4 -50 -4c-30 -1 -60 4 -88 13c-9 3 -19 6 -27 12c-4 3 -8 8 -10 13c-2 4 -1 9 1 13s5 8 9 11 -c9 6 18 10 28 14c8 4 17 7 26 10c35 12 111 37 111 37v-47s-62 -20 -89 -30zM512 102c0 -5 -2 -9 -5 -13c-6 -7 -14 -11 -22 -15s-17 -8 -26 -11c-54 -19 -171 -59 -171 -59v48s92 30 133 44c6 2 11 4 16 8c2 2 4 3 3 6c-1 2 -4 4 -6 5c-6 2 -13 3 -19 3 -c-10 0 -20 -2 -30 -5c-29 -10 -97 -32 -97 -32v49s45 14 67 16c8 1 23 1 31 1c26 0 54 -3 79 -11c5 -2 8 -3 14 -5c9 -3 18 -8 25 -14c4 -4 8 -9 8 -15z" /> - <glyph glyph-name="ion-plus-circled" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-112v112h-32v-112h-112v-32h112v-112h32v112h112z" /> - <glyph glyph-name="ion-plus-round" unicode="" horiz-adv-x="384" -d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-129v-129c0 -17 -14 -31 -32 -31s-32 14 -32 31v129h-129c-17 0 -31 14 -31 32s14 32 31 32h129v129c0 17 14 31 32 31s32 -14 32 -31v-129h129z" /> - <glyph glyph-name="ion-plus" unicode="" horiz-adv-x="384" -d="M384 224v-64h-160v-160h-64v160h-160v64h160v160h64v-160h160z" /> - <glyph glyph-name="ion-podium" unicode="" -d="M0 0v192h128v-192h-128zM160 0v288h128v-288h-128zM320 0v128h128v-128h-128z" /> - <glyph glyph-name="ion-pound" unicode="" -d="M93 96h-93v54h101l13 84h-99v54h107l22 128h64l-22 -128h106l22 128h63l-22 -128h93v-54h-102l-12 -84h99v-54h-107l-22 -128h-63l22 128h-107l-22 -128h-63zM177 234l-12 -84h106l12 84h-106v0z" /> - <glyph glyph-name="ion-power" unicode="" -d="M224 192c-18 0 -32 14 -32 32v160c0 18 14 32 32 32s32 -14 32 -32v-160c0 -18 -14 -32 -32 -32zM347 379c61 -40 101 -109 101 -187c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 78 40 147 101 187v0c5 3 11 5 17 5c18 0 32 -14 32 -32c0 -6 -2 -12 -5 -17 -c-2 -3 -4 -6 -7 -8c-1 -1 -3 -2 -4 -3c-8 -6 -16 -12 -23 -19c-30 -30 -47 -70 -47 -113s17 -83 47 -113s70 -47 113 -47s83 17 113 47s47 70 47 113s-17 83 -47 113c-7 7 -15 13 -23 19c-1 1 -3 2 -4 3c-3 2 -5 5 -7 8c-3 5 -5 11 -5 17c0 18 14 32 32 32c6 0 12 -2 17 -5 -v0z" /> - <glyph glyph-name="ion-pricetag" unicode="" -d="M439 187c12 -12 12 -31 0 -43l-165 -167c-11 -11 -30 -11 -42 -1l-3 3l-206 209l-6 5c-6 7 -9 15 -10 24v0v2v0l-7 98v4v0c0 12 4 24 13 33l49 49c8 9 20 13 31 13h4l100 -4v0c12 0 22 -4 30 -12v0l2 -2v0l210 -211v0v0zM112 256c26 0 48 22 48 48s-22 48 -48 48 -s-48 -22 -48 -48s22 -48 48 -48z" /> - <glyph glyph-name="ion-pricetags" unicode="" -d="M440 209c10 -11 11 -28 0 -39l-29 -29c11 11 10 28 0 39v0v0l-190 191v0l-1 1h-1c-8 7 -16 12 -27 12v0l-90 3h-4c-9 0 -19 -3 -26 -10l28 27c8 8 17 12 27 12h4l90 -4v0c11 0 19 -4 27 -11h1l1 -1v0l190 -191v0v0zM396 166v0c11 -11 11 -29 0 -40l-108 -109v1l-26 -27 -l-2 -2l-13 -13c-10 -10 -26 -10 -37 -1l-3 3l-186 188l-5 5c-5 6 -9 14 -10 22v0v2v0l-6 88v3v1c0 11 4 21 12 29l44 45l1 1l1 1c7 6 17 9 26 9h4l90 -3v0c11 0 19 -4 27 -11v0l2 -1v0l189 -191v0zM79 308c-12 -8 -21 -21 -21 -37c0 -24 19 -43 43 -43c16 0 29 9 37 21 -c4 7 7 14 7 22c0 24 -20 44 -44 44c-8 0 -15 -3 -22 -7z" /> - <glyph glyph-name="ion-printer" unicode="" -d="M392 320c28 0 56 -19 56 -55v-131c0 -31 -28 -54 -56 -54h-40v-112h-8h-8h-224h-11h-5v112h-40c-28 0 -56 24 -56 62v123c0 38 28 55 56 55h40v64h256v-64h40zM336 -16v176h-224v-176h224zM336 320v48h-224v-48h224zM384 256v16h-17v-16h17zM128 112v16h192v-16h-192z -M128 64v16h192v-16h-192zM128 16v16h192v-16h-192z" /> - <glyph glyph-name="ion-pull-request" unicode="" horiz-adv-x="384" -d="M64 384c35 0 64 -29 64 -64c0 -24 -13 -44 -32 -55v-178c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v178c-19 11 -32 31 -32 55c0 35 29 64 64 64zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM64 288 -c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM351 88c20 -11 33 -32 33 -56c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 23 12 44 31 55v156c0 16 -4 26 -11 33c-10 9 -26 12 -52 12v-64l-96 96l96 96v-64c42 1 74 -8 96 -29c21 -19 31 -46 31 -80v-155z -M320 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" /> - <glyph glyph-name="ion-qr-scanner" unicode="" horiz-adv-x="416" -d="M48 324v-68h-48v68c0 33 28 60 61 60h67v-48h-68c-7 0 -12 -5 -12 -12zM356 384c33 0 60 -27 60 -60v-68h-48v68c0 7 -6 12 -13 12h-67v48h68zM368 61v67h48v-67c0 -33 -27 -61 -60 -61h-68v49h68c7 0 12 5 12 12zM60 49h68v-49h-67c-33 0 -61 28 -61 61v67h48v-67 -c0 -7 5 -12 12 -12z" /> - <glyph glyph-name="ion-quote" unicode="" horiz-adv-x="384" -d="M128 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15zM352 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15z" /> - <glyph glyph-name="ion-radio-waves" unicode="" -d="M160 192c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM112 192c0 -18 5 -35 13 -50s19 -28 33 -37l-23 -25c-6 5 -13 10 -18 16c-25 26 -37 59 -37 96s12 70 37 96c5 6 12 11 18 16l23 -25c-14 -9 -25 -22 -33 -37s-13 -32 -13 -50zM336 192 -c0 18 -5 35 -13 50s-19 28 -33 37l23 25c6 -5 13 -10 18 -16c25 -26 37 -59 37 -96s-12 -70 -37 -96c-5 -6 -12 -11 -18 -16l-23 25c14 9 25 22 33 37s13 32 13 50zM32 192c0 -27 6 -53 17 -77s27 -43 47 -59l-23 -24c-6 5 -12 10 -17 16c-18 19 -31 41 -41 65 -c-10 25 -15 51 -15 79s5 54 15 79c10 24 23 46 41 65c5 6 11 11 17 16l23 -24c-10 -8 -18 -17 -26 -27s-14 -21 -20 -32s-10 -24 -13 -37s-5 -26 -5 -40zM416 192c0 27 -6 53 -17 77s-27 43 -47 59l23 24c6 -5 12 -10 17 -16c18 -19 31 -41 41 -65c10 -25 15 -51 15 -79 -s-5 -54 -15 -79c-10 -24 -23 -46 -41 -65c-4 -5 -10 -10 -17 -16l-23 24c20 16 36 35 47 59s17 50 17 77z" /> - <glyph glyph-name="ion-record" unicode="" horiz-adv-x="416" -d="M208 -16c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208s-93 -208 -208 -208z" /> - <glyph glyph-name="ion-refresh" unicode="" -d="M352 96l-104 112h74c-7 65 -64 112 -130 112c-71 0 -128 -57 -128 -128s57 -128 128 -128c28 0 53 8 75 24l6 5l43 -46l-7 -6c-34 -26 -74 -41 -117 -41c-91 0 -167 64 -187 149v0c0 1 -1 2 -1 3v1v2s-1 2 -1 3v1c0 1 -1 3 -1 4v0c-1 6 -2 13 -2 19v1v4v5v5v4v1 -c0 6 1 13 2 19v0c0 1 1 3 1 4v1c0 1 1 1 1 2v3v1c0 1 1 2 1 3v0c20 85 96 149 187 149v0v0c11 0 21 -1 31 -3h2h2c57 -10 106 -47 133 -96c13 -23 21 -49 23 -77h65z" /> - <glyph glyph-name="ion-reply-all" unicode="" horiz-adv-x="416" -d="M257 256c153 0 159 -208 159 -208c-51 93 -91 102 -159 102v-92l-152 134l152 144v-80zM0 192l144 136v-57l-82 -79l82 -68v-58z" /> - <glyph glyph-name="ion-reply" unicode="" horiz-adv-x="384" -d="M384 48c-53 93 -122 102 -224 102v-92l-160 134l160 144v-80c187 0 224 -208 224 -208z" /> - <glyph glyph-name="ion-ribbon-a" unicode="" horiz-adv-x="352" -d="M272 416l80 -96l-64 -134c-24 30 -59 49 -99 53zM80 416l83 -177c-40 -4 -75 -23 -99 -53l-64 134zM189 416h67l-53 -112h-27h-27l-53 112h80h13zM176 224c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM176 0c53 0 96 43 96 96 -s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM176 184c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88z" /> - <glyph glyph-name="ion-ribbon-b" unicode="" horiz-adv-x="384" -d="M192 376c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88zM192 416c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM192 192c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM83 194c26 -30 65 -50 109 -50 -c12 0 23 1 34 4l-34 -74l-48 -106l-48 80h-96zM301 194l83 -146h-96l-48 -80l-40 88l45 98c22 9 41 23 56 40z" /> - <glyph glyph-name="ion-sad-outline" unicode="" -d="M367 164c3 -9 -2 -17 -11 -19c-3 -1 -7 0 -10 1c-5 2 -9 5 -11 10s-4 12 -13 15s-14 0 -19 -3c-4 -3 -10 -3 -15 -1c-3 1 -7 3 -9 6c-6 8 -3 17 5 22c15 9 29 13 49 6s29 -21 34 -37zM165 195c8 -5 10 -14 4 -22c-2 -3 -6 -5 -9 -6c-5 -2 -11 -2 -15 1c-5 3 -10 6 -19 3 -s-11 -10 -13 -15s-6 -8 -11 -10c-3 -1 -7 -2 -10 -1c-9 2 -14 10 -11 19c5 16 14 30 34 37s35 3 50 -6zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56 -s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM317 89c5 -7 3 -17 -4 -22c-3 -2 -6 -3 -9 -3c-5 0 -10 3 -13 7c0 0 -19 25 -67 25s-67 -25 -67 -25c-3 -4 -8 -7 -13 -7c-3 0 -6 1 -9 3c-7 5 -9 15 -4 22c1 2 28 39 93 39 -s92 -37 93 -39z" /> - <glyph glyph-name="ion-sad" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM113 156c2 5 4 12 13 15s14 0 19 -3c4 -3 10 -3 15 -1c3 1 7 3 9 6c6 8 4 17 -4 22c-15 9 -30 13 -50 6s-29 -21 -34 -37c-3 -9 2 -17 11 -19c3 -1 7 0 10 1c5 2 9 5 11 10z -M313 67c7 5 9 15 4 22c-1 2 -28 39 -93 39s-92 -37 -93 -39c-5 -7 -3 -17 4 -22c3 -2 6 -3 9 -3c5 0 10 3 13 7c0 0 19 25 67 25s67 -25 67 -25c3 -4 8 -7 13 -7c3 0 6 1 9 3zM356 145c9 2 14 10 11 19c-5 16 -14 30 -34 37s-34 3 -49 -6c-8 -5 -11 -14 -5 -22 -c2 -3 6 -5 9 -6c5 -2 11 -2 15 1c5 3 10 6 19 3s11 -10 13 -15s6 -8 11 -10c3 -1 7 -2 10 -1z" /> - <glyph glyph-name="ion-scissors" unicode="" horiz-adv-x="384" -d="M341 332c-13 -33 -117 -172 -117 -172l-32 -32s-31 -13 -50 -43s-33 -71 -33 -71v0c-7 -26 -28 -46 -53 -46c-31 0 -56 29 -56 64s25 64 56 64c13 0 25 -5 34 -13c2 -1 3 -3 4 -4v0l2 -2c4 -4 7 -2 14 11c8 15 17 35 27 54s38 59 38 59l17 23l144 192 -c23 -20 18 -51 5 -84zM56 0c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32zM192 160c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM143 183c-30 41 -90 125 -100 149c-13 33 -18 64 5 84l134 -178l-3 -4v0v0l-17 -23v-1v0 -c-1 -1 -10 -13 -19 -27zM328 96c31 0 56 -29 56 -64s-25 -64 -56 -64c-25 0 -47 20 -54 46v0s-13 41 -32 71c-11 17 -26 28 -36 35l29 29l1 1h1c1 1 1 2 2 4c3 -4 5 -9 7 -12c10 -19 20 -39 28 -54c7 -13 10 -15 14 -11c1 1 0 1 1 2h1c1 1 2 3 4 4c9 8 21 13 34 13zM328 0 -c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32z" /> - <glyph glyph-name="ion-search" unicode="" horiz-adv-x="384" -d="M381 61c4 -4 4 -10 0 -14l-43 -44c-2 -2 -5 -3 -8 -3s-5 1 -7 3l-84 86c-25 -15 -52 -23 -80 -23c-87 0 -159 71 -159 159s72 159 159 159s158 -71 158 -159c0 -27 -7 -54 -21 -78zM159 322c-53 0 -97 -43 -97 -97s44 -97 97 -97s96 43 96 97s-43 97 -96 97z" /> - <glyph glyph-name="ion-settings" unicode="" horiz-adv-x="416" -d="M402 310c10 -6 15 -25 14 -36c-1 -17 -7 -36 -25 -54c-1 -1 -2 -1 -3 -2c-26 -25 -62 -30 -94 -20c-1 1 -2 2 -4 2c-5 1 -10 0 -13 -4l-36 -39c52 -50 107 -96 107 -96c2 -2 2 -5 0 -7l-50 -51c-2 -2 -5 -2 -7 0c0 0 -44 55 -93 107l-92 -98c-14 -16 -40 -15 -55 0 -c-15 16 -15 42 1 56l97 93l-12 12c-2 2 -3 7 -1 10l2 5c-25 26 -36 33 -56 32s-36 -13 -48 -28s-10 -52 -8 -62s-7 -6 -12 0c-9 10 -23 50 -6 93s42 69 48 75s16 15 24 21s21 -1 27 5c4 4 5 11 5 16l-4 4c-2 2 -2 5 0 7l31 31c2 2 5 2 7 0l50 -50c2 -2 2 -6 0 -8l-31 -31 -c-2 -2 -5 -2 -7 0l-8 9c-7 0 -15 -5 -17 -10c-3 -6 -6 -21 -3 -33c3 -11 13 -20 36 -43l5 3c4 2 8 1 10 -1c0 0 1 -2 13 -14l38 37c4 3 5 7 4 13c0 2 0 4 -1 5c-10 33 -6 69 19 96l2 2c18 18 36 25 53 26c10 1 30 -5 35 -15l-48 -48l-2 -3l-1 -1c-1 -1 -1 -2 -1 -4 -s0 -3 1 -5l2 -2l2 -2l41 -42l3 -3l1 -1c1 -1 2 -1 4 -1s3 0 4 1l2 1l2 3z" /> - <glyph glyph-name="ion-share" unicode="" horiz-adv-x="384" -d="M288 70v59l38 31v-109c0 -11 -8 -19 -19 -19h-288c-11 0 -19 9 -19 19v218c0 11 8 19 19 19h120c-29 -18 -43 -38 -43 -38h-58v-180h250zM256 224c-84 0 -116 -24 -160 -96c0 0 5 164 160 164v60l128 -96l-128 -96v64z" /> - <glyph glyph-name="ion-shuffle" unicode="" -d="M338 267c-52 0 -83 -43 -120 -92c-41 -55 -88 -120 -171 -120h-47v63h47c52 0 84 47 121 96c41 55 87 116 170 116h29v54l81 -81l-81 -84v48h-29zM121 230c-21 21 -42 35 -74 36c-34 1 -47 0 -47 0v63h47c48 0 83 -20 113 -48c-10 -12 -19 -24 -28 -36 -c-4 -5 -7 -10 -11 -15zM367 118v47l81 -84l-81 -81v54h-29c-50 0 -87 23 -117 53c12 14 22 28 32 41c2 3 5 6 7 9c22 -24 46 -39 78 -39h29z" /> - <glyph glyph-name="ion-skip-backward" unicode="" horiz-adv-x="384" -d="M12 352h8c7 0 12 -5 12 -12v-113l187 122c2 2 5 3 8 3c8 0 16 -7 16 -17v-63l118 78c2 2 5 2 8 2c8 0 15 -7 15 -17v-286c0 -10 -7 -17 -15 -17c-3 0 -5 1 -8 3l-118 78v-64c0 -10 -8 -17 -16 -17c-3 0 -5 1 -8 3l-187 122v-113c0 -7 -5 -12 -12 -12h-8 -c-7 0 -12 5 -12 12v296c0 7 5 12 12 12z" /> - <glyph glyph-name="ion-skip-forward" unicode="" horiz-adv-x="384" -d="M372 352c7 0 12 -5 12 -12v-296c0 -7 -5 -12 -12 -12h-8c-7 0 -12 5 -12 12v113l-187 -122c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v64l-119 -78c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v286c0 10 7 17 15 17c3 0 6 0 8 -2l119 -78v63c0 10 7 17 15 17c3 0 6 -1 8 -3 -l187 -122v113c0 7 5 12 12 12h8z" /> - <glyph glyph-name="ion-social-android-outline" unicode="" horiz-adv-x="352" -d="M272 240h-192v-60v-89h24h16v-15v-52c0 -4 4 -8 8 -8s8 4 8 8v52v15h17h49h15v-15v-52c0 -2 1 -4 3 -6h1v0c1 -1 2 -2 4 -2h1v0v0c4 0 7 4 7 8v52v15h17h22v89v60zM288 256v0v-76v-90c0 -7 -3 -15 -10 -15h-29v-51c0 -13 -10 -24 -23 -24v0h-1c-6 0 -11 2 -15 5 -c-5 4 -9 11 -9 19v51h-49v-51c0 -13 -11 -24 -24 -24s-24 11 -24 24v51h-28c-7 0 -12 8 -12 15v90v76h224zM328 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM328 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96 -c0 13 11 24 24 24zM24 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM24 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM175 354c-14 0 -27 -3 -38 -6l-10 -4c-28 -12 -40 -37 -44 -56h186 -c-4 18 -15 43 -44 56l-10 4c-12 4 -25 6 -39 6v0v0h-1zM105 384v0h1l19 -23c13 5 30 9 50 9h1c20 0 36 -4 50 -9l20 23v0s1 -1 2 -1c1 -1 2 -3 2 -3l-19 -22c48 -21 56 -71 57 -86h-224c1 15 9 66 57 87l-19 22c0 1 1 1 2 2zM127 309c-7 0 -14 6 -14 13s6 14 14 14 -c7 0 13 -7 13 -14s-5 -13 -13 -13zM225 309c-7 0 -13 6 -13 13s5 14 13 14c7 0 13 -7 13 -14s-6 -13 -13 -13z" /> - <glyph glyph-name="ion-social-android" unicode="" horiz-adv-x="352" -d="M64 180v76h224v-76v-90c0 -7 -4 -14 -11 -14h-28v-52c0 -13 -11 -24 -24 -24v0h-1c-6 0 -10 2 -14 5c-5 4 -9 11 -9 19v52h-49v-52c0 -13 -11 -24 -24 -24s-24 11 -24 24v52h-29c-7 0 -11 7 -11 14v90zM328 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24 -s-24 11 -24 24v96c0 13 11 24 24 24zM24 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM231 359c48 -21 56 -72 57 -87h-224c1 15 8 66 56 87l-18 22c0 1 0 1 1 2s3 1 3 1l19 -23c14 5 31 9 51 9s36 -4 50 -9l20 23c0 1 1 0 2 -1 -l2 -2zM127 309c8 0 13 6 13 13s-6 14 -13 14c-8 0 -14 -7 -14 -14s7 -13 14 -13zM225 309c7 0 14 6 14 13s-7 14 -14 14c-8 0 -13 -7 -13 -14s6 -13 13 -13z" /> - <glyph glyph-name="ion-social-angular-outline" unicode="" -d="M224 384l-188 -69l39 -230l149 -80l149 80l39 230zM224 416v0l224 -80l-46 -272l-178 -96l-178 96l-46 272zM312 96l-27 56h-122l-27 -56h-40l128 280l128 -280h-40zM182 192h84l-42 89z" /> - <glyph glyph-name="ion-social-angular" unicode="" -d="M182 192l42 89l42 -89h-84zM224 416l224 -80l-46 -272l-178 -96l-178 96l-46 272zM312 96h40l-128 280l-128 -280h40l27 56h122z" /> - <glyph glyph-name="ion-social-apple-outline" unicode="" horiz-adv-x="320" -d="M238 278c-15 0 -26 -4 -37 -8c-10 -4 -21 -8 -35 -8s-25 4 -37 8c-11 4 -22 8 -34 8c-11 0 -23 -3 -34 -10c-12 -7 -23 -18 -31 -31c-12 -18 -16 -47 -13 -77c3 -34 16 -69 35 -99c13 -21 30 -45 50 -45h1c8 0 13 3 20 6c10 5 23 10 44 10v0c21 0 34 -5 44 -10 -c7 -3 12 -6 19 -6v0c22 0 44 35 52 48c8 12 12 20 17 31c-12 7 -22 16 -30 28c-10 15 -17 33 -18 52c-1 18 2 37 10 53c6 12 14 22 24 30c-14 13 -31 20 -47 20zM238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1 -c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16zM214 364c-11 -5 -21 -13 -28 -22c-4 -5 -9 -13 -13 -23c-1 -3 -2 -6 -2 -9c11 4 21 11 28 21c4 5 12 18 15 33z -M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" /> - <glyph glyph-name="ion-social-apple" unicode="" horiz-adv-x="320" -d="M238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16z -M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" /> - <glyph glyph-name="ion-social-bitcoin-outline" unicode="" horiz-adv-x="320" -d="M184 400h-8v-48v-16h-16h-32h-16v16v48h-9v-48v-16h-16h-72v-16h13c11 0 19 0 25 -3s10 -7 13 -13s3 -8 3 -20v-178c0 -11 0 -18 -3 -24v-1c-1 -3 -4 -10 -12 -14h-1c-5 -3 -8 -3 -17 -3h-13l-3 -16h67h16v-16v-48h9v48v16h16h32h16v-16v-48h8v49v16h15c23 1 41 5 55 10 -c16 6 28 15 37 26c8 11 12 29 13 42c1 14 -1 29 -4 36s-8 16 -21 23c-7 4 -14 6 -21 8l-46 11l43 19c4 2 7 4 12 9c6 5 9 12 11 16c2 5 4 13 3 22c-1 17 -4 29 -10 37c-7 9 -17 16 -31 21c-12 5 -24 7 -41 8l-15 1v15v47zM200 416v0v-63c20 -1 32 -4 45 -9 -c16 -6 29 -15 38 -27s12 -28 13 -45c1 -10 0 -20 -3 -28s-8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 24 -18 29 -30c4 -10 6 -30 5 -44c-1 -16 -6 -37 -16 -51c-11 -14 -26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-65h-40v64h-32v-64h-41v64h-87l8 48h28 -c9 0 8 1 11 2s4 3 5 6s1 9 1 18v178c0 9 0 10 -1 12s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40zM160 298v-74h-32v74h32zM160 176v0v-90h-32v90h32zM200 294v0c6 -2 10 -7 14 -12c4 -6 6 -13 6 -21s-2 -15 -7 -21c-4 -5 -7 -9 -13 -12v66zM200 174v0 -c5 -1 8 -1 12 -3c8 -3 14 -7 19 -13s8 -15 8 -24c0 -11 -2 -19 -10 -26s-13 -11 -23 -15c-2 -1 -4 0 -6 -1v82z" /> - <glyph glyph-name="ion-social-bitcoin" unicode="" horiz-adv-x="320" -d="M314 169c4 -10 7 -30 6 -44c-1 -16 -5 -37 -16 -51s-26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-64h-40v64h-32v-64h-41v64h-87l9 48h26c9 0 9 0 12 1s4 4 5 7s2 8 2 17v173c0 9 -1 16 -2 18s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40v-64c20 -1 33 -4 46 -9 -c16 -6 28 -15 37 -27s12 -28 13 -45c1 -10 0 -20 -3 -28c-2 -8 -8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 23 -18 28 -30zM128 298v-74h32v74h-32zM128 86h32v90h-32v-90zM200 294v-66c6 3 9 7 13 12c5 6 7 12 7 20s-2 15 -6 21c-4 5 -8 11 -14 13z -M229 107c8 7 10 15 10 26c0 9 -3 19 -8 25s-12 10 -20 13c-4 2 -6 2 -11 3v-82c2 0 5 1 7 2c10 4 14 6 22 13z" /> - <glyph glyph-name="ion-social-buffer-outline" unicode="" horiz-adv-x="384" -d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM183 366l-156 -75l156 -75c2 -1 5 -1 9 -1s7 0 9 1l156 75l-156 75c-2 1 -5 2 -9 2s-7 -1 -9 -2zM377 200c9 -4 9 -12 0 -16l-169 -81 -c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM201 117l156 75l-19 9l-123 -59c-6 -3 -15 -5 -23 -5s-17 2 -23 5l-123 59l-19 -9l156 -75 -c2 -1 5 -2 9 -2s7 1 9 2zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17zM201 18l156 75l-19 9 -l-123 -60c-6 -3 -15 -4 -23 -4s-17 1 -23 4l-123 60l-19 -9l156 -75c2 -1 5 -2 9 -2s7 1 9 2z" /> - <glyph glyph-name="ion-social-buffer" unicode="" horiz-adv-x="384" -d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM377 200c9 -4 9 -12 0 -16l-169 -81c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0 -s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3 -c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17z" /> - <glyph glyph-name="ion-social-chrome-outline" unicode="" -d="M224 416c123 0 224 -101 224 -224s-101 -224 -224 -224s-224 101 -224 224s101 224 224 224zM224 371c-57 0 -109 -27 -141 -68l54 -93c8 40 43 72 87 72h155c-30 54 -89 89 -155 89zM291 192c0 37 -30 67 -67 67s-67 -30 -67 -67s30 -67 67 -67s67 30 67 67zM45 192 -c0 -91 67 -166 154 -177l54 93c-9 -3 -19 -6 -29 -6c-34 0 -61 18 -77 45v0l-78 135c-16 -27 -24 -58 -24 -90zM224 13c99 0 179 80 179 179c0 24 -4 46 -13 67h-108c19 -17 32 -40 32 -67c0 -17 -5 -32 -13 -45v0z" /> - <glyph glyph-name="ion-social-chrome" unicode="" -d="M157 192c0 37 30 67 67 67s67 -30 67 -67s-30 -67 -67 -67s-67 30 -67 67zM445 230c2 -12 3 -25 3 -38c0 -106 -74 -195 -174 -218c-10 -2 -20 -4 -30 -5c-7 -1 -13 -1 -20 -1c-8 0 -17 0 -25 1v0v0v0v1l102 177c8 13 13 28 13 45c0 27 -13 50 -32 67h156 -c3 -9 5 -19 7 -29v0c-2 10 -4 20 -7 29v0c3 -9 5 -19 7 -29v0zM224 103c10 0 20 2 29 5l-78 -135v0c-42 9 -79 30 -108 59c-42 41 -67 97 -67 160c0 31 6 61 18 88c7 16 16 31 26 45v0l103 -178c16 -27 43 -44 77 -44zM59 343v0v1c24 26 55 47 90 59c23 8 49 13 75 13 -c73 0 138 -36 179 -90h1c10 -14 18 -29 25 -44v0c-7 15 -15 30 -25 44h-1c10 -14 19 -29 26 -44h-205c-44 0 -79 -32 -87 -72z" /> - <glyph glyph-name="ion-social-codepen-outline" unicode="" -d="M356 244c5 -3 7 -6 7 -12v-81c0 -6 -3 -10 -8 -13c-41 -27 -82 -55 -123 -82c-6 -4 -11 -4 -17 0c-41 27 -81 55 -122 82c-5 3 -8 7 -8 13v80c0 6 3 11 8 14c41 27 81 54 122 81c6 4 11 4 17 0c41 -27 83 -55 124 -82zM236 296v-54c0 -1 1 -2 2 -3c16 -11 31 -21 47 -32 -c1 -1 3 -1 4 0l40 26zM212 295c0 0 -62 -41 -93 -62c14 -9 27 -17 40 -26c1 -1 3 -1 4 0c15 10 31 21 46 31c1 1 3 4 3 6v51zM109 211v-40l30 20zM212 87v53c0 1 -2 3 -3 4c-15 10 -31 21 -46 31c-2 1 -3 1 -5 0l-39 -26c31 -21 93 -62 93 -62zM227 165l39 26s-34 23 -40 27 -c-1 1 -4 0 -5 -1c-5 -3 -9 -6 -14 -9c-8 -6 -25 -17 -25 -17l39 -26c2 -1 4 -1 6 0zM236 87l93 62l-38 26c-2 2 -5 2 -7 0c-15 -10 -30 -21 -45 -31c-2 -2 -3 -3 -3 -6v-51zM338 171v40l-30 -20zM224 384c-51 0 -100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136 -s85 -56 136 -56s100 20 136 56s56 85 56 136s-20 100 -56 136s-85 56 -136 56zM224 416v0c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224z" /> - <glyph glyph-name="ion-social-codepen" unicode="" -d="M209 144c1 -1 3 -3 3 -4v-53s-62 41 -93 62l39 26c2 1 3 1 5 0c15 -10 31 -21 46 -31zM163 207c-1 -1 -3 -1 -4 0c-13 9 -26 17 -40 26c31 21 93 62 93 62v-51c0 -2 -2 -5 -3 -6c-15 -10 -31 -21 -46 -31zM238 239c-1 1 -2 2 -2 3v54l93 -63l-40 -26c-1 -1 -3 -1 -4 0 -c-16 11 -31 21 -47 32zM226 218c6 -4 40 -27 40 -27l-39 -26c-2 -1 -4 -1 -6 0l-39 26s17 11 25 17c5 3 9 6 14 9c1 1 4 2 5 1zM109 211l30 -20l-30 -20v40zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM363 151v81 -c0 6 -2 9 -7 12c-41 27 -83 55 -124 82c-6 4 -11 4 -17 0c-41 -27 -81 -54 -122 -81c-5 -3 -8 -8 -8 -14v-80c0 -6 3 -10 8 -13c41 -27 81 -55 122 -82c6 -4 11 -4 17 0c41 27 82 55 123 82c5 3 8 7 8 13zM284 175c2 2 5 2 7 0l38 -26l-93 -62v51c0 3 1 4 3 6 -c15 10 30 21 45 31zM338 171l-30 20l30 20v-40z" /> - <glyph glyph-name="ion-social-css3-outline" unicode="" horiz-adv-x="384" -d="M291 81l-99 -28l-98 28l-7 78h48l4 -40l53 -15v0v0l54 15l5 64h-112l-4 50h121l4 51h-184l-4 49h241zM0 416h384l-35 -403l-157 -45l-157 45zM319 37l30 347h-314l30 -347l127 -36z" /> - <glyph glyph-name="ion-social-css3" unicode="" horiz-adv-x="384" -d="M192 109v0zM0 416h384l-35 -403l-157 -45l-157 45zM291 81l22 252h-241l4 -49h184l-4 -51h-121l4 -50h112l-5 -64l-54 -15v0v0l-53 15l-4 40h-48l7 -78l98 -28z" /> - <glyph glyph-name="ion-social-designernews-outline" unicode="" -d="M259 302v-53l-65 103zM0 188zM297 352l151 -119v-201h-248l-200 156h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h41l-2 98l63 -98h36v84v80zM432 48v178l-119 92v1v-47v-83v-17h-15h-37h-9l-4 8l-33 50l1 -42v-16h-16h-41h-16v16v29c-3 -6 -7 -12 -12 -17 -c-8 -9 -18 -16 -30 -21s-24 -7 -38 -7h-16l159 -124h226zM59 298h-1h-3v-57h4c8 0 13 2 17 6c5 6 6 15 6 22c0 26 -12 29 -23 29zM59 314v0c25 0 39 -16 39 -45c0 -28 -14 -44 -40 -44h-19v89h20z" /> - <glyph glyph-name="ion-social-designernews" unicode="" -d="M258 303l1 -53l-64 102zM297 352l151 -118v-202h-248l-200 157v0h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h40l-2 99l64 -99h36v83v80zM98 270c0 -28 -14 -44 -40 -44h-19v89h19c26 0 40 -16 40 -45z" /> - <glyph glyph-name="ion-social-dribbble-outline" unicode="" horiz-adv-x="384" -d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM314 296c-17 -25 -47 -47 -85 -64c5 -10 9 -20 13 -31c33 3 75 4 110 2c-2 35 -16 68 -38 93zM192 352c-14 0 -26 -2 -39 -5c23 -23 43 -53 62 -87c34 14 62 33 79 55 -c-28 23 -63 37 -102 37zM120 334c-41 -21 -71 -58 -83 -103h25c44 0 85 6 121 17c-19 34 -40 63 -63 86zM32 200v-8c0 -40 15 -78 40 -106c24 45 67 83 122 106c4 2 8 3 14 4c-3 8 -6 16 -10 24c-40 -13 -88 -20 -138 -21c-9 0 -19 1 -28 1zM192 32c20 0 39 3 57 10 -c-3 25 -8 53 -15 79c-4 17 -10 33 -16 49c-7 -2 -13 -4 -17 -6c-48 -22 -86 -56 -107 -98c27 -21 61 -34 98 -34zM278 58c40 26 68 67 73 116c-30 2 -68 3 -99 0c4 -12 9 -25 12 -38c7 -27 11 -52 14 -78z" /> - <glyph glyph-name="ion-social-dribbble" unicode="" horiz-adv-x="384" -d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM192 32c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM242 201c-4 11 -8 21 -13 31c25 11 47 24 63 39c15 -19 26 -42 28 -67c-26 0 -55 -1 -78 -3z -M271 292c-15 -12 -34 -23 -56 -32c-12 22 -24 41 -38 59c5 1 10 1 15 1c30 0 57 -11 79 -28zM142 310c15 -18 28 -39 41 -62c-34 -10 -72 -16 -113 -17c11 36 38 65 72 79zM319 176c-4 -33 -21 -63 -46 -83c-3 14 -5 28 -9 43c-3 13 -8 26 -12 38c21 2 45 3 67 2zM194 192 -c-43 -18 -79 -46 -104 -78c-16 22 -26 49 -26 78v7c49 1 95 8 134 21c4 -8 7 -16 10 -24c-6 -1 -10 -2 -14 -4zM219 170c6 -16 11 -32 15 -49c4 -15 7 -31 10 -46c-16 -7 -34 -11 -52 -11c-31 0 -59 11 -81 29c22 30 53 54 90 71c4 2 11 4 18 6z" /> - <glyph glyph-name="ion-social-dropbox-outline" unicode="" horiz-adv-x="384" -d="M113 371l79 -66l-114 -71l-78 63zM27 295l52 -42l86 53l-53 46zM306 235l78 -63l-78 -51v-39l-114 -69l-114 68v39l-78 52l78 63l114 -71l-79 -66l-19 12v-20l98 -59l98 59v20l-19 -12l-79 66zM79 217l-52 -44l85 -55l53 44zM219 162l53 -44l85 56l-52 43zM384 297 -l-78 -63l-114 71l79 66zM219 305l86 -52l52 42l-85 56z" /> - <glyph glyph-name="ion-social-dropbox" unicode="" horiz-adv-x="384" -d="M113 371l79 -66l-114 -71l-78 63zM0 172l78 62l114 -70l-79 -66zM192 164l114 70l78 -62l-113 -74zM384 297l-78 -63l-114 71l79 66zM192 150l80 -66l34 22v-25l-114 -68l-114 68v25l34 -22z" /> - <glyph glyph-name="ion-social-euro-outline" unicode="" horiz-adv-x="320" -d="M214 384c-53 0 -91 -9 -115 -27c-22 -16 -33 -40 -33 -74v-11v-17h-16h-34v-16h34h16v-15v-48v-17h-16h-34v-16h34h16v-15v-27c0 -34 11 -58 33 -74c24 -18 62 -27 115 -27c31 0 59 2 88 8l-5 35c-30 -4 -55 -7 -80 -7c-36 0 -59 6 -74 19c-19 16 -21 40 -21 60v13v15h16 -h103l3 16h-106h-16v17v48v15h16h118l2 16h-120h-16v17v2c0 16 2 39 21 55c16 13 39 19 74 19c24 0 51 -3 80 -7l5 35c-29 6 -57 8 -88 8zM214 400v0c35 0 68 -3 106 -12l-9 -65c-37 6 -68 9 -94 9c-64 0 -79 -22 -79 -58v-3h139l-8 -48h-131v-48h124l-7 -48h-117v-12 -c0 -44 15 -63 79 -63c26 0 57 3 94 9l9 -65c-38 -9 -71 -12 -106 -12c-115 0 -164 41 -164 117v26h-50v48h50v48h-50v48h50v12c0 76 49 117 164 117z" /> - <glyph glyph-name="ion-social-euro" unicode="" horiz-adv-x="320" -d="M138 176h124l-7 -48h-117v-13c0 -44 15 -63 79 -63c26 0 56 3 93 9l10 -65c-38 -9 -71 -12 -106 -12c-115 0 -164 41 -164 117v27h-50v48h50v48h-50v48h50v11c0 76 49 117 164 117c35 0 68 -3 106 -12l-10 -65c-37 6 -67 9 -93 9c-64 0 -79 -22 -79 -58v-2h138l-7 -48 -h-131v-48z" /> - <glyph glyph-name="ion-social-facebook-outline" unicode="" horiz-adv-x="192" -d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38zM170 208l4 32h-45h-17v17v37c0 10 1 21 9 30c10 11 25 12 37 12h18v32h-40c-28 0 -49 -6 -60 -18c-10 -11 -15 -27 -15 -51v-43v-16h-15h-30v-32h30h15v-16 -v-176h51v176v16h17h41z" /> - <glyph glyph-name="ion-social-facebook" unicode="" horiz-adv-x="192" -d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38z" /> - <glyph glyph-name="ion-social-foursquare-outline" unicode="" horiz-adv-x="320" -d="M302 284c-12 -60 -25 -131 -27 -138zM281 416c35 0 45 -20 37 -57c-3 -16 -10 -44 -16 -75l-27 -137c-3 -13 -8 -35 -39 -35h-72c-3 0 -3 0 -6 -3c-2 -2 -115 -133 -115 -133c-9 -10 -23 -8 -28 -6s-15 8 -15 26v380s10 40 43 40h238zM280 352c6 31 6 32 -24 32h-195 -c-29 0 -29 -3 -29 -28v-297c0 -38 1 -38 3 -38s10 8 29 31c0 0 78 89 79 90c2 2 3 2 6 2h62c26 0 28 6 33 31c4 21 36 177 36 177zM302 284c6 31 13 59 16 75zM233 352c5 0 9 -5 8 -11l-8 -44c-1 -4 -6 -9 -11 -9h-75c-8 0 -8 -5 -8 -13v-6c0 -8 0 -13 8 -13h64 -s11 -6 10 -12s-11 -51 -12 -54s-4 -9 -11 -9h-62c-9 0 -11 -1 -17 -8l-54 -63c-1 -1 -1 -1 -1 0v231c0 5 5 11 11 11h158z" /> - <glyph glyph-name="ion-social-foursquare" unicode="" horiz-adv-x="320" -d="M281 416c35 0 45 -20 37 -57c-10 -49 -40 -202 -43 -213c-3 -13 -8 -34 -39 -34h-72c-3 0 -3 0 -6 -3c-2 -2 -115 -133 -115 -133c-9 -10 -23 -8 -28 -6s-15 8 -15 26v380s10 40 43 40h238zM275 146c3 11 33 164 43 213zM267 351c2 9 -5 16 -12 16h-191 -c-9 0 -15 -8 -15 -15v-296c0 -1 1 -1 2 0c0 0 70 84 78 94s11 11 23 11h64c9 0 14 8 15 12s8 43 10 51s-6 16 -13 16h-82c-10 0 -18 8 -18 18v13c0 10 8 17 18 17h96s14 6 15 12z" /> - <glyph glyph-name="ion-social-freebsd-devil" unicode="" horiz-adv-x="512" -d="M503 333c19 -37 8 -81 -20 -108s-60 -33 -60 -33c2 -32 16 -59 -41 -102c-43 -32 2 -90 2 -90c10 -14 23 -19 32 -32h-272s15 14 -7 32c0 0 -20 17 -18 29s6 13 9 15s0 7 0 7l-19 19s-13 -13 -44 -13c-38 0 -65 39 -65 39h46s-6 -8 -7 -13c-1 -4 1 -5 1 -5s11 -6 22 -6 -c17 0 33 12 33 12l-24 22l-15 -4l-16 37l39 -10l-1 -15l28 -18s9 9 7 27s-9 26 -9 26s-4 0 -9 -4s-6 -6 -6 -6l-10 44s43 -19 50 -63c3 -20 -6 -35 -6 -35l17 -10s6 5 17 7s23 2 29 -8s5 -12 4 -19s0 -9 6 -11s6 -6 11 -8s15 -6 21 -2s8 11 8 18v16s-9 8 -32 20 -s-54 22 -66 40s-12 44 0 57c9 10 23 25 26 35c4 14 4 42 4 42s-10 16 -8 40c2 30 22 84 96 114c0 0 -40 -55 -20 -80c0 0 37 11 77 9c31 -2 56 -12 73 -28s25 -23 47 -17s28 17 28 33c0 19 -16 51 -16 51s36 -7 58 -51zM195 245c14 4 21 -11 21 -11c14 25 30 60 22 64 -s-64 -25 -66 -88c0 0 6 31 23 35zM232 230c5 7 34 8 37 -17c4 -35 -24 -57 -24 -57s7 -2 23 2c17 4 43 29 43 70s-21 66 -41 62s-38 -60 -38 -60z" /> - <glyph glyph-name="ion-social-github-outline" unicode="" -d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5 -c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4 -c-89 30 -153 116 -153 218c0 127 100 230 224 230zM146 -0c-15 0 -28 4 -38 9c14 -10 28 -17 44 -23v6v8h-6zM157 73c-16 4 -35 10 -52 24c6 -6 11 -11 13 -16c7 -12 14 -17 25 -17c4 0 9 1 12 2c1 2 1 5 2 7zM347 14c17 13 32 28 45 46c26 37 40 80 40 126 -c0 29 -5 58 -16 84c-10 25 -26 48 -45 68s-41 34 -66 45c-26 11 -53 17 -81 17s-55 -6 -81 -17c-25 -11 -47 -25 -66 -45s-35 -42 -45 -68c-11 -26 -16 -55 -16 -84c0 -46 14 -89 40 -126c10 -14 22 -27 35 -38c-7 8 -11 16 -13 22c-7 18 -15 24 -17 25h-2v1 -c-5 3 -20 13 -15 28c3 9 12 15 25 15h1v0v0c13 -1 24 -6 32 -13c-21 19 -37 48 -37 98c0 24 7 47 21 66c-3 13 -6 34 5 62l3 8l7 2c2 0 5 1 10 1c12 0 31 -3 60 -22c17 4 35 6 53 6v0v0c18 0 36 -2 53 -6c29 19 48 22 60 22c5 0 8 -1 10 -1l7 -2l3 -7c11 -27 8 -50 5 -63 -c14 -19 21 -41 21 -66c0 -92 -55 -117 -92 -125c3 -8 5 -18 5 -30v-51v-6c18 7 35 16 51 28z" /> - <glyph glyph-name="ion-social-github" unicode="" -d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5 -c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4 -c-89 30 -153 116 -153 218c0 127 100 230 224 230z" /> - <glyph glyph-name="ion-social-google-outline" unicode="" horiz-adv-x="256" -d="M191 366c12 -10 37 -30 37 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -17 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 2 14 5 20c-6 0 -11 -1 -16 -1 -c-54 0 -85 40 -85 79c0 23 11 48 33 67c29 24 63 28 91 28h106l-33 -18h-32zM155 142c-4 1 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16 -c-9 -11 -11 -25 -11 -38c0 -34 20 -89 64 -89c13 0 27 6 35 14z" /> - <glyph glyph-name="ion-social-google" unicode="" horiz-adv-x="288" -d="M210 172c22 -18 45 -36 45 -73c0 -49 -48 -99 -140 -99c-80 0 -115 39 -115 77c0 10 3 42 42 65c27 16 61 20 85 22c-4 7 -8 16 -8 27c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 70 29 95 29h133l-60 -33h-13 -c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 20 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 38 -15 54c-7 13 -20 27 -40 27c-11 0 -22 -5 -29 -13c-6 -7 -9 -18 -9 -31z -M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -32 -2 -51 -8c-16 -6 -37 -16 -37 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44z" /> - <glyph glyph-name="ion-social-googleplus-outline" unicode="" -d="M192 366c12 -10 36 -30 36 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -18 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 3 14 5 20c-6 0 -11 -1 -16 -1 -c-54 0 -85 40 -85 79c0 23 10 48 32 67c29 24 64 28 92 28h106l-33 -18h-31zM155 142c-4 0 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16 -c-9 -11 -11 -24 -11 -37c0 -34 20 -90 64 -90c13 0 27 6 35 14zM448 306v-18h-78v-81h-18v81h-80v18h80v78h18v-78h78z" /> - <glyph glyph-name="ion-social-googleplus" unicode="" -d="M210 172c22 -18 45 -36 45 -73c0 -49 -47 -99 -139 -99c-80 0 -116 39 -116 77c0 10 3 42 42 65c27 16 61 21 85 23c-4 7 -8 15 -8 26c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 69 29 94 29h134l-60 -33h-13 -c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 21 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 37 -15 53c-8 13 -20 28 -40 28c-11 0 -23 -5 -29 -13c-6 -7 -9 -18 -9 -31z -M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -31 -2 -50 -8c-16 -6 -38 -16 -38 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44zM370 306h78v-34h-78v-81h-34v81h-80v34h80v78h34v-78z" /> - <glyph glyph-name="ion-social-hackernews-outline" unicode="" horiz-adv-x="384" -d="M352 352h-320v-320h320v320zM384 384v0v-384h-384v384h384zM233 289h45l-64 -120v-72h-40v72l-66 120h47l40 -84z" /> - <glyph glyph-name="ion-social-hackernews" unicode="" horiz-adv-x="384" -d="M0 384h384v-384h-384v384zM214 169l64 120h-45l-38 -84l-40 84h-47l66 -120v-72h40v72z" /> - <glyph glyph-name="ion-social-html5-outline" unicode="" horiz-adv-x="384" -d="M0 416h384l-35 -403l-157 -45l-157 45zM319 37l30 347h-314l30 -347l127 -36zM84 184l-13 150h241l-4 -50h-184l4 -51h176l-14 -151l-98 -28l-99 28l-6 77h48l3 -39l54 -15l53 15l6 64h-167z" /> - <glyph glyph-name="ion-social-html5" unicode="" horiz-adv-x="384" -d="M0 416h384l-35 -403l-157 -45l-157 45zM308 284l4 50h-241l13 -150h167l-6 -64l-53 -15l-54 15l-3 39h-48l6 -78l99 -27l98 28l14 151h-176l-4 51h184z" /> - <glyph glyph-name="ion-social-instagram-outline" unicode="" horiz-adv-x="384" -d="M384 336v-289c0 -26 -22 -47 -48 -47h-288c-26 0 -48 21 -48 47v289c0 26 22 48 48 48h288c26 0 48 -22 48 -48zM192 272c-44 0 -80 -36 -80 -80s36 -80 80 -80s80 36 80 80s-36 80 -80 80zM352 288v48c0 9 -7 16 -16 16h-48c-9 0 -16 -7 -16 -16v-48c0 -9 7 -16 16 -16 -h48c9 0 16 7 16 16zM337 32c9 0 15 7 15 16v176h-52c3 -10 4 -21 4 -32c0 -30 -11 -58 -32 -79s-50 -33 -80 -33s-58 12 -79 33s-33 49 -33 79c0 11 2 22 5 32h-53v-176c0 -9 8 -16 17 -16h288z" /> - <glyph glyph-name="ion-social-instagram" unicode="" horiz-adv-x="384" -d="M112 192c0 53 27 80 80 80s80 -27 80 -80s-27 -80 -80 -80s-80 27 -80 80zM113 271c-14 -14 -23 -29 -28 -47h-85v112c0 13 4 25 14 34s22 14 35 14h288c13 0 24 -5 33 -14s14 -21 14 -34v-112h-84c-5 18 -14 33 -28 47c-22 22 -49 33 -80 33s-57 -11 -79 -33zM352 300 -v39c0 4 -2 7 -4 9s-5 4 -9 4h-38c-4 0 -7 -2 -9 -4s-4 -5 -4 -9v-39c0 -4 2 -7 4 -9s5 -3 9 -3h38c4 0 7 1 9 3s4 5 4 9zM272 113c22 22 32 48 32 79h80v-144c0 -13 -5 -24 -14 -34s-20 -14 -33 -14h-288c-13 0 -24 4 -34 14s-15 21 -15 34v144h81c0 -31 10 -57 32 -79 -s48 -33 79 -33s58 11 80 33z" /> - <glyph glyph-name="ion-social-javascript-outline" unicode="" -d="M160 344h-48v-196c0 -30 -6 -50 -17 -64c-11 -13 -26 -20 -48 -20c-9 0 -18 1 -25 2l-4 -30c11 -2 25 -4 37 -4c34 0 59 8 76 25c19 18 29 48 29 90v197zM176 360v0v-213c0 -97 -49 -131 -121 -131c-18 0 -40 3 -55 8l8 62c10 -4 24 -6 39 -6c31 0 49 15 49 68v212h80z -M350 352c-34 0 -62 -9 -82 -26c-19 -15 -28 -36 -28 -60c0 -20 7 -36 21 -51c14 -14 34 -26 61 -36c23 -8 38 -15 48 -24c12 -11 18 -23 18 -38c0 -16 -7 -31 -20 -40c-12 -9 -28 -14 -48 -14c-28 0 -52 8 -70 15l-7 -32c18 -8 44 -14 72 -14c38 0 70 9 90 27 -c18 16 27 38 27 63c0 21 -5 36 -17 50s-31 27 -58 37v0v0c-38 15 -72 28 -72 63c0 14 7 27 19 36c11 9 26 13 45 13c24 0 43 -5 57 -11l10 32c-19 6 -42 10 -66 10zM350 368v0c38 0 65 -7 85 -16l-19 -64c-13 7 -35 17 -67 17s-48 -16 -48 -33c0 -22 19 -31 62 -48 -c58 -22 85 -53 85 -102c0 -57 -42 -106 -133 -106c-38 0 -72 10 -91 21l15 63v0c20 -11 49 -21 81 -21c34 0 52 15 52 38c0 21 -15 33 -55 47c-55 20 -93 52 -93 102c0 58 49 102 126 102z" /> - <glyph glyph-name="ion-social-javascript" unicode="" -d="M176 360v0v-213c0 -97 -49 -131 -121 -131c-18 0 -40 3 -55 8l8 62c10 -4 24 -6 39 -6c31 0 49 15 49 68v212h80zM350 368v0c38 0 65 -7 85 -16l-19 -64c-13 7 -35 17 -67 17s-48 -16 -48 -33c0 -22 19 -31 62 -48c58 -22 85 -53 85 -102c0 -57 -42 -106 -133 -106 -c-38 0 -72 10 -91 21l15 63v0c20 -11 49 -21 81 -21c34 0 52 15 52 38c0 21 -15 33 -55 47c-55 20 -93 52 -93 102c0 58 49 102 126 102z" /> - <glyph glyph-name="ion-social-linkedin-outline" unicode="" horiz-adv-x="384" -d="M119 64v0h-55v171h55v-171zM93 261v0v0c-18 0 -29 13 -29 29c0 17 12 30 30 30s29 -13 29 -30c0 -16 -12 -29 -30 -29zM257 239c36 0 63 -24 63 -75v-100h-55v94c0 22 -8 37 -28 37c-15 0 -24 -10 -28 -20c-2 -4 -2 -9 -2 -14v-97h-55v171h55v-24c8 11 21 28 50 28z -M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM350 32c1 0 2 1 2 2v316c0 1 -1 2 -2 2h-316s-2 -1 -2 -2v-315s1 -3 3 -3h315z" /> - <glyph glyph-name="ion-social-linkedin" unicode="" horiz-adv-x="384" -d="M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM119 64v171h-55v-171h55zM93 261c18 0 30 13 30 29c0 17 -11 30 -29 30s-30 -13 -30 -30c0 -16 11 -29 29 -29v0zM320 64v100c0 51 -27 75 -63 75 -c-29 0 -42 -17 -50 -28v24h-55v-171h55v97c0 5 0 10 2 14c4 10 13 20 28 20c20 0 28 -15 28 -37v-94h55z" /> - <glyph glyph-name="ion-social-markdown" unicode="" -d="M416 352c18 0 32 -14 32 -32v-256c0 -18 -14 -32 -32 -32h-384c-18 0 -32 14 -32 32v256c0 18 14 32 32 32h384zM252 96v0v192h-56l-42 -68l-42 68h-56v-192h56v96l42 -54l42 54v-96h56zM336 96v0l70 96h-42v96h-56v-96h-42z" /> - <glyph glyph-name="ion-social-nodejs" unicode="" horiz-adv-x="384" -d="M192 -32c-6 0 -12 2 -17 5l-53 32c-8 5 -4 6 -1 7c11 4 14 5 25 12c1 1 3 1 4 0l39 -23c1 -1 4 -1 5 0l156 92c1 1 2 2 2 4v187c0 2 0 4 -2 5l-156 94c-1 1 -3 1 -4 0l-155 -94c-2 -1 -3 -3 -3 -5v-187c0 -2 0 -3 2 -4l40 -24c24 -12 38 1 38 15v183c0 3 2 5 5 5h22 -c3 0 5 -2 5 -5v-183c0 -33 -19 -52 -49 -52c-9 0 -17 1 -37 11l-41 24c-10 6 -17 18 -17 30v190c0 12 7 24 17 30l158 95c10 6 24 6 34 0l158 -95c10 -6 17 -18 17 -30v-190c0 -12 -7 -24 -17 -30l-158 -94c-5 -3 -11 -5 -17 -5v0zM241 96c-65 0 -84 31 -84 59c0 3 1 5 4 5 -h21c2 0 5 -2 5 -4c3 -22 16 -31 54 -31c33 0 47 11 47 29c0 11 -3 18 -55 23c-43 4 -71 15 -71 51c0 33 28 52 73 52c46 0 76 -14 79 -51c0 -1 -1 -2 -2 -3s-2 -2 -3 -2h-20c-2 0 -5 2 -5 4c-4 17 -16 23 -49 23c-36 0 -41 -12 -41 -22c0 -12 5 -16 54 -23s72 -16 72 -51 -c0 -36 -29 -59 -79 -59v0v0z" /> - <glyph glyph-name="ion-social-octocat" unicode="" -d="M146 161c9 0 16 -4 22 -13s10 -20 10 -32s-4 -22 -10 -31s-14 -13 -22 -13c-9 0 -17 4 -23 13s-9 19 -9 31s3 24 9 32c6 9 14 13 23 13zM303 161c9 0 16 -4 22 -13s9 -20 9 -32s-3 -22 -9 -31s-13 -13 -22 -13s-18 4 -24 13s-9 19 -9 31s3 24 9 32c6 9 15 13 24 13z -M414 276c24 -27 34 -66 34 -96c0 -24 -1 -46 -6 -65c-6 -19 -13 -35 -21 -47c-9 -12 -19 -23 -32 -32s-24 -17 -34 -21s-22 -8 -36 -10c-13 -2 -24 -4 -31 -4c0 0 -28 -1 -64 -1s-64 1 -64 1c-7 0 -18 2 -31 4c-14 2 -26 6 -36 10s-22 12 -34 21c-13 9 -23 20 -32 32 -c-8 12 -15 28 -21 47c-5 19 -6 41 -6 65c0 31 10 70 34 96c0 0 -2 14 0 39s7 48 16 69c30 -3 67 -20 112 -51c15 4 36 6 62 6c28 0 48 -2 62 -6c20 14 39 24 58 33c19 8 33 13 41 15s13 3 13 3c9 -21 14 -44 16 -69s0 -39 0 -39v0zM348 42c28 13 42 40 42 81 -c0 24 -8 43 -26 59c-9 9 -20 13 -32 15s-31 1 -56 -1s-40 -4 -52 -4s-25 2 -42 3s-30 3 -39 3c-10 0 -20 1 -31 -2s-21 -7 -28 -14c-17 -15 -25 -35 -25 -59c0 -41 13 -68 41 -81c27 -13 69 -18 123 -18h2c54 0 95 5 123 18z" /> - <glyph glyph-name="ion-social-pinterest-outline" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136c14 -14 31 -25 48 -34c1 6 2 10 3 16c4 18 29 122 29 122 -s-8 15 -8 36c0 33 20 58 44 58c20 0 30 -16 30 -34c0 -20 -13 -51 -20 -79c-6 -24 12 -43 35 -43c42 0 71 54 71 119c0 49 -33 85 -93 85c-68 0 -110 -50 -110 -107c0 -20 6 -33 15 -44c4 -5 5 -6 3 -12c-1 -4 -4 -14 -5 -18c-2 -6 -6 -8 -11 -6c-31 13 -46 48 -46 86 -c0 64 54 140 160 140c86 0 142 -63 142 -129c0 -88 -49 -153 -121 -153c-24 0 -47 13 -55 28c0 0 -12 -52 -15 -62c-2 -6 -4 -13 -7 -19c15 -4 31 -6 47 -6c51 0 100 20 136 56z" /> - <glyph glyph-name="ion-social-pinterest" unicode="" -d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224c-22 0 -44 3 -64 9c8 14 18 31 23 48c3 10 16 62 16 62c8 -15 30 -28 54 -28c72 0 121 65 121 153c0 66 -56 129 -142 129c-106 0 -160 -76 -160 -140c0 -39 15 -73 46 -86c5 -2 10 0 12 6c1 4 3 14 4 18 -c2 6 1 7 -3 12c-9 11 -15 24 -15 44c0 57 42 107 110 107c60 0 94 -36 94 -85c0 -65 -29 -119 -71 -119c-24 0 -42 19 -36 43c7 28 20 59 20 79c0 18 -10 34 -30 34c-24 0 -43 -25 -43 -58c0 -21 7 -36 7 -36s-25 -104 -29 -122c-4 -17 -5 -35 -4 -51 -c-79 35 -134 113 -134 205c0 124 100 224 224 224z" /> - <glyph glyph-name="ion-social-python" unicode="" horiz-adv-x="384" -d="M129 199c-29 -5 -49 -30 -49 -57v-43v-3h-15c-29 0 -54 29 -62 69c-2 9 -3 17 -3 27v1c0 53 29 95 65 95h127v16h-96v29c0 26 7 40 46 47c13 2 29 4 45 4s39 -1 55 -4c25 -4 46 -22 46 -47v-57v-31c0 -21 -14 -38 -33 -43c-4 -1 -8 -2 -13 -2h-104h3c-4 0 -8 0 -12 -1z -M140 321c10 0 17 7 17 17s-7 18 -17 18s-18 -8 -18 -18s8 -17 18 -17zM380 225c3 -10 4 -21 4 -33c0 -16 -3 -30 -7 -43c-11 -31 -33 -53 -58 -53h-127v-16h96v-26c0 -26 -23 -40 -46 -47c-35 -10 -68 -9 -97 0c-25 7 -49 22 -49 47v54v33c0 21 14 36 33 41c4 1 8 2 13 2 -h104c3 0 6 1 9 1c27 4 49 28 49 62v38v3h15c28 0 52 -26 61 -63zM244 65c-10 0 -18 -7 -18 -17s8 -18 18 -18s17 8 17 18s-7 17 -17 17z" /> - <glyph glyph-name="ion-social-reddit-outline" unicode="" horiz-adv-x="449" -d="M259 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM127 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM449 197c0 -20 -9 -36 -27 -45c1 -5 1 -9 1 -14c0 -38 -19 -71 -58 -98s-85 -40 -140 -40s-102 13 -141 40 -s-58 59 -58 97c0 5 0 10 1 15c-18 9 -27 24 -27 45c0 14 5 25 15 35s21 15 35 15c13 0 24 -4 33 -13c36 25 79 39 129 41h7l29 98l86 -17c8 19 21 28 41 28c12 0 22 -4 31 -13s13 -20 13 -32s-4 -23 -13 -32s-19 -13 -31 -13s-23 4 -32 13s-13 19 -13 31l-69 14l-24 -77 -c50 -2 94 -16 129 -41c10 9 21 13 34 13c9 0 16 -3 24 -7s14 -10 18 -18s7 -16 7 -25zM375 366c-4 0 -8 -1 -11 -2s-6 -4 -8 -6s-5 -6 -6 -9s-2 -6 -2 -10c0 -8 3 -14 8 -19s12 -8 19 -8c5 0 9 1 13 3s8 6 10 10s4 9 4 14c0 8 -3 14 -8 19s-12 8 -19 8zM18 197 -c0 -11 5 -20 14 -27c7 19 19 37 37 53c-6 4 -12 6 -19 6c-3 0 -7 0 -10 -1s-6 -3 -9 -5s-5 -4 -7 -7s-4 -6 -5 -9s-1 -6 -1 -10zM355 55c34 23 50 51 50 83v9c-1 6 -3 12 -5 18c-6 16 -15 30 -30 43c-5 4 -10 9 -15 12v0c-36 25 -79 37 -130 37s-95 -12 -131 -37v0 -c-5 -3 -10 -8 -15 -12c-15 -13 -24 -27 -30 -43c-2 -6 -4 -12 -5 -18v-9c0 -32 16 -60 50 -83c36 -25 80 -37 131 -37s94 12 130 37zM417 170c9 6 14 16 14 27c0 9 -3 17 -9 23s-13 9 -22 9c-7 0 -14 -2 -20 -6c18 -16 30 -34 37 -53zM289 90l13 -12 -c-20 -20 -45 -30 -77 -30s-58 10 -78 30l13 12c16 -16 38 -24 65 -24s48 8 64 24z" /> - <glyph glyph-name="ion-social-reddit" unicode="" horiz-adv-x="449" -d="M449 197c0 -20 -11 -37 -27 -45c1 -5 1 -9 1 -14c0 -76 -89 -138 -199 -138s-198 61 -198 137c0 5 0 10 1 15c-16 8 -27 25 -27 45c0 28 23 50 50 50c13 0 24 -5 33 -13c33 23 79 39 129 41h2l31 103l90 -18c8 14 22 24 39 24v0h1c25 0 44 -20 44 -45s-19 -45 -44 -45h-1 -v0c-23 0 -42 17 -44 40l-67 14l-22 -74c49 -3 93 -17 125 -40c9 8 21 13 34 13c27 0 49 -22 49 -50zM34 177c5 15 15 29 29 41c-4 3 -9 5 -15 5c-14 0 -25 -11 -25 -25c0 -9 4 -17 11 -21zM358 339c0 -9 7 -17 16 -17s17 8 17 17s-8 17 -17 17s-16 -8 -16 -17zM127 160 -c0 -18 14 -32 32 -32s32 14 32 32s-14 31 -32 31s-32 -13 -32 -31zM224 48c48 0 77 29 78 30l-13 12s-25 -24 -65 -24c-41 0 -64 24 -64 24l-13 -12c1 -1 29 -30 77 -30zM291 128c18 0 32 14 32 32s-14 31 -32 31s-32 -13 -32 -31s14 -32 32 -32zM415 176c7 5 11 13 11 22 -c0 14 -11 25 -25 25c-6 0 -11 -2 -15 -5c14 -12 24 -27 29 -42z" /> - <glyph glyph-name="ion-social-rss-outline" unicode="" horiz-adv-x="384" -d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM56 16c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM240 16c-2 26 -8 52 -19 77 -c-12 28 -30 54 -52 76s-48 40 -76 52c-25 10 -51 16 -77 18v-47c50 -3 92 -22 123 -53s50 -73 53 -123h48zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80zM227 228c56 -56 89 -131 93 -212h48c-8 190 -162 344 -352 352v-48c81 -4 155 -36 211 -92z" /> - <glyph glyph-name="ion-social-rss" unicode="" horiz-adv-x="384" -d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80z" /> - <glyph glyph-name="ion-social-sass" unicode="" horiz-adv-x="512" -d="M512 119v-8c-1 -9 -7 -17 -15 -22s-12 -4 -13 -3s1 3 4 5c13 8 17 20 10 33c-5 10 -15 16 -26 20c-24 8 -48 7 -72 0c4 -12 7 -23 -2 -34c-10 -12 -23 -19 -39 -22c-7 -2 -14 2 -15 9c-3 19 17 36 30 47c-7 11 -11 24 -14 37c-15 -17 -31 -40 -26 -61 -c3 -14 -1 -27 -14 -36s-30 -14 -46 -11c-4 1 -6 5 -5 8c2 14 25 32 35 43c2 2 3 4 1 7c-6 12 -10 23 -14 36c-13 -29 -30 -80 -57 -98c-9 -6 -17 -4 -21 5c-3 8 -2 20 -1 29c-6 -13 -11 -27 -20 -38c-7 -8 -24 -7 -30 1c-16 21 -13 50 -5 73l-29 -15c7 -16 8 -32 4 -49 -c-5 -19 -17 -35 -35 -46c-19 -12 -64 -24 -77 4c-7 16 -4 30 6 44c17 24 48 37 74 50c-32 23 -80 42 -96 80c-15 35 17 68 43 89c59 48 166 95 244 59c15 -7 36 -24 31 -52c-4 -24 -13 -39 -28 -54c-32 -32 -152 -77 -176 -15c-1 1 -1 4 1 4c2 -1 20 -15 43 -16 -c17 -1 36 3 52 8c33 11 71 33 80 67c4 13 -2 28 -15 34c-49 24 -116 -4 -159 -26c-33 -17 -84 -45 -82 -87c1 -37 56 -60 81 -82c15 7 42 15 52 27c11 13 26 25 44 26c8 0 14 -3 16 -10c2 -6 1 -11 0 -19c5 4 11 4 15 -1c12 -14 -22 -50 -10 -66c14 14 21 42 30 59 -c4 8 17 51 26 53c7 2 18 4 25 0c2 -1 3 -3 2 -5c-7 -19 -7 -33 3 -52c14 20 29 43 34 67c1 2 3 3 5 4c7 2 18 3 25 0c3 -1 3 -2 2 -5c-7 -22 -6 -38 6 -58c31 11 69 15 97 -5c-3 2 -7 5 0 0c5 -4 3 -2 0 0c12 -8 19 -18 21 -32zM113 94v0c1 7 -1 13 -3 20 -c-24 -8 -66 -35 -64 -62c1 -10 8 -13 17 -12s19 7 27 13c14 11 22 24 23 41zM216 166c1 3 -2 5 -5 4c-29 -8 -43 -57 -33 -81c1 -3 4 -3 6 -1c17 16 28 56 32 78zM286 84c8 -3 27 17 26 27c-8 -9 -18 -18 -26 -27zM367 102c11 6 16 19 12 30c-8 -6 -21 -19 -20 -31 -c0 -2 6 0 8 1z" /> - <glyph glyph-name="ion-social-skype-outline" unicode="" horiz-adv-x="384" -d="M106 352c-41 0 -74 -33 -74 -73c0 -13 4 -25 10 -36l6 -11l-2 -12c-2 -10 -3 -20 -3 -30c0 -40 16 -77 44 -105s67 -44 107 -44c9 0 19 1 28 3l11 2l9 -5c11 -6 24 -9 36 -9c41 0 74 33 74 73c0 11 -3 22 -8 32l-5 10l3 11c2 10 3 21 3 32c0 40 -16 77 -44 105 -s-67 43 -107 43c-9 0 -18 0 -26 -2l-12 -2l-10 7c-12 7 -26 11 -40 11zM106 384v0c21 0 40 -6 56 -16c10 2 21 2 32 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3 -c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105zM288 104c-8 -12 -21 -21 -37 -28s-36 -10 -58 -10c-26 0 -48 5 -65 14c-12 7 -22 15 -30 26s-12 22 -12 33c0 7 3 12 8 17s11 7 19 7c6 0 12 -2 16 -6s7 -8 10 -15s7 -13 11 -18 -s8 -9 15 -12s16 -5 27 -5c15 0 28 4 37 10s13 13 13 22c0 7 -2 13 -7 17c-5 5 -11 9 -19 11c-8 3 -20 5 -34 8c-19 4 -35 9 -48 14c-13 6 -24 13 -32 23s-11 22 -11 36s4 25 12 36c8 10 20 19 36 25c15 6 34 8 54 8c16 0 30 -1 42 -5s23 -9 31 -15s14 -13 18 -20 -s5 -14 5 -21c0 -6 -2 -12 -7 -17s-11 -8 -19 -8c-7 0 -12 2 -16 5c-3 3 -7 7 -11 14c-5 8 -10 15 -16 20s-17 8 -31 8c-13 0 -23 -3 -31 -8s-12 -11 -12 -18c0 -4 2 -7 4 -10c3 -3 6 -6 11 -8s10 -5 15 -6s13 -3 25 -6c15 -3 28 -6 40 -10s23 -8 32 -14s15 -13 20 -22 -s8 -20 8 -32c0 -15 -5 -28 -13 -40z" /> - <glyph glyph-name="ion-social-skype" unicode="" horiz-adv-x="384" -d="M373 151c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105c21 0 41 -6 57 -16c10 2 20 2 31 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39z -M288 104c9 12 12 25 12 40c0 12 -2 23 -7 32s-12 16 -21 22s-19 10 -31 14s-26 7 -41 10c-12 3 -20 5 -25 6s-10 4 -15 6s-7 5 -10 8c-2 3 -4 6 -4 10c0 7 3 13 11 18s19 7 32 7c14 0 25 -2 31 -7s11 -12 16 -20c4 -7 8 -11 11 -14c4 -3 9 -5 16 -5c8 0 13 3 18 8s8 11 8 17 -c0 7 -2 14 -6 21s-10 14 -18 20s-18 11 -30 15s-27 5 -43 5c-20 0 -38 -2 -53 -8c-16 -6 -28 -15 -36 -25c-8 -11 -12 -22 -12 -36s3 -26 11 -36s19 -17 32 -23c13 -5 29 -10 48 -14c14 -3 26 -5 34 -8c8 -2 14 -6 19 -11c5 -4 7 -10 7 -17c0 -9 -4 -17 -13 -23 -s-22 -9 -37 -9c-11 0 -20 2 -27 5s-11 6 -15 11s-8 12 -11 19s-6 11 -10 15s-10 6 -16 6c-8 0 -14 -2 -19 -7s-8 -10 -8 -17c0 -11 4 -22 12 -33s18 -19 30 -26c17 -9 39 -14 65 -14c22 0 42 3 58 10s29 16 37 28z" /> - <glyph glyph-name="ion-social-snapchat-outline" unicode="" horiz-adv-x="480" -d="M240 400v0v0c-71 0 -128 -54 -118 -128c2 -15 3 -32 4 -45c0 0 -2 -5 -12 -5c-6 0 -15 2 -28 7c-2 1 -4 1 -6 1c-8 0 -13 -6 -14 -12c0 -5 4 -11 8 -13c14 -7 47 -10 47 -33s-23 -47 -41 -64s-64 -21 -64 -21s0 -21 32 -29s32 -5 33 -13c2 -15 1 -22 11 -22c2 0 4 1 6 1 -c8 1 20 3 32 3c11 0 23 -2 34 -9c23 -15 41 -34 76 -34s53 19 76 34c11 7 24 9 35 9c12 0 23 -2 31 -3c2 0 4 -1 6 -1c10 0 9 7 11 22c1 8 1 5 33 13s32 29 32 29s-46 4 -64 21s-41 41 -41 64s33 26 47 33c4 2 9 8 9 13c-1 6 -6 12 -14 12c-2 0 -5 0 -7 -1 -c-13 -5 -21 -6 -27 -6c-10 0 -13 4 -13 4c1 13 2 30 4 45c10 74 -47 128 -118 128zM240 416v0c41 0 80 -16 105 -45c24 -28 34 -63 29 -101c-1 -11 -2 -22 -3 -31c4 1 10 2 18 5c4 1 8 2 12 2c16 0 29 -12 30 -27c1 -13 -9 -25 -18 -29c-4 -2 -9 -3 -14 -5 -c-7 -2 -14 -5 -19 -8c-4 -3 -5 -4 -5 -5c0 -16 20 -37 36 -52c11 -10 39 -16 54 -17l15 -1v-14c0 -2 0 -11 -6 -21c-5 -8 -16 -19 -38 -24c-6 -1 -11 -3 -15 -4c-2 -1 -5 -1 -7 -1v-1c-1 -7 -1 -13 -4 -18c-2 -5 -9 -12 -22 -12c-2 0 -6 0 -9 1c-2 0 -3 1 -5 1 -c-7 1 -15 2 -23 2c-10 0 -19 -2 -26 -6c-4 -3 -9 -7 -14 -10c-18 -13 -38 -27 -71 -27s-53 14 -71 27c-5 3 -9 7 -14 10c-7 4 -15 6 -25 6c-8 0 -17 -1 -24 -2c-2 0 -3 -1 -5 -1c-3 -1 -7 -1 -9 -1c-13 0 -20 7 -22 12c-3 5 -3 11 -4 18v1c-2 0 -4 0 -6 1c-4 1 -10 3 -16 4 -c-22 5 -33 16 -38 24c-6 10 -6 18 -6 20v15l15 1c16 1 44 7 54 17c29 27 36 43 36 52c0 1 0 2 -4 5c-5 3 -13 6 -20 8c-5 2 -10 3 -14 5c-9 4 -18 16 -17 29c1 15 14 27 30 27c4 0 8 0 12 -2c8 -3 13 -4 17 -5c-1 9 -2 19 -3 30c-5 38 5 74 29 102c25 29 64 45 105 45v0z -M240 219c-21 0 -41 8 -56 23c-3 3 -3 9 0 12s9 3 12 0c12 -12 27 -19 44 -19c16 0 32 7 44 19c3 3 9 3 12 0s3 -9 0 -12c-15 -15 -35 -23 -56 -23zM176 296c0 16 5 24 16 24s16 -8 16 -24s-5 -24 -16 -24s-16 8 -16 24zM272 296c0 16 5 24 16 24s16 -8 16 -24 -s-5 -24 -16 -24s-16 8 -16 24z" /> - <glyph glyph-name="ion-social-snapchat" unicode="" horiz-adv-x="480" -d="M480 88c0 -2 0 -11 -6 -21c-5 -8 -16 -19 -38 -24c-6 -1 -11 -3 -15 -4c-2 -1 -5 -1 -7 -1v-1c-1 -7 -1 -13 -4 -18c-2 -5 -9 -12 -22 -12c-2 0 -6 0 -9 1c-2 0 -3 1 -5 1c-7 1 -15 2 -23 2c-10 0 -19 -2 -26 -6c-4 -3 -9 -7 -14 -10c-18 -13 -38 -27 -71 -27 -s-53 14 -71 27c-5 3 -9 7 -14 10c-7 4 -15 6 -25 6c-8 0 -17 -1 -24 -2c-2 0 -3 -1 -5 -1c-3 -1 -7 -1 -9 -1c-13 0 -20 7 -22 12c-3 5 -3 11 -4 18v1c-2 0 -4 0 -6 1c-4 1 -10 3 -16 4c-22 5 -33 16 -38 24c-6 10 -6 18 -6 20v15l15 1c16 1 44 7 54 17c29 27 36 43 36 52 -c0 1 0 2 -4 5c-5 3 -13 6 -20 8c-5 2 -10 3 -14 5c-9 4 -18 16 -17 29c1 15 14 27 30 27c4 0 8 0 12 -2c8 -3 13 -4 17 -5c-1 9 -2 19 -3 30c-5 38 5 74 29 102c25 29 64 45 105 45v0c41 0 80 -16 105 -45c24 -28 34 -63 29 -101c-1 -11 -2 -22 -3 -31c4 1 10 2 18 5 -c4 1 8 2 12 2c16 0 29 -12 30 -27c1 -13 -9 -25 -18 -29c-4 -2 -9 -3 -14 -5c-7 -2 -14 -5 -19 -8c-4 -3 -5 -4 -5 -5c0 -16 20 -37 36 -52c11 -10 39 -16 54 -17l15 -1v-14zM192 320c-9 0 -16 -11 -16 -24s7 -24 16 -24s16 11 16 24s-7 24 -16 24zM296 242c3 3 3 9 0 12 -s-9 3 -12 0c-12 -12 -28 -19 -44 -19c-17 0 -32 7 -44 19c-3 3 -9 3 -12 0s-3 -9 0 -12c15 -15 35 -23 56 -23s41 8 56 23zM288 272c9 0 16 11 16 24s-7 24 -16 24s-16 -11 -16 -24s7 -24 16 -24z" /> - <glyph glyph-name="ion-social-tumblr-outline" unicode="" horiz-adv-x="256" -d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16 -c9 -6 19 -8 31 -8zM240 17v29c-15 -6 -31 -10 -47 -10c-15 0 -28 3 -40 10c-10 6 -17 15 -21 25c-2 6 -4 17 -4 52v117h96v32h-96v112h-32c-2 -16 -7 -36 -14 -50c-8 -16 -17 -29 -30 -40c-11 -9 -23 -17 -36 -23v-31h48v-156c0 -21 2 -32 4 -38c3 -8 10 -15 18 -22 -c9 -8 19 -14 31 -18c13 -4 29 -6 46 -6c16 0 28 2 41 5c11 2 23 6 36 12z" /> - <glyph glyph-name="ion-social-tumblr" unicode="" horiz-adv-x="256" -d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16 -c9 -6 19 -8 31 -8z" /> - <glyph glyph-name="ion-social-tux" unicode="" horiz-adv-x="383" -d="M189 347c2 2 -1 -1 0 0c2 2 4 4 6 5c-3 -2 -5 -4 -7 -8c0 1 0 2 1 3zM361 52c7 -4 23 -11 21 -22c-2 -10 -17 -15 -24 -19c-15 -8 -28 -14 -41 -25c-9 -8 -17 -15 -29 -17c-11 -2 -25 -1 -33 8c-5 5 -7 11 -15 12c-25 5 -54 4 -79 0c-13 -2 -21 -11 -32 -17 -c-10 -5 -20 -5 -30 -1c-13 5 -27 10 -41 13s-29 5 -43 9c-31 8 -5 30 -11 50c-3 12 -10 29 8 30c9 1 27 -1 31 11c2 7 -2 15 2 22s-1 17 1 25c4 18 19 32 25 49c5 14 8 25 18 37c9 11 22 22 29 34c10 18 9 35 8 55c-1 17 -1 33 -2 50c0 33 20 60 58 60h14 -c38 0 63 -32 64 -69c0 -19 -5 -38 5 -67c15 -27 36 -48 52 -73c10 -16 16 -31 20 -49c3 -14 9 -31 7 -45c-1 -6 -2 -9 -4 -11c3 -1 7 -2 9 -5c3 -4 2 -11 0 -26c-1 -8 5 -15 12 -19zM137 -3c2 20 -15 39 -25 56c-10 16 -21 43 -39 52c-8 4 -19 5 -23 -5c-2 -7 0 -19 -2 -22 -c-4 -9 -14 -10 -23 -11c-6 0 -17 0 -17 -8c1 -10 10 -20 7 -30c-2 -7 -8 -12 -8 -19c0 -14 38 -15 47 -17c19 -4 37 -14 57 -16c12 -1 25 7 26 20zM253 62c-2 10 2 -10 0 0s-5 28 1 35c4 5 10 6 17 5c0 4 1 9 3 12c8 13 29 8 39 0l-1 2c-3 4 -8 9 -13 10c0 0 4 12 2 34 -c-4 40 -33 62 -33 62c27 -30 27 -58 27 -72c0 -6 -1 -18 -4 -24c-4 -1 -7 -2 -11 -4c-10 -5 -8 2 -8 10c0 18 -2 36 -7 54c-3 9 -7 17 -13 24c-4 5 -4 9 -5 15c-3 12 -9 22 -16 32c-7 9 -7 17 -5 28c1 7 2 14 -6 17c-6 2 -26 5 -27 14c-1 6 -1 16 5 20c16 14 30 -11 17 -24 -c-3 -3 7 -4 8 -4c4 1 4 7 5 10c1 4 1 9 1 13c0 17 -18 32 -34 21c-6 -4 -9 -11 -10 -17c0 -2 -1 -20 0 -20c-4 0 -7 5 -11 5c-3 0 -7 0 -10 -1c0 0 2 14 -2 22c-4 9 -18 16 -24 4s-3 -25 0 -31s4 -6 4 -6c2 1 5 4 5 4s-6 3 -7 11c-1 9 3 14 7 15s10 -2 12 -8s0 -13 0 -13 -c-7 -6 -30 -18 -22 -28c14 -18 33 -15 52 -9c8 3 18 5 24 12c3 3 11 2 8 -4c-2 -5 -18 -7 -22 -9c-9 -4 -18 -8 -28 -10c-6 -1 -13 -5 -28 9c7 -6 8 -16 17 -20c13 -6 33 9 44 15c1 1 16 5 14 0c-1 -4 -11 -7 -15 -9c-11 -6 -23 -21 -36 -22c-8 -1 -21 16 -25 22 -c-1 1 -5 9 -6 4c-1 -8 2 -14 -3 -21c-6 -9 -11 -18 -13 -29c-1 -6 0 -11 -3 -16c-11 -15 -17 -33 -19 -51c0 -4 3 -43 -5 -41c-18 5 -17 33 -14 47c-3 -12 -8 -30 2 -44c12 -15 99 -55 53 -80c7 -14 14 -25 12 -41c8 7 2 20 -1 28c0 0 17 -12 38 -10c17 2 32 7 46 16 -c6 4 11 9 16 14c1 2 4 6 6 7l1 -11c2 -17 -12 -27 -10 -34c4 8 11 14 13 24c3 12 0 24 -2 36zM155 323v0v-3c2 0 2 5 1 8c-1 4 -3 6 -4 6h-2c3 -2 5 -6 5 -11zM210 335c3 -2 0 0 0 0c3 -2 5 -5 5 -10v-3c2 0 3 4 2 7s-3 6 -5 6h-2zM347 15c24 11 -24 -10 0 0 -c24 11 35 17 20 26c-17 10 -26 13 -26 29c0 5 4 16 2 22c-1 4 -6 5 -9 5c-10 -10 -17 -25 -34 -25c-14 0 -25 11 -28 24c-4 2 -10 1 -13 -4c-6 -12 1 -29 3 -41c2 -18 -4 -35 -2 -53c2 -21 26 -22 40 -13c16 10 29 22 47 30z" /> - <glyph glyph-name="ion-social-twitch-outline" unicode="" horiz-adv-x="416" -d="M32 416h384v-272l-112 -112h-80l-64 -64h-64v64h-96v304zM368 160v208h-304v-272h80v-64l64 64h96zM272 176v129h48v-129h-48zM160 176v129h48v-129h-48z" /> - <glyph glyph-name="ion-social-twitch" unicode="" horiz-adv-x="416" -d="M32 416h384v-272l-112 -112h-80l-64 -64h-64v64h-96v304zM208 176v129h-48v-129h48zM320 176v129h-48v-129h48z" /> - <glyph glyph-name="ion-social-twitter-outline" unicode="" horiz-adv-x="472" -d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48 -c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15zM414 301c3 2 8 6 11 8c-2 0 -11 -2 -19 -1s-21 5 -21 5s14 13 18 17l11 11c-4 -1 -10 -2 -14 -3l-8 -2l-6 6 -c-15 16 -37 26 -59 26c-45 0 -81 -37 -81 -81c0 -6 1 -12 2 -18l5 -21l-22 1c-42 2 -81 13 -118 32c-28 14 -53 34 -75 56c-1 -6 -2 -13 -2 -19c0 -27 14 -53 36 -68c0 0 33 -23 46 -29c-24 -2 -56 0 -56 0c-8 0 -16 1 -24 3c8 -28 32 -50 62 -56l61 -10l-61 -21 -c-7 -2 -14 -3 -21 -3c15 -20 38 -34 64 -34l45 -1l-35 -28c-18 -14 -38 -25 -60 -33c-10 -3 -19 -6 -29 -8c27 -9 55 -14 84 -14c40 0 78 8 112 24c31 14 58 34 81 60c22 24 38 53 50 84c11 30 17 62 17 92v12l-1 8z" /> - <glyph glyph-name="ion-social-twitter" unicode="" horiz-adv-x="472" -d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48 -c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15z" /> - <glyph glyph-name="ion-social-usd-outline" unicode="" horiz-adv-x="320" -d="M125 345c11 2 19 3 19 3v-131l-22 6c-15 5 -27 11 -36 19c-12 10 -19 25 -19 43c0 13 4 24 11 33c6 8 13 14 22 19c7 4 17 6 25 8zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM252 151 -c10 -10 15 -24 15 -42c0 -9 -1 -18 -5 -27s-11 -17 -20 -24c-8 -6 -18 -11 -31 -15c-6 -2 -11 -3 -17 -4s-18 -1 -18 -1v145l20 -5c10 -3 19 -6 28 -9c10 -4 20 -10 28 -18zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14s-16 5 -26 8v-107c6 1 10 2 14 3 -c11 3 20 8 27 13s11 11 14 18zM315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23 -s20 -11 31 -14v120c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46 -c-7 4 -13 8 -22 10v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM293 72c7 12 11 27 11 44c0 8 -1 16 -4 24s-7 15 -12 22s-12 13 -20 19c-8 5 -18 10 -29 13c-5 1 -13 3 -24 6h-1l-4 1c-7 2 -13 4 -21 6l-13 3v137 -s9 -1 19 -4s19 -6 28 -12c15 -9 25 -24 30 -43h38c-2 8 -4 15 -8 22c-7 13 -16 24 -28 32c-12 9 -27 16 -43 20c-8 2 -16 4 -23 5l-13 2v31h-32v-31l-14 -2c-7 -1 -14 -2 -20 -4c-15 -4 -29 -10 -41 -18s-21 -16 -28 -28c-7 -11 -10 -24 -10 -40c0 -8 1 -15 3 -23 -c2 -7 6 -14 11 -21s14 -13 23 -19c10 -6 22 -10 37 -14v0v0c4 -1 8 -2 11 -3c5 -1 11 -3 16 -4l12 -3v-151s-8 1 -20 4s-26 8 -36 15c-11 8 -20 18 -26 30c-4 7 -6 16 -8 24h-36c2 -11 5 -23 10 -32c8 -14 17 -26 30 -35c13 -10 28 -16 46 -21c8 -2 17 -4 26 -5l14 -2v-33 -h32v33l15 1c9 1 17 3 26 5c17 4 32 10 45 18s23 19 31 31z" /> - <glyph glyph-name="ion-social-usd" unicode="" horiz-adv-x="320" -d="M315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23s20 -11 31 -14v120 -c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46c-7 4 -13 8 -22 10 -v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14 -s-16 5 -26 8v-107c6 1 10 2 14 3c11 3 20 8 27 13s11 11 14 18z" /> - <glyph glyph-name="ion-social-vimeo-outline" unicode="" -d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-10 -4 -19 -5 -27 -5c-17 0 -31 9 -44 27c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-2 2 -5 3 -8 3s-6 -1 -9 -3 -c-10 -6 -28 -18 -28 -18l-21 27c26 24 82 71 82 71c11 9 33 25 48 27h8c18 0 32 -7 42 -22c11 -17 15 -37 18 -57c7 -41 12 -82 24 -122c3 -10 7 -20 12 -29c4 -7 9 -10 14 -10c4 0 7 2 11 5s7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26h-7 -c-11 0 -20 -2 -32 -7c6 24 24 62 54 84c20 14 45 20 67 20c10 0 20 -2 27 -4c23 -8 36 -23 41 -46zM418 244c13 30 17 59 11 87c-4 19 -13 28 -30 34c-6 2 -14 3 -22 3c-21 0 -42 -6 -57 -17c-16 -12 -29 -30 -38 -48h6h8c23 -1 39 -19 40 -41c0 -10 0 -22 -4 -34 -c-11 -29 -29 -58 -51 -85c-4 -4 -7 -9 -12 -13c-7 -6 -15 -8 -22 -8c-8 0 -18 3 -27 18c-7 11 -11 22 -14 32c-10 31 -14 64 -19 95c-2 10 -3 19 -5 29c-3 17 -6 36 -16 51c-7 10 -16 15 -28 15h-6c-8 -1 -25 -11 -40 -23c-2 -2 -43 -37 -70 -61l2 -3c5 4 12 7 16 10 -c6 3 12 5 18 5c7 0 13 -3 18 -7c8 -7 13 -12 16 -18c6 -11 12 -24 16 -37c13 -44 26 -88 38 -133c5 -19 13 -41 26 -59s23 -20 31 -20c6 0 13 1 21 4c23 8 43 25 61 41c32 29 57 63 83 99v0c21 28 37 55 50 84z" /> - <glyph glyph-name="ion-social-vimeo" unicode="" -d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-31 -11 -52 -5 -71 22c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-5 4 -11 3 -17 0c-10 -6 -28 -18 -28 -18l-21 27 -c26 24 82 71 82 71c11 9 33 25 48 27c21 3 38 -4 50 -22c11 -17 15 -37 18 -57c7 -41 11 -82 23 -122c3 -10 8 -20 13 -29c7 -11 15 -13 25 -5c4 3 7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26s-24 -1 -39 -7c6 24 24 62 54 84c29 21 71 24 94 16 -s36 -23 41 -46z" /> - <glyph glyph-name="ion-social-whatsapp-outline" unicode="" -d="M178 294c4 -11 15 -39 16 -42s2 -6 0 -10s-3 -6 -6 -9s-6 -7 -9 -9c-3 -3 -6 -6 -3 -12s14 -24 30 -39c21 -20 38 -27 44 -30s9 -3 12 1s15 16 19 21s8 5 13 3s31 -17 37 -20s10 -5 11 -7s0 -13 -5 -26s-28 -24 -38 -25s-11 -8 -67 16s-90 84 -93 88s-22 31 -21 58 -s17 41 22 46s11 7 15 7h10s9 0 13 -11zM228 384c-50 0 -97 -20 -133 -55c-35 -35 -55 -81 -55 -131c0 -34 9 -67 27 -96l8 -13l-5 -14l-19 -57l61 19l13 4l12 -6c28 -15 59 -23 91 -23c50 0 97 19 133 54c35 35 55 82 55 132s-20 96 -55 131c-36 35 -83 55 -133 55zM228 416 -v0c121 0 220 -97 220 -218s-99 -218 -220 -218c-39 0 -74 10 -106 27l-122 -39l40 117c-20 33 -32 72 -32 113c0 121 99 218 220 218z" /> - <glyph glyph-name="ion-social-whatsapp" unicode="" -d="M228 416c121 0 220 -97 220 -218s-99 -218 -220 -218c-39 0 -74 10 -106 27l-122 -39l40 117c-20 33 -32 72 -32 113c0 121 99 218 220 218zM337 115c5 13 6 24 5 26s-5 4 -11 7s-32 18 -37 20s-9 2 -13 -3s-16 -17 -19 -21s-6 -4 -12 -1s-23 10 -44 30 -c-16 15 -27 33 -30 39s0 9 3 12c3 2 6 6 9 9s4 5 6 9s1 7 0 10s-12 31 -16 42s-10 11 -13 11h-10s-10 -2 -15 -7s-21 -19 -22 -46s18 -54 21 -58s37 -64 93 -88s57 -17 67 -16s33 12 38 25z" /> - <glyph glyph-name="ion-social-windows-outline" unicode="" -d="M432 167h-216v-149l216 -32v181zM448 183v0v-215l-248 36v179h248zM168 167h-152v-120l152 -22v142zM184 183v0v-177l-184 27v150h184zM432 398v0l-216 -31v-152h216v183zM448 416v0v-217h-248v182zM168 360v0l-152 -22v-123h152v145zM184 378v0v-179h-184v153z" /> - <glyph glyph-name="ion-social-windows" unicode="" -d="M448 183v0v-215l-248 36v179h248zM184 183v0v-177l-184 27v150h184zM448 416v0v-217h-248v182zM184 378v0v-179h-184v153z" /> - <glyph glyph-name="ion-social-wordpress-outline" unicode="" horiz-adv-x="384" -d="M192 384c106 0 192 -86 192 -192c0 -9 -1 -18 -2 -26c-12 -85 -79 -153 -165 -164c-8 -1 -17 -2 -25 -2c-106 0 -192 86 -192 192s86 192 192 192zM19 192c0 -68 40 -127 98 -155l-83 225c-10 -21 -15 -45 -15 -70zM214 21c12 2 24 4 35 8c0 1 -1 2 -1 3l-53 145l-33 -96 -v0l-19 -55c15 -5 32 -7 49 -7c8 0 15 1 22 2zM216 273l62 -186l17 58c9 22 13 41 13 56c0 21 -7 35 -14 47c-9 14 -17 27 -17 41c0 16 12 30 29 30h2c-31 28 -71 45 -116 45c-60 0 -113 -30 -144 -77c4 0 8 -1 11 -1c18 0 46 3 46 3c9 1 10 -14 1 -15c0 0 -10 -1 -20 -1 -l63 -187l38 113l-27 74c-9 0 -18 1 -18 1c-9 0 -8 16 1 15c0 0 28 -3 45 -3c18 0 46 3 46 3c9 1 11 -14 2 -15c0 0 -10 -1 -20 -1zM279 43c45 26 77 71 84 125c1 8 2 16 2 24c0 30 -8 58 -22 83c1 -6 1 -12 1 -18c0 -18 -3 -37 -13 -62l-39 -113z" /> - <glyph glyph-name="ion-social-wordpress" unicode="" horiz-adv-x="384" -d="M195 177l53 -146c0 -1 6 -13 9 -19c-3 -1 -5 -2 -8 -3v0c-10 -3 -21 -6 -32 -7c-8 -1 -17 -2 -25 -2c-17 0 -34 2 -50 6v0c-2 0 -3 2 -5 2l25 73v0zM17 268c6 0 7 -1 15 -1l93 -255c-3 1 -5 2 -8 3c-63 27 -109 87 -116 158c-1 6 -1 13 -1 19c0 25 7 53 17 76zM366 273 -c11 -24 18 -52 18 -81c0 -9 -1 -18 -2 -26c-9 -65 -50 -120 -107 -147c-2 -1 -3 -1 -5 -2l22 65l39 113c10 25 13 45 13 62v19v0c-1 18 -10 44 -36 43h-2c-17 0 -29 -14 -29 -30c0 -14 8 -27 17 -41c7 -12 14 -26 14 -47c0 -15 -4 -34 -13 -56l-17 -58l-62 186 -c10 0 20 1 20 1c9 1 7 16 -2 15c0 0 -28 -3 -46 -3c-17 0 -45 3 -45 3c-9 1 -10 -15 -1 -15c0 0 9 -1 18 -1l27 -74l-38 -113l-63 187c10 0 20 2 20 2c9 1 8 15 -1 14c0 0 -28 -2 -46 -2h-34c5 9 11 17 17 25c35 44 90 72 150 72c24 0 48 -5 69 -13c34 -13 63 -36 85 -65 -c2 -2 3 -5 5 -7c6 -8 11 -17 15 -26z" /> - <glyph glyph-name="ion-social-yahoo-outline" unicode="" horiz-adv-x="320" -d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4zM178 180l111 184h-1c-7 0 -15 0 -24 2l-90 -150l-14 -23l-14 23l-89 150c-9 -2 -17 -2 -25 -2h-1l111 -184l2 -4 -v-5v-151c6 1 11 0 16 0s11 1 16 0v151v5z" /> - <glyph glyph-name="ion-social-yahoo" unicode="" horiz-adv-x="320" -d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4z" /> - <glyph glyph-name="ion-social-yen-outline" unicode="" horiz-adv-x="384" -d="M384 416l-112 -208h48v-48h-73l-15 -31v-17h88v-48h-88v-96h-80v96h-88v48h88v17l-14 31h-74v48h48l-112 208h80l112 -221l112 221h80zM304 192h-59l13 24l99 184v0h-43l-122 -240l-122 240h-43l99 -184l13 -24h-59v-16h68l20 -44v-36h-88v-16h88v-96h48v96h88v16h-88v37 -l21 43h67v16z" /> - <glyph glyph-name="ion-social-yen" unicode="" horiz-adv-x="384" -d="M384 416l-112 -208h48v-48h-73l-15 -31v-17h88v-48h-88v-96h-80v96h-88v48h88v17l-14 31h-74v48h48l-112 208h80l112 -221l112 221h80z" /> - <glyph glyph-name="ion-social-youtube-outline" unicode="" horiz-adv-x="512" -d="M265 352v0h-9h-9c-65 0 -118 -2 -168 -4h-1h-1c-23 0 -42 -22 -42 -49v-1v-1c-2 -34 -3 -70 -3 -105v0v0c0 -35 1 -70 3 -104v-2v-1c0 -14 5 -26 14 -36c8 -9 17 -13 28 -13h1h1c52 -2 108 -4 166 -4h11v0v0h11c58 0 113 2 166 4h1h1c11 0 20 4 28 13c9 10 14 22 14 36v1 -v2c2 34 3 68 3 104v0v0c0 36 -1 71 -3 105v1v2c0 27 -19 49 -42 49h-1h-1c-49 2 -103 3 -168 3zM265 384v0c58 0 115 0 170 -3c41 0 74 -36 74 -81c2 -36 3 -72 3 -108s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-55 -3 -111 -4 -168 -4h-11h-11c-57 0 -113 1 -168 4 -c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 82 73 82c55 2 112 3 170 3h9h9zM207 94v197l145 -99z" /> - <glyph glyph-name="ion-social-youtube" unicode="" horiz-adv-x="512" -d="M509 299c2 -36 3 -71 3 -107s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-58 -3 -118 -4 -179 -4s-121 1 -179 4c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 81 73 81c55 3 112 4 170 4h9h9c58 0 115 -1 170 -4c41 0 74 -36 74 -81zM207 94l145 98l-145 99 -v-197z" /> - <glyph glyph-name="ion-soup-can-outline" unicode="" horiz-adv-x="320" -d="M160 304c-88 0 -160 29 -160 64s72 64 160 64s160 -29 160 -64s-72 -64 -160 -64zM160 415c-70 0 -126 -19 -126 -43s56 -43 126 -43s126 19 126 43s-56 43 -126 43zM161 288c88 0 158 29 159 64c0 -5 0 -33 -8 -40v-240c0 -35 -64 -64 -152 -64s-152 29 -152 64v240 -c-8 6 -8 40 -8 40c0 -35 73 -64 161 -64zM280 72v80c-18 -10 -43 -17 -72 -21h-2c-6 -20 -24 -35 -46 -35s-40 15 -46 35h-2c-29 4 -54 11 -72 21v-80c1 -2 9 -10 30 -18c24 -9 55 -14 90 -14s67 5 91 14c21 8 29 16 29 18zM280 184v91c-33 -12 -75 -19 -119 -19 -c-45 0 -87 7 -121 19v-91c18 -10 43 -17 73 -21h3c7 17 24 29 44 29s37 -12 44 -29h3c30 4 55 11 73 21zM178 -16zM160 -16h1h-1v0zM312 32l8 -16c0 -7 -3 -14 -8 -20c-21 -26 -81 -44 -152 -44s-131 18 -152 44c-5 6 -8 13 -8 20l8 16v16c0 -35 63 -64 152 -64 -s152 28 152 64v-16z" /> - <glyph glyph-name="ion-soup-can" unicode="" horiz-adv-x="320" -d="M0 368c0 43 53 64 160 64s160 -21 160 -64s-53 -64 -160 -64s-160 21 -160 64zM160 8c-44 0 -80 6 -109 18s-43 28 -43 46v128c0 -9 4 -19 13 -27s21 -15 37 -21s33 -10 54 -13c1 -12 7 -23 16 -31s20 -12 32 -12s23 4 32 12s15 19 16 31c31 4 56 12 75 23s29 24 29 38 -v-128c0 -18 -14 -34 -43 -46s-65 -18 -109 -18zM160 288c44 0 82 6 113 18s47 28 47 46v-8c0 -5 -1 -11 -2 -18s-3 -11 -6 -14v-96c0 -14 -10 -27 -29 -38s-44 -19 -76 -23c-2 11 -8 19 -17 26s-19 11 -30 11s-21 -4 -30 -11s-15 -15 -17 -26c-32 4 -57 12 -76 23 -s-29 24 -29 38v96c-5 5 -8 18 -8 40c0 -18 16 -34 47 -46s69 -18 113 -18zM312 56v-24l8 -16c0 -7 -3 -14 -8 -20c-11 -13 -30 -24 -58 -32s-59 -12 -94 -12s-66 4 -94 12s-47 19 -58 32c-5 6 -8 13 -8 20l8 16v24c0 -18 14 -34 43 -46s65 -18 109 -18s80 6 109 18 -s43 28 43 46z" /> - <glyph glyph-name="ion-speakerphone" unicode="" -d="M39 266c0 -37 20 -69 50 -86c-1 0 -2 1 -3 1s-4 1 -5 1v0c-35 3 -62 33 -69 69c-6 0 -12 7 -12 16c0 8 5 15 11 16c6 42 40 75 81 75h8c-36 -15 -61 -51 -61 -92zM433 357c10 -25 15 -56 15 -88s-5 -63 -15 -88l-3 -9c-6 -14 -15 -26 -24 -34c-10 -10 -22 -19 -34 -20h-3 -c-7 0 -15 2 -22 5c-3 2 -10 5 -10 5c-22 10 -84 28 -115 29c-4 -8 -10 -20 -12 -30c-2 -9 -6 -27 -7 -61c-1 -32 1 -59 3 -82c0 -2 1 -5 1 -7c0 -6 -2 -9 -9 -9h-77c-6 0 -9 3 -9 6v7c2 72 25 140 26 145c2 9 5 17 7 30c2 12 -27 13 -40 24c-29 17 -47 49 -47 86 -c0 41 25 77 59 92h42h19c58 3 114 21 163 50c1 1 3 1 4 2v0c8 4 16 6 24 6c13 0 26 -6 37 -16c9 -9 18 -21 24 -35c1 -3 2 -5 3 -8zM410 180c9 22 15 54 15 89s-6 66 -15 88c-8 18 -19 29 -30 29s-21 -11 -29 -29c-9 -22 -15 -53 -15 -88s6 -67 15 -89c8 -19 18 -33 29 -33 -s22 15 30 33z" /> - <glyph glyph-name="ion-speedometer" unicode="" -d="M312 192l8 -8l-64 -84v-4c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32h4zM224 352c124 0 224 -100 224 -224c0 -34 -8 -67 -22 -96h-36c15 27 25 57 26 88h-32v16h32c-1 29 -9 56 -22 81l-27 -15l-8 13l27 16c-8 12 -16 23 -26 33s-21 18 -33 26l-16 -27l-14 8 -l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -27l-14 -8l-16 27c-12 -8 -23 -16 -33 -26s-19 -21 -26 -33l28 -16l-8 -13l-28 15c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -31 11 -61 26 -88h-36c-14 29 -22 62 -22 96c0 124 100 224 224 224z" /> - <glyph glyph-name="ion-spoon" unicode="" horiz-adv-x="128" -d="M128 288c0 64 -26 128 -64 128s-64 -64 -64 -128v0c1 -25 16 -54 37 -64l1 -1v0c3 -2 10 -6 10 -10c0 0 -16 -199 -16 -210s4 -20 10 -26s14 -9 22 -9v0v0c8 0 16 3 22 9s10 13 10 26s-16 210 -16 210c0 4 7 8 10 10l1 1c22 10 37 38 37 64z" /> - <glyph glyph-name="ion-star" unicode="" -d="M448 248l-139 -104l55 -176l-140 112l-140 -112l55 176l-139 104h172l52 168l53 -168h171z" /> - <glyph glyph-name="ion-stats-bars" unicode="" horiz-adv-x="352" -d="M96 32v320h64v-320h-64zM0 32v96h64v-96h-64zM192 32v160h64v-160h-64zM288 32v224h64v-224h-64z" /> - <glyph glyph-name="ion-steam" unicode="" horiz-adv-x="512" -d="M480 240c0 -20 -16 -37 -37 -37c-20 0 -37 16 -37 37c0 20 16 37 37 37c20 0 37 -17 37 -37zM443 309c38 0 69 -31 69 -69s-31 -70 -69 -70l-67 -48c-2 -26 -24 -47 -51 -47c-25 0 -46 18 -51 41l-196 78c-8 -5 -16 -7 -26 -7c-28 0 -52 24 -52 52s24 52 52 52 -c25 0 45 -18 50 -41l196 -79c8 5 17 8 27 8c2 0 3 -1 5 -1l43 62c0 38 32 69 70 69zM443 286c-26 0 -47 -20 -47 -46s21 -47 47 -47s46 21 46 47s-20 46 -46 46zM52 277c-21 0 -38 -17 -38 -38s17 -38 38 -38c3 0 5 0 8 1l-16 6v0c-15 7 -22 24 -16 39s24 23 39 17v0l19 -7 -c-6 12 -19 20 -34 20zM325 165c-3 0 -6 -1 -9 -1l16 -6c16 -6 23 -24 17 -40s-23 -23 -39 -17c-6 3 -13 6 -19 8c6 -12 19 -20 34 -20c21 0 38 17 38 38s-17 38 -38 38z" /> - <glyph glyph-name="ion-stop" unicode="" horiz-adv-x="384" -d="M373 384c6 0 11 -5 11 -11v-362c0 -6 -5 -11 -11 -11h-362c-6 0 -11 5 -11 11v362c0 6 5 11 11 11h362z" /> - <glyph glyph-name="ion-thermometer" unicode="" horiz-adv-x="160" -d="M127 112c20 -14 33 -38 33 -64c0 -44 -36 -80 -80 -80s-80 36 -80 80c0 27 13 51 33 65v257c0 26 21 46 47 46s47 -20 47 -46v-258zM65 370v-50h30v50c0 8 -7 14 -15 14s-15 -6 -15 -14zM96 160v16h-16v-16h16zM96 192v64h-16v-64h16z" /> - <glyph glyph-name="ion-thumbsdown" unicode="" horiz-adv-x="384" -d="M24 195c-10 5 -18 17 -18 29c0 14 8 25 20 30c-4 5 -6 12 -6 19c0 14 8 25 20 30c-3 5 -5 11 -5 17c0 18 11 24 35 30s74 12 126 9c23 -1 55 -7 76 -7v32h112v-240h-112v16c-15 -1 -31 -4 -40 -14c-22 -23 -40 -65 -40 -108c0 -19 1 -29 -4 -34c-13 -13 -44 9 -52 37 -c-9 34 -1 62 1 87h-103c-19 0 -34 15 -34 34c0 15 10 29 24 33zM336 352c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" /> - <glyph glyph-name="ion-thumbsup" unicode="" horiz-adv-x="384" -d="M360 189c10 -5 18 -17 18 -29c0 -14 -8 -25 -20 -30c4 -5 6 -12 6 -19c0 -14 -8 -25 -20 -30c3 -5 5 -11 5 -17c0 -18 -11 -24 -35 -30s-74 -12 -126 -9c-23 1 -55 7 -76 7v-32h-112v240h112v-16c15 1 31 4 40 14c22 23 40 65 40 108c0 19 -1 29 4 34c13 13 44 -9 52 -37 -c9 -34 1 -62 -1 -87h103c19 0 34 -15 34 -34c0 -15 -10 -29 -24 -33zM48 32c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> - <glyph glyph-name="ion-toggle-filled" unicode="" -d="M320 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM320 320c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM320 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" /> - <glyph glyph-name="ion-toggle" unicode="" -d="M320 288h-192c-53 0 -96 -43 -96 -96s43 -96 96 -96h192c53 0 96 43 96 96s-43 96 -96 96zM320 320v0c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM128 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48 -s-22 48 -48 48zM128 272v0c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80s36 80 80 80z" /> - <glyph glyph-name="ion-transgender" unicode="" horiz-adv-x="512" -d="M368 448h144v-144h-40v76l-101 -100c8 -17 13 -36 13 -56c0 -63 -46 -115 -104 -126v-52h72v-46h-72v-64h-48v64h-72v46h72v52c-59 11 -104 63 -104 126c0 20 5 39 13 56l-22 22l-36 -36l-33 33l36 36l-46 45v-76h-40v144h144v-40h-70l43 -42l36 36l33 -33l-36 -36 -l17 -17c23 22 54 36 89 36c27 0 53 -8 74 -23c0 0 6 -5 15 -13l93 92h-70v40zM256 144c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" /> - <glyph glyph-name="ion-trash-a" unicode="" horiz-adv-x="352" -d="M261 320v0h91v-32h-9s-5 -1 -8 -4s-4 -9 -4 -9l-19 -241c-2 -29 -2 -34 -36 -34h-200c-34 0 -34 5 -36 34l-19 242s-1 6 -4 9s-8 3 -8 3h-9v32h91v29c0 19 14 35 34 35h101c20 0 35 -16 35 -35v-29zM112 349v-29h128v29c0 10 -9 15 -19 15h-91c-10 0 -18 -5 -18 -15z -M104 64h20l-10 192h-21zM187 64v192h-22v-192h22zM249 64l10 192h-20l-11 -192h21z" /> - <glyph glyph-name="ion-trash-b" unicode="" horiz-adv-x="320" -d="M318 315c3 -12 4 -11 -7 -11h-302c-11 0 -10 -1 -7 11c2 9 4 13 4 13c3 9 9 9 19 11l53 7c7 1 7 1 10 7c9 20 10 31 20 31h103c10 0 12 -11 21 -31c3 -6 3 -6 10 -7l53 -6c10 -2 16 -2 19 -11c0 0 2 -5 4 -14zM283 272c17 0 18 -2 17 -15l-19 -242c-2 -12 -2 -15 -17 -15 -h-208c-15 0 -15 3 -17 15l-19 242c-1 12 0 15 17 15h246z" /> - <glyph glyph-name="ion-trophy" unicode="" -d="M448 345c0 -25 2 -73 -22 -122c-15 -30 -36 -55 -63 -75c-23 -16 -49 -28 -77 -35c-16 -17 -32 -27 -46 -31v-33s0 -49 99 -49h13v-32h-256v32h13c85 0 97 35 99 46v36c-14 4 -30 14 -46 31c-28 7 -55 19 -77 35c-27 20 -48 45 -63 75c-17 36 -21 71 -22 97v0v11v0v21v0 -h80c-2 35 0 64 0 64h143h1h1h142s2 -29 0 -64h81v-7zM51 237c17 -34 43 -61 77 -78c-22 40 -33 84 -42 135c-1 8 -2 17 -3 26h-51c1 -23 5 -53 19 -83zM397 237c14 30 18 60 19 83h-51c-1 -9 -3 -18 -4 -26c-9 -51 -20 -95 -42 -135c34 17 61 43 78 78z" /> - <glyph glyph-name="ion-tshirt-outline" unicode="" -d="M146 362l-104 -31l11 -32l39 4l38 5l-2 -38l-14 -255h220l-14 255l-2 38l38 -5l39 -4l11 32l-104 31c-6 -8 -13 -14 -21 -19c-15 -10 -34 -15 -57 -15v0v0c-34 1 -59 11 -78 34zM288 400v0l160 -48l-32 -88l-64 8l16 -289h-288l16 289l-64 -8l-32 88l160 48 -c14 -27 31 -39 64 -40c33 0 50 13 64 40z" /> - <glyph glyph-name="ion-tshirt" unicode="" -d="M448 352l-32 -88l-64 8l16 -288h-288l16 288l-64 -8l-32 88l160 48c14 -27 31 -39 64 -40c33 0 50 13 64 40z" /> - <glyph glyph-name="ion-umbrella" unicode="" -d="M344 160v0v0v0zM104 160v0v0v0zM240 399c116 -8 208 -109 208 -227v-12c-4 25 -26 52 -52 52c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52s-49 -12 -52 -45v-135c0 -17 -6 -33 -18 -45s-29 -19 -46 -19c-35 0 -63 29 -63 64c0 9 7 16 16 16s16 -7 16 -16 -c0 -18 14 -32 31 -32c18 0 32 14 32 32v134c-1 24 -26 46 -52 46c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52c-27 0 -49 -26 -52 -52v18c0 118 92 213 208 221v1c0 9 7 16 16 16s16 -7 16 -16v-1z" /> - <glyph glyph-name="ion-university" unicode="" -d="M224 384l224 -111l-92 -60l-132 -85l-160 102v-198l-32 16v203l-32 21zM358 192l10 -82c-16 -12 -112 -78 -144 -110c-32 32 -128 98 -144 110l9 82l135 -88z" /> - <glyph glyph-name="ion-unlocked" unicode="" horiz-adv-x="384" -d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46c20 -21 33 -51 39 -82h-53c-5 18 -13 35 -24 47v0v1c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80v-31h265 -c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340z" /> - <glyph glyph-name="ion-upload" unicode="" -d="M366 215c45 0 82 -37 82 -83s-37 -84 -82 -84h-110v80h48l-80 84l-80 -84h48v-80h-102c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" /> - <glyph glyph-name="ion-usb" unicode="" horiz-adv-x="256" -d="M16 228v0v0zM256 320c0 -11 -6 -21 -14 -27v0c-2 -1 -3 -5 -3 -7c-1 -20 -3 -36 -9 -50c-7 -19 -20 -33 -39 -46c-17 -12 -29 -21 -36 -34c-7 -12 -11 -28 -11 -53v-24c0 -7 2 -13 10 -18c4 -2 7 -6 10 -9c8 -9 14 -21 14 -34c0 -28 -22 -50 -50 -50s-50 22 -50 50v1v0 -c0 18 10 33 24 42c5 4 9 5 9 18v0c0 14 -3 17 -10 27s-18 17 -32 26c-19 13 -33 27 -40 46c-6 15 -8 31 -9 39s-2 9 -4 11c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32c0 -10 -4 -20 -12 -26c-3 -2 -4 -11 -4 -14v0v0c0 -9 3 -18 7 -28c10 -21 45 -44 52 -44 -s8 5 8 12v196s-1 2 -3 4h-1v1v0c-9 6 -15 16 -15 27c0 18 14 32 32 32s32 -14 32 -32c0 -11 -5 -21 -14 -27v0c-2 -2 -2 -3 -2 -5v-140c0 -10 2 -12 8 -11c13 3 48 30 52 43c3 10 6 23 7 41v1c0 2 -2 4 -3 6c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32zM32 240 -c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM128 368c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM224 304c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" /> - <glyph glyph-name="ion-videocamera" unicode="" -d="M335 263v-66l113 35v-89v-88l-113 35v-65c0 -5 -4 -9 -9 -9h-317c-5 0 -9 4 -9 9v12v55v171c0 5 4 9 9 9h208v38c0 4 -6 10 -10 10h-176v48h178c36 0 65 -29 65 -64v-32h52c5 0 9 -4 9 -9zM226 107c20 0 36 16 36 36s-16 35 -36 35s-36 -15 -36 -35c0 -10 4 -19 11 -26 -h-68c7 7 11 16 11 26c0 20 -16 36 -36 36s-36 -16 -36 -36s16 -36 36 -36h12h95h11z" /> - <glyph glyph-name="ion-volume-high" unicode="" -d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 27 52 27 84s-10 60 -27 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146zM365 369l20 15 -c39 -54 63 -120 63 -192s-24 -138 -63 -192l-20 15c36 49 58 111 58 177s-22 128 -58 177z" /> - <glyph glyph-name="ion-volume-low" unicode="" horiz-adv-x="288" -d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100z" /> - <glyph glyph-name="ion-volume-medium" unicode="" horiz-adv-x="370" -d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146z" /> - <glyph glyph-name="ion-volume-mute" unicode="" -d="M224 231l47 51v-180l-47 51h-65v78h65zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-39 0 -76 10 -108 27l-1 1c-69 38 -115 112 -115 196c0 124 100 224 224 224c39 0 75 -10 107 -28h1zM362 93c20 28 33 62 33 99c0 66 -38 123 -92 151 -c-6 3 -11 6 -17 8c-19 7 -40 11 -62 11c-37 0 -71 -12 -99 -32l73 -74h-76l-36 35c-20 -28 -32 -62 -32 -99c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c19 -7 39 -11 61 -11c37 0 72 12 100 32l-20 20v77z" /> - <glyph glyph-name="ion-wand" unicode="" -d="M192 208l48 48l48 -48l-48 -48zM0 16l176 176l48 -48l-176 -176zM224 352v64h32v-64h-32zM398 344l-45 -45l-23 22l46 45zM127 299l-45 45l22 22l45 -45zM376 50l-46 45l23 23l45 -46zM384 192v32h64v-32h-64z" /> - <glyph glyph-name="ion-waterdrop" unicode="" horiz-adv-x="320" -d="M175 409c40 -41 145 -160 145 -288c0 -85 -72 -153 -160 -153c-56 0 -106 27 -134 69c-6 9 -11 19 -15 29c-7 17 -11 35 -11 55v4c1 67 31 131 64 183c20 31 42 57 59 77c9 10 16 18 22 24l1 1v0c4 3 8 6 14 6c5 0 10 -3 14 -6v0zM160 24c55 0 100 45 100 100 -c0 14 -3 28 -8 40c-17 -65 -70 -116 -136 -130c13 -6 28 -10 44 -10z" /> - <glyph glyph-name="ion-wifi" unicode="" -d="M224 352c80 0 156 -30 214 -84l10 -10l-10 -9l-32 -32l-10 -10l-9 9c-44 41 -103 64 -163 64s-119 -23 -163 -64l-9 -9l-10 10l-32 32l-10 9l10 10c58 54 134 84 214 84v0zM365 192l11 -10l-10 -10l-33 -32l-9 -9l-10 8c-25 22 -57 35 -90 35s-65 -13 -90 -35l-10 -8 -l-9 9l-33 32l-10 10l11 10c37 33 83 52 132 54v0h9v0v0c52 0 102 -19 141 -54zM224 32l-10 10l-52 52l-11 10l12 10c17 11 32 20 61 20s47 -9 62 -20l11 -10l-10 -10l-53 -52z" /> - <glyph glyph-name="ion-wineglass" unicode="" horiz-adv-x="256" -d="M167 153c-11 -4 -24 -8 -24 -32v-94c0 -11 4 -19 12 -25c3 -2 7 -4 15 -6c32 -9 48 -16 50 -18c2 -1 4 -3 4 -7c0 0 -14 -3 -96 -3s-96 3 -96 3c0 4 2 6 4 7c2 2 18 9 50 18c8 2 11 4 14 6c8 6 11 14 11 25v94c0 24 -11 28 -22 32s-18 6 -26 11c-12 7 -23 16 -32 26 -c-20 23 -31 52 -31 87c0 50 4 100 8 114s14 25 31 25h178c17 0 27 -11 31 -25s8 -65 8 -115c0 -35 -11 -63 -31 -86c-9 -10 -20 -19 -32 -26c-8 -5 -15 -7 -26 -11zM128 178c26 0 50 11 67 28l6 6c16 18 22 35 23 65s-2 83 -8 107h-177c-7 -35 -8 -80 -7 -108s7 -46 23 -64 -c2 -3 4 -6 7 -8c17 -16 41 -26 66 -26zM208 277c0 -10 -1 -20 -4 -29s-8 -18 -15 -25l-5 -5c-14 -14 -34 -23 -56 -23c-21 0 -41 8 -55 22l-6 6c-7 7 -12 16 -15 25s-3 15 -4 29c-1 9 0 34 1 53c1 10 2 19 3 22h153c1 -6 2 -14 2 -22c1 -21 1 -45 1 -53zM192 269v0v26 -c0 4 -4 8 -8 8s-8 -4 -8 -8v-26c0 -3 1 -6 3 -7c1 -1 3 -1 5 -1c4 0 8 3 8 8zM191 316c1 2 1 4 1 6s-2 4 -4 5s-4 1 -6 1s-4 -1 -5 -3s-1 -4 -1 -6s2 -4 4 -5s4 -1 6 -1s4 1 5 3z" /> - <glyph glyph-name="ion-woman" unicode="" horiz-adv-x="192" -d="M30 299c3 12 17 33 42 34h48c24 -1 38 -22 42 -34l29 -104c6 -23 -21 -32 -27 -10l-26 96h-9l46 -169h-43v-127c0 -23 -31 -23 -31 0v127h-10v-127c0 -23 -32 -23 -32 0v127h-42l45 169h-7l-27 -96c-7 -21 -33 -13 -27 10zM133 379c0 -21 -17 -37 -37 -37s-37 16 -37 37 -s17 37 37 37s37 -16 37 -37z" /> - <glyph glyph-name="ion-wrench" unicode="" -d="M430 333c14 -14 19 -31 18 -44s-6 -39 -32 -65s-77 -42 -113 -24c-5 3 -13 5 -21 -3c-10 -9 -202 -215 -202 -215c-17 -19 -48 -18 -66 0s-19 49 0 66c0 0 207 194 215 202s5 16 3 22c-20 47 2 89 24 112c22 24 51 31 65 32c13 1 31 -5 44 -18l-57 -56l10 -56l55 -10z -M59 5c6 6 6 17 0 23s-16 6 -22 0s-6 -17 0 -23s16 -6 22 0z" /> - <glyph glyph-name="ion-xbox" unicode="" -d="M95 200c-49 -72 -50 -139 -50 -143c-28 38 -45 84 -45 135c0 67 30 128 77 169l3 -1c51 -18 93 -68 93 -68s-38 -33 -78 -92zM448 192c0 -51 -17 -97 -45 -135c0 4 -1 71 -50 143c-40 59 -78 92 -78 92s42 50 93 68l3 1c47 -41 77 -102 77 -169zM169 367 -c-37 17 -65 12 -72 10c36 25 80 39 127 39s91 -14 127 -39c-7 2 -35 6 -72 -10c-29 -13 -55 -35 -55 -35s-26 22 -55 35zM327 155c40 -49 54 -85 62 -108l2 -5c-41 -46 -101 -74 -167 -74s-126 28 -167 74l1 5c8 23 23 59 63 108c46 57 103 94 103 94s57 -37 103 -94z" /> - </font> -</defs></svg> diff --git a/dashboard/lib/ionicons/fonts/ionicons.ttf b/dashboard/lib/ionicons/fonts/ionicons.ttf deleted file mode 100644 index c4e4632486d863337c1c73478ddb3c20726c55a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188508 zcmdqKd3YSxbtign?ORt@^;W&_3xLMn=x&lAfC5MmBta73YC&8CYN067k||lTWXX~t zQE_C)9xI6*JGK&YGLG%UPNFP!?D$K}?6D`AIL_uIZ{DMw_kGD^@@8b(aXfh$=>1ML zK!TF&*vWkJ#{;^%s;jH2?>+b2v;59Ew;5-Qh1nVt*`+;ujvc)J9r`zM<e%}(E*%{i zpWS};j~U}hykEWR{<D|v7al0!{bP9k(_L?RxG4VO%fG;cKRZU}pSyJL{qHayo5cG| zjOjmk@7XtE%N)EvfUS1#>)(9tW6xatHO9n;nec*i{+_dU3l~575hi>H_hX&&I3T_x zUBUYo@xFTg{)Zo%HP}A9{}aZ{r(XYtyUvO~`q^J(!pHG_=Ck*oee9C_I`bhWeCo?M zzxcq}`|tUQ@c;1u-hYcR;rlMV;f)Xf=x_Y#Uozn{YiQmVE<JS5r62nDA9$Gw*Cd>O z0#E8a`~9h(_(R%$@guDt+StB_N&GGR8%)M22lzQ0UD(+E152@Iad)PObZ+m@+1$Z) z`P}^7?CRIpH~x`defcUI=2w}I!@)OgoK_6p(e?DqZhZC)yrZ+SOk&iZaaP1$<ZIop z?fBa6uPt7G^7^k_|LyC)d;JU7|K$2#T>sD4uU-GYum6|pe}Da@>)*QmKfkVg-THd? z>$z|I<I68I_BHmk?O&Vv+QQfV$MyGK|216m`Rjjl{m+AI{u<Z(S6uUr>;L?9`RfL* ziGF?N<(I=^SO_zF-9BvZu)B80ZrdaFkUe1c*>$^Ym+ZWqv6HrI+qPxvp})PQKWOZC z_s5l+gx~_Mq371WtyJ22{QqD30&~%!ALYj};wtO+>v$&$Ok80C=fXiI2>h^wJwDHv zs>l*f6J6P9w%nH6Xt@>lxkt~P<Hy%O?(!B<Cg2<XIljh1xO1Fs_d6ILN#@du%4H^q zvaq6X@S1oK8<8EQOBNy#+m6H|@mLhY>PF)&Ez+zdRHafXH|pJJXWWanEAcL#{8tr8 z*4NMIvZVZ>9FZfw@25>w(^Qk6*7fzzjE*ip|9mi-FJEJ8{7TTTlAp&`;G(cX+`<ns z&e>sNfO*$-9Vy!MD(zOIBDU7n)|^#mt+?v*BDxcBMUh|St4zThc*7?dS7bi7_@cdh zo8O1)`2_*pV;3|o$<hUMQBmYGn2@4!kSU6IjERc4H{&;6^Hll5E6-f<O}88=#oK6> zo@{m-t#&Kk@)BWAv>4&_8QxM`;|1R8b|!hFb!}~Vb@^~a)Wy{LJ5t!Vdk3b+B_Z;$ zh#<D62j2Pc>gs()VplA-D`9k}#i1c_nkay-uVIW7mhhu^KeO39b{1bOMw+eO7hk=4 z>B^<6SFiS_$}0DH5u=*-GbV`1_#BRNwnTS3N_SZBCIq(`t+yvSt<rcR9t#T!8ZC;3 z%JZrr3eV{={W-3RimL0XEQ&Aa`U|~#J3PWKu_SR|)Dm#pIT2h(-*TQ_ge7nyF^j+! z;_-MHBUS@@5Je_BAP2s2JdxvFyvDeGpKgcr3wk80k4MwdaXlM(@@`$fTTeyw(Z2{q zBB8$+)g!4}=uq>^)E7R77hmCgCg|Eh>e^xI+PoV<*V^59D_)6%A^~OSQ#^}|_~Sd# zrB))kbXuT^8>40m^@$n&(H<QXQ6M_-(;(COS8tH1ckeD=<@-RFieIDy7ce=+i;QDh zE}^}`F%U=C8>>`ZPz3WN5esvCOH65U53fX@_C)u7Jsr`<ZuT6c(7C^rKA={});IdI z$r}MpXedArA9NuuxpnRkO=@ZzbEnPMZcydbG@+XW7gM8Y7&%)AXwn5S>TMVNGF}j< z@u^#QqjD?fY_xAHO+bzdbi0cn1P{1`9|L(f(ZnN~c*KTWDHFl*T@y5Ih-be33XT}l zBWdoxnsZ)3liqysiTg1aoNvsRs8@+s+LeGS0!rXA>M*-?&b$^Kf;m$|D`|#fv}Oci zXg+l-H@x{4y7caS>zpCx#hk$m;lg>GAOsUrIEn+p=A4OkiO{^q8TiI>eTu6@o7b2! zTzm}*;b!dRYmkRm*jcv5F8KF8!8P+N7a;cyL7Zc%tjMZzo++lRnCF<N37UxJaHh*# zKgr|}H#ONjX>m>Bf}shgn8BE_#0-Pj!e9$`-TBa^JJ;@7J9FyLfrc9$C`Xz@Wjood z*%-b?o&GV|yZCR7=Y@DoRp_6%sM0$F{J!zAm+)HM7JVF#C0gU%PJ5zvgG#w~RXm1M z@K2w08(R<NF^hV)*}R5-q<ZJJ@u6nE;JDRdZm2mjaA;@MFr5f)lFW;GJ=5=bx*oQZ zUOE<WWG;7-n4FrK3_F(T#S8gLU%uca%}~hpQpHkZq+Trjn4^cFF`!{($uYwrL)Qfi zB50`f*Q&0QFZ4A>MvvsPQ8zidcdVYyxl!Fny5V#t+e{}@(MZTL3_JOtrP{J-r!)Q4 zY$_4c^-w64&X+3#`C`JeEGLxzWz95=NXRu5O;rp{3ENiK3Ms0g%CIb<9XH1{#5~qw z$NeK?eYLElseI1hxJ1=3ssfX_AfJ>hQRJpBs2W#SphQ@p>`0+140b|md}y#yFBLQC zR5B5D!Y~CwE!Pc2nmk&HwlI8?oTPOlj{SO*mld%jR^l`TXabO$-?GoI6xaQtzptgW z_FcQ$scZGlDgIch;zY6$=W6g;;l=f<+?QJW_O&GZ)jOT_PjOZ?A~r0Gh*7<{NAnUq z%zW^$&!VuPeSazjf#Gq8RuWPe40(k~B9mbKfG&b~l1UOfs*s*v;0%3=JGQB-5{vSP z8g6#WQ+xvYE(e~;@mQ0`W0i*5Qo9wyF!+;3&A{U$cTZ*Rp7M>qH;j()dOWYa;qV(? z(Ut;R@OR@IWhTli8l;D$GHFHUDvS=5pJa+41catJtq2RT7-z9UET09Py|`<ennF#A z8sR3t(U8)O#(C`~pW>x>X^OY_r>ITqmxK0&!^QQV<A;l!1q}<Dxat>+SBu4-oY|z+ z0L&Po$C8A$LB60#qDYMq1<>VY1LW6kz%5_8^~*qpTgK#n2OTP2>ow?bxH$IOWOzmU z=6uqHk^rj~pQwruOaoC?z$=(d@<E14breG=6UShLQly4%a*h6NxF%@TB*#d#xA0El zkBUEE#3*g$9t@6;;lX%t*t!1`@_2;pz~rm@mC3Q;W~E$+sgglD0Yi0*jW#?G*dhf! zmgimK+;I|tP?2#c2C_5DQ$k%)<Eqktwb^Nt$n3@w9qdoQoB)US_J+CTh`V9WTe9?s ztf|K&>6ofLF3FZ4<G5psw@cCr7e9cvc~Q(82EB?hA9bWzNf2KU4Cz5hRS!#&c34#( zkqqGl5pu<s99ude%Gz-*)t7K$Ues{)?=C600ro_izL<)e^2&s~nqb@5VgHb(SR#0n zOYA&ZkDRHTouv6=n5uC*RF5p12eC2bqf9pCg?2lYY;S9C>vqOQ2Ah42YPpb2PNXJa zVLEoS86ox9Gc03?E&JVZSaDF+uv;cE*%RX(uu`C6uoHDl?o-(agwuZtUiWI+`m&~N z%hhvh`Di5PtY6`N#4eI#+WIoAtzXhK{=C-jc%IYWdtHB?Gx*TG{<0#!!dGDn7Fm@I zvL*ijQ)Eq6wDW=iny4~UF(Db4P(H~trb`+WE;Ng@1o=f)k;M0MHqc+MRV(FEK9^3# zBaW>rEXk85O<9QKo)JR5o`f+CG3||c%6Mm@URGkA@rklRwk7NZ{*)by+3O#s*ZGF- z919u!KX{<iIneoLHv7vv`ulhE^P#By1^WC8cC^nl`v0nXpxZt0hHL?!_3xlQL2;l@ zSJ5XIa=655te*|BXZ@$`5R82<2Dwtm3X*P_m}t_R#aW094PmpFD+X7>9Eu6EPjgL2 zq%N=6=qLJ&jYM9F#1{qz>h*Ftla5Bv{h@)O!DhX`-rv_K*UBIT2vN!u6Y)qYnglUi z?nDA&1eQ8kWMl3a>{G9-#!Kyb#U1aqOYuaj3&%_)=L}E&Vasu>^~dPdMPt_l(-hY6 z8ohdT^@`6|@!_}VL#|m)(Tc^amznkO!<O$jMaLN(?TzotFJXM2XEC5IG`=(bPB*Z* zRapR6izhWj0M|=Pw1qwrbfKq^XheJCNs0+why^;J+v8Yr#AsZhmWFwygK-4E2IIMP zd!RTtSmYYLf^_yuz`74@c^&P~|51Km05AQ1$M_=H`_>1IC$z$iKEQYAwH}9iMn6Uq zXFwcowoxJ>7|gI++xUvM-1^P*Jz(~Y?@6*@qEi{lNaS;nw=+xt$grexN#U|6VImOJ zumnBDjzSCqYDlLV)lwlfoE~b`DlIMA?0Pnb4HD*U7?C~B$6N;MM{f|WK}Je_N&p*t zGcD$$x2sCqiDffUp`Lz3e`C5<OS_9w=$>>fpFR=^yW-HO7kN6Gz9&`Y+bgM$r7HeT zsgk;LPr6L)C)w2-Ynsb_Y?K}I58D>BJD&@q4;XCN>>@m0uB(EKo}7fGtl*F$1bYfQ zYH~~;5Oa9w=J1n_iMqgOFrlq*(<5((yl~a#aV73G>acsuv5NBTnBa>i9)J83kC(V0 zC5}m&sBvDK+rk1pcHobE<V|lnIynaMs;RdX;E0C5aw{u<Gq&<Vl17Mn2Op4n2S-iB zG(L}BGCa-&mPC(5WXNvn)YgtD-=QO~(csr;-WGmIvo1U1pR83%D&U&Irl836lnrVt z0Al8n<n{wsl4O{=kTWm{d*A~<2Zq8ql5!H<bc;64X2wPa`ZC>Yx8#<a#7_0GHW{%S zJ_pokqXNQ*d3OQ~75Ji?g8^mR^IRsn(>%qKW74_3UVLazrU2O`D%-3-+j}m{x#-R- zcq?d5+}nGPXsvGNLS?`oNLcfCDQyroF(dO+cg>G9IXnkte;T9~CFRcfh`XJ@?x6oY zpG}2i>G~6;JUkRx!jwT5p<$)-&=Z0LaGCS_aQ-c>W2V+0b>vtxvLX6qxKXeJs7tU6 zuo2Kzm=0cIynFdqF5|&5)e7KY{)RzdKU_?qUBV%>N#s|8Ga?v&4r;%90H5PioXQum zi?%|Bpb=O2TVb2q0K<r37(1KiPLt(<9ND}v%<=UTokW30JN$B5G5*jfgtXoHf|)Fu zcm0yVpNW<1^)H1KL)lj@TjeAVUF2%0cW;J!udxhaSP9zz2Z9Fh(%{Mi%A;?pHfzAY z;3BIc#tuLYJaQg*oAiA!miUhg!vBDdmER=_f{=9}jg{r!6C}v!Bk(=euPX9$BAJFl z-cgi8=sM&TZZ9&Q|0<t?uG2q7Uz9?Zx?|l=&+6)7dmZoE&uUsh)BaR6#6J!8e&nN? zme;i37scNXc7l7cm;V|z-;d#5$}d_n?}HE{(~anY#s+shaq~J=#|=Jub<3Sqy5-N} zR@APS{~CSo-7BQfy~YB=4|gHp1o!OzG~G*AZ?u7KmDkjpjqLSr7y9Sl=wFihr_%Lk z5`hlE&0f{NpZ&X=4GlW@QKmvZUgN8<X<gWM(`=6IVfz^<x%i?7*!4EXH8ATcgQ64R zE1gv1f(##(%Np#RC>Kl#Ft3^5(8bmYb5k55IkLjSXi+Hatgw*B5jU_`n64=L64Q0% zC{uK0A>#ub24E53C;yA@z2eU;E-ozW+BGwiN=74$Ego7tbnw8!{)PSf_U_uVYtQ`d znYo#{S$}d{dwgWDzfsO7r&H63Sj3BZpo1GvrU^m>EpOPQUMt}>%CXisZ1@0JYzi<} z0H%>u3WZ;W2?N!NBZ2zjWUkP&vGH8S+>2-GnYfS?SAj}=zv(#Ud*5TauDQ?DYL>}$ z)2eCKXD?m4a^>l#zsQRv0NmktG?R(O9a$}{X0xzt-XB;t=K(TkW@!C0mc<uBrWU#q zc#uB%DaD=)`oCc7eF&pF#76wVY9^vfm?m>1QDN8!ClMnc!ws8F!>yXBLiQ-}o3f|T z?SP?3_5`AbD+S<JBz?wb0C=|W3hA^Vg$^tpP?Q8bRPn$8yohl{IdDJ_;({hD_6~^r zL&3QpTU=C>xG3)5ADp##09=p|gaeCsi;3NvCp1~s0@(rECKC(6*+%Qpc64qD8^F`B zFn~|TlCdb^(>;_efY)Yvm}8*_P=`5xlM&0CmoJ;yg!#-fW+F@b`IvEeDtNuT@hKhY z?FVwP_x&}7@2_Q}`nUW3YO`AFeLrR#LFAi2Ikf@=A_Q;)2SiKW0=NVUPr7`WUh9(d z?6bfI6llTAm+2Mg#j{hACDkN41shAc{ET7X#AlwtrH1}Y(6&*G?J|6mrBA}h23;0k zG%-~(&@aGei9}~Wz75R@SA=l{Mbev}Lj1ns!<A1~8WR+ksgcgyKt?-IlMul4l8EyM z%A=#@^}nyR%NePZuxxvKd34vGk5$TJomzfGPvq2mZGMc#t~Y>B@F&1~7QBoJe@v60 zB<+x?i!!A692x|T6gU=})*@ZDP%V+~9&=%;lKcYqd8!xYGr%2tZ3-rvTG^aw{E1Mg z*e!&tx$e*V_LqtwWBorFp^)+U;(JYlhjf0*3KhD=P^iEAGdAYM=jlT}ZiI@)`ZoZ9 zZuM(b#KJvRU~PXK79)@#cz0+Ntdf%;C|3kRgk)J+VgL}~&noglwD;#|-i;ZvY2?>8 zwD;!wPcLuZzPx>@nod{KV}aKGnR9#hp4-byIJ|xN7!Iea*Mr&dWgOmn4&P1w8skOG zff(%8LHOLe5fT5urxsigkA{30L%z-A2=oZXDrhPia9hw=O&7FNOowfy!y<<zrIIBD zF|RH$RVCn8WsttxgG)stz>B}9Yghc}p85HGd-m;~Z3TbbcH2r~%zB>Brc?yd0eKOR z!MKMIg;2!DH}<{u%_H3{`;As39^-i-q<>wvZT*S@JLcGb6&FN$JRt~Ah*yLUisA=_ zqVQQ!{H!ptbAfw`^bdw@8+_TY1wlOJ7>I$1mxI@XTlNnfnzJ_fljs`93@WjX-*UOk z6EMW&fH!4<AW67;u-1AW&B4H<33xPGa=msNLh?0xn*hkFwtB8j1y-4bUWCKc3xyvQ zPw)7vYr9PMY3_;2Hw?!y_>yj8Fi(k{nd@J2%_G6wSq8g}Vozlz+45in7&VNeMJkLs z0kL99mVuT^l6)9iSd!;84IV1fOwBZONtF;d#^s``J53kPv%K*X*g85zPwo_ptHFa< z4B~<nxzASt9H-c*KSW+UgbIU-fE*W~B0$umBs~_ww!q>MI~7i9DhmlAxC=EPGh_yl z%>n0!piqD{81NP!S^uglz5_wXcZil{t$*3F)*MOtoUZ>G;P;}{XW`NNejj$C&mwG! zwfxZ?^(d_Vi6Ky?pIR`729o!Ju|Pw}yWBuQ$42*gyQK(1ppANGQW!@FoBk<?-Rbcn zG&EY`<pobwJOb4MySdZ#@*J9NT8Luu$ol6#r^D$tep1rXnsiO&Vf8bg(HvbIoQ)lY zu`KaB;|e}f;&;N#6pzIGLEc2<S&|?MZU;IboIpU~4^-P$|3H_7++gT5nb`cOEyA&| zp{E4tbZ9V#ZjfyBA-nxR+B67N%E5UC!%4zi2;VdduLp`jJ`XGn!EBN~3X|bDVPfMx z6qntIxN%mmmWtVQJmxw&q!$ls;bwH)v!zOTSZGW`N%w$<ZV-(L(0;O2lxq(>lnL*s zPUfmRcb3bu_r&+N+xy$MM{GcbgZX>{u$cdJ#vYBtB7=p>?95+v_IEn_=k189CJKeY z0?AE`26*PJ;28s+LzMxct(L$td`<<g5^9aK1B{wXd@F-f38Iybf^($>7&@#{&LqRO z8MPwdRfFqjIv>yT94}EYy9<R=nSkQi5{bvy0TAL-sw%Hv)6LJD+Eqkt{y8GLQf&QC zVv;K;W|+_N8Lk`ItgV!kkgf^)&HSh1@y|qU)gZGd;B^-GBx$sI(%)7<bAiugGsNU` zHfKH@WPXt*fWQLeT{uiehcM4sshH0J?@9ACAa`g=l6GKq;;?R=4EGxO0;=pax`;?r zJhjW8r^x&InyQCHu8R(T$d+`;S^w$J$6C{|=u9g*{*tbINr6rLC4g}9kS*<(oMBtq z{Tn-~JMgFmwBE#C(`elu_Mrd3Hn_68{h8@@28Q(PFd(+FB55^nku-;qQ5jbe6I69o z(a$qoQ+4ee(<D`s&S3=Liz8Af11E;$hb~YE$iy3Y31dVdZdus7XFgudR<n`5NX<w# zy<v*@6LL-9b)L*!3Jy|yP$b8j5bXfgMij5n^<WcXLiRp~@u)(HcPm}B^~Q;r%cm<P z;1N-$y}6q-^Tn}#2YxGuponyaCaT@yc)x{omEb^ks9mkqkN-gZxRkqZ`t)TJPPe|f zr@?_5>WnTY0G^O+EVlbPL!Gh1am=XT{Y3vSKKQ{0!H9v611ZB~@<lnu8P+dl9WZ2+ zaDEnqkeM72on||#w#4qW)(>B6UE%EN%j_yX6Yzw_;H#LoC3fD|Ll$|U;P=HBV^G6I zMpOL^lr7YTa62I@u)eU_Ox4Kv1)Kuo?AxBP;yYlmeA<h+22E!hvK1gPb_8NF@K>wm zm4ICc(4jO6*zgA|m0J|qUH?r>;~^o&Zxhx(rhq-n#h7B6R^;6Pfi&Y+R74?-Pshee zR!fH(u|g8jgpHz4%dpZA$H1(FRbg=MTd;b1$p>5V2RsLHjBZ&`r=?cgQ?K22S4~h$ zL&qnsT=|i@ujLlHL(9*<4Y%BwV{6c_O++>!8Jhj+WK0rNK_p{Un5$Kad5QZ7ziLwO zMUa+(;R4H^rd==ZWNdV3uw2SWPO}>G6txZkj@PnUZ*=PPf=F?vo9K4vb-bJKAm8bA zL+J67HQ6j@Q+mQl97sgs`e@xyYBg0aXOnt7(mR&SmQDF@mv`(~-tpDlI8n={YNlMP zDMo#iPO6s^2}jE&gG+HRnbi``2XOX|<y-pMKs0F4-%B`uA&V%iXQ+}BhP|sH)(p!^ z5#})NstB7>CiDg97egQyoJ`gvWxObS9wFx>9%N0{Dheh|15u$$yWUV6-FgE#ABdS_ zZV?ck@VcIgX#0)Mt_><?u~V{>2hvulQ#6&qCY<|D&P^Rixw%f>l$(DxSS$_}KM;)- zJ4H<$9@bRs#G(f>HqJBD{(jZKiLv-8oK+m8aisi|Vqh0g%%_4rPO=3I&K=19IOH!v zVn7=r90x;zg42YVhE(OG8x}&A6<VTg$U5rSf)%nBF5G+f*)u0^JAP#8z`i}Z{HYz? zp5@qTjYX2pD8jg8GJvJy-nZEYCicJN9A6z*@mRZM^D?{T?Z$_%eUvxo`dc2qaO+!q z`syQ?Z-^a2XI^24*tkD3HX4Q&g+mSmoy)>W*z}MVaBZ<YN}`1=>|L1LJ~3X*gCmjn zlTd&xZ-C~I#Q@2G%{53ckg)9~S-=IwNth~m7@v^XJsnl9<IG-u1yZ(1T6+opRzXwk zVmetaB(jc)xR0EM`hYzYvoob~#!SE>g5plgy2O!S=VTLwaxz`CRiHr=Q90z)Z>z&V zcP75nxGOnYtRyd_%1Jd`D!5^oMux~;B@~h)9CuNauv;vurXVD7TC!3cP2Sa5*%lKG zEf!Nv)!9b;M)HUSx;e~T-?k)3A)?9ISPG&ifX9$ZgboCLJ%6fP{@I@`m-Da7XR`Sd ze6?~<<&&SpOR<>E7U@>7wLtHyptlOkvdi}Py9T)`YnXwUkFc>|X`N@J4pnluBmmCj zB?+R6G#Ly-U}=)ECGx$K(P*Pmi*9xGybfrN@J?$SBSC2^Gy?G!HIVG!z!Fu--=Pc{ z*vCDX<Qv=#SrNwyMaHaDvYw4*$0WV%00v9LT#*{ELv=g40o?vpDB`5u@Vi{(aYRDV zvA7aWSehj%;czG`Nv5W2x=r%-<*$KX-i_GC7`uP*MFR?{j|_M&tfF6toI~H^jmS?b z$eWa<C2S;eVkH@VV1Msa#6SL}b60$OpnrI%e{5i^5*^;DBHt_MDsdg`0L;%efd=U8 z7K&8R{nogc=Qbba)BG<QQN0ik%c4513L!OXnx<r#;dCmj9vsXKPtC>CLbfk0WcVBN z?Lyj2*_NZn6nQviBvn;c+;GB<B+cSdF1G$To*qaEse$wc?~u+hNWUWz5B(0x01N@z zOmm7d$6Nx|YeDK5rH^&_+UV-)>gd%gSJu|9Tmugf&wvN7;yx;5-Z1+;-$ZhlR7_DY zXd@4G1X(!<|E|Ko5>;gt_$BB@o+5aagdr>{G4Ql09aTj->f(zjjL0Zm27{Okv+wRY zf9%#v#Pk2+cde}WF<l!T?C-0V^BLFHJRK=Py4$SwqEj(4ttlrG76n0<E!lG?@J4k5 zh)N(}52MBJ?#pKTvelb$R$jU*wEh88cuLbvr6VbZ8c`MP8cxdgJquLw(*Y{E*K&U6 z0+-<H{qy@ZbrMYG$k2S7G)*DmybrkDULRJVBsaLIq(#^TEpDm(+%RYQ1l{NknDAz~ z3TlTzHaHFv5_bWOQTDEKfnw6C2*%bd)6iC#Zg4|i1?@5B#OA6c!ko2iZW@+(k{S9& zy4w*-ciV%pDC4GwzQau|&4kVTz1`J^>HKY5dGm&xGV{Kxc48dMi~CVhaA^P0#iI-J zbN<d9<3p55P%PxLaMM#UFASl$5u>RMW74S#>4FZt5Wp@nc~7t!>J=HVi`SKbu~bF` zMAgGQ9*i*(Km!1m@W}>o2ed^@;XiGJFjH+~{ZrTx!g`3uk$cAbup_U(#6!kkQI_5M z|7$oAe%vs3<bEHCh^lf<(R8_qIGCuo$dM2;Za5aV@#GUg|JVPAVR46B#xO@h;@@i_ zgriKYW9T7FFD;?-Ur3$%9RjkDC_A&Js`o4E7_4PWl1sBO7$w;_Sm>raH{o;U*t9<h zazd&FKqBQ~z@|dv5P4b1;?e+!9K=Q=b5a9L9E;^*Imm!mG*T@aFtVUe6(~-~Dj0gb zI6czdkqt*V$B+R}pFaJp5WIdd2+LZDxkTbOH;>_y(I61J{*UG-tSe?<_rClRTSHEP zjtIiA-z3i+I))%Pq_>GHB#}8gh|Ok}bCiUV>!^t)VhEJhi)Vdfrmhy(0MS^%M0A{& zoY7#eZP1|?&vqg2+ibT#TTGdRR>7F)rAZMA2!Tc50dfXqg&aIMIOO0FIglnbK0e+a zZ$~rUV7U_06Hu=k00CJR1o*}T5QY*s6_^}QVdT#RrbP_41qC1L6XP-dSRX>zkDr+D zXhtYHGZ7Al4O3G?QOS*04^=C4AUsjQ?#Hk4$<BNb@$QqO0BZj#I2=bJbw~wnwRv7} z$>FP4d;J8Vijc)7^mm?}U3}5S+^xZng1@i|$u1Gh4H`3|vB;%m%Dm|%p->F~&I3^> zri=?n#lPm6E5F=oRU)l1Kzc6a6>cOOb)dJQ(nU8=;XzDC2Pf<6*Y#(zx@_O6{IRP3 zvBDq4p&tU<+Msl0{r`bE9|h71YUA%J+D@o)2DoyCy?gORhx7mh0356{k|_{c58NRD zY;U)?4$YxssBSn0=!(Ljp-1QvcHz6e0>Yz+Oc&0Il_L2h`5YxJCLPZKSOf$EK4plo zqFxk>Z>WL<^>m`i2Y75eg5;wv%1u5-u<G;lvQ0`#Qqs~i4P1GJuR%h*xQV$IadiFD zMSLM;PX+RxT|?hVhZf)kBG0l^6jbC}kOEUwL0Q3PNT9;FVTd8^Y5c?>bBcgQNnFsi zW?!|E%chcBlo%!4E0`XyY<Xl8>4LXZQF<uzoxz-an4)VRqnFOkfq|U^?-z{cEc<fk z?I=`;rn#|IbFE*&2?INS_)V}=Ll1>X-moIT(p9vTB+d@M8%DC76wERbJH5&p1gy3o zvOS|p(;}{o_?%`&#$6ThZDgqtZ>fM{>1l)J{Mx#2@J|@U^)+8$-MhbVH$SodPh2rx z`r;Scvh0`;DKw2ippPIvpN4f8@xzr|CI!gM$7g3_2>I6XTxsARQ!{V_5HbPS3AK<= zJMCd{gu~N*L6ZzMKHzwf&PsKE#)iPI-Fr{2e^8SLjiKY)2TenATJ5EI9*=Myikh01 zDDL{uiI^ldGETDez?fzkcDOl!7^M<x4<mt!XtN6Jponde&9b-s5`o6EJ=?R%1PR{Z zDnKPkKBFUB4)!LDq>}(1$gIXj<i`Nnz_88$ZpPV?K&CiO7tej?^H=<|!2PLho$=9T zU#$xGGZMB@?@|<sNUEFJ$f|=S+5jv^S%Tnc3gIH9h!Pn*I7F3=ENJivJ|#zK!>Pil ziK~}NBO|3tt%N!nu`f~9pd&iKPLx~Tjs_<s`(GLzDHTg2qi(pknOtZmWqFj`osEn` zdLNvW0jV&a^!MK}H*A(*sFP9&g(Acep8;^BQ+g!?(Y%Ai2xNgkE{FNB)SlSHbNAf2 zurr^Ro&G|4b+}v}F7dTJ<E>}=`;^4Y)N*nB^(8tQd>8zmHTXYiHo#{6>HfY-8NOT) zMOCpCl#?JlX`?0D!tF##SCA3ZK+<9%8v|)WR)Bb>kV1<DClC@iJ7Ixi<XS>c1Q;lf z)4>LejWHM)N&@Ndx)?n%J$)kBUH?b-gOO~euP>7=hV(ztLxuTMr{)X6E-w@c1pMZB zo+tzQpv{NSW)FE<4ZqqPfXR~pghj4$o^u~r*n~~>vPW{+Xhc9>TYMS-C3F=4Ahd`a zU^PC%y8yxA^|lKf=|D)zqVfZkpvm^9Yh#86b`VN@YRq#Eqz9kkGh;CqJChurDdLF0 zOYhmCY;VN9u+Ze<;5Mm!%+>hzU0&m^&M{XF_F6lX9rc745|MeshdaIYf0ca<?N<r? zg3%9{5Cuf|1fBs%PVp3M1o1E-LE^lwmEeO%T&<}i_O7~=1xsmUv3QTRAbAD$dcA=p zWpDzF_6lu+f#7!+<MCoVmT??89_N_za1fnLtj3Qg=#zXd`VcA{jQiHVin4|9PyVEB znl{hhN5>wDQaA!8G5%odJOz8I1hj51I|h8`9(F%_lwD>&>i@{)r`H~T^XXH!-*)uy z@_~_|up+<i__WBCH$C$3gO^@^@xJr-p1bSL)yW;(DXVvMpbs?|_cUr%=-p%cU~wW* z5@7|P&2!H@HiOAO`_`wPe9IF{i~DE&!Dg|L4$D4;QeoP21xY~y4Xa4iMW7Q^LyAB` zDDHH}nL`HwO7Gq^*BY;@4w)-1eC%GhokH#yRJWIm0|_X$)p*xy10@7Qv>U+7RJi9} z7l#3+fhq7A%KXYm+Mtg+<ABq^F_5AF6A>Iz2wef%*g)<E?cgpdNsn#<5F9`_oQ^y4 z&!{RTik&^Hsb|lssEND}J9ld8-!0s`Pm;q>iu+6ffGWRlA6G0SE(!8JxGqrdFD?kk zy8zn$Embu&+(hR5qagwM;t#@-91`z9H4pM8M2r84X&9z~S`s{Y7p0hgV*qrUn*-2~ zr>ygoE-&=ntbgVD`1SFzr;$ezlEwSS?ooJ%^G}T351i3dI8qxQ9lI3f4_zO-jl&q{ z{O!*QGMXg_kT05GX>tl-P)pM(tYsnJRW!Mbau*9QGQAS3^yX&~{M`Vzpq8UtOnE@Q z`5gEg_B2z^gRh|qD9H`)01Ut{22#F^`AhL1E-l0p_>0FQ06HN_0yc+eBaZH|yjr2b z=v7O>qp2YH(B1qDri$g5(<i1)$C?@u1YNWoOVkBnWNO!tKRoOYeF=p(n%zG=-ERkb zV~Z9bs2!SRX*&Q)S&L)O7YBz5&ld&<3&d*z^7(%p{VB3JWIa9LUmUFpwuxLtH7v|Q zEQ(}$aq+yaIjAi)M8!BCvIN5v4b)rV20@6<WOmrJPqMJ8hL>14tR7`*SY0TW_V3#> zKRYu$wUZ`Ddt$u5QJO2yxzSy2(s6@C8?P6%q(o6wK}HdzSb3tdsml>f#bM~D5k3L1 zuMLFMgVb%ob?c5JnAcU?6BJg50W_d#ifBquD2fz|a!3m#<#JUrMMcvtS^(m5A%_d9 zE+B-0!QeUym$2bHi_(@W#Z0mg3M(*cxD1;Vu6a0ANM_z{2``~;NfPBd-jWq8O0VPm zaLF`F0Y5;nL0&V^ugU)X;)^=$+b+{oRl5VmAktl6J|RO~2vIObT(P(WmICrdspP7v z9K=RZkD_EiQDNqGaHV$fd%keRuX9Ek3(^MOF>FQ;N;A-1h=-$=3T8j7S~swGq5cE^ zj(j|r2ao`S1d(P7oG)^~@PvZ<yjPqI{)%4yMBXdDKlm$p{7OENtu^sKkjNiAm`@A@ zZ?cIk`s->S|4r5hX9aTxOtyj<0ej~lHX?Z_B42=bz<iG(*)ve{fniIb`i*p|)t5ol zVE_JNkrW8K0;}N~EYX6W#bkrJUJ7(K?uJreAW{;egpMFG*#mgc3x1aBZ`Xf~Uati< zZ*<GOM3zHV5Z$U*c}q3`pC_(H_5ea*RKLX6uJ}F<;4i?%On5XE!cwCUU{tHR(Loq> zK(_!f!pqtW_Xbtk3qU(jOOQ!9l}H6eaIh(QO@&DTxPP;>qs7s8uTt(#ObhMqB>AJ{ zXR7>@rn!Cs!tcH7Yya(3g=?<PhlaTBN|wjh%=K^LBg1@|UAwjhzrs+(p?*n3RWH)@ zgN`uvJm~fk^f7s2u(&90fxax!mXLOsU9fqAR36HG>ul&>RG<WUcyqfjkjo9^9^CT! zeBh81PPX~LZG-u+7Rbjbe@EGM;Oco8Zpe}z9!a7RQ7*6mWfVbl_WT{r5IRaBB&M<k zZ}dWcfr^7Ei-w>`2_g|jKI()vkGKKS%27&eh4Qs{p%CBsML;$}*sI0!`S=tMn}3NE zU`t>BqlOdD3}mj>|JH*T;6em%c;1MLCE_a@+am15Rqz(Yd0;7S2JvCBpiktV(NF?7 z#%2>ZP9;MaR#fm*Qst;)d7;FOVMT2G1_y54hkbqH_*Ty3b2qtk>;4AEuJsuAWwyb< z8*N_VJ|98rH}hmDJqD9)B}kY-o40sn|6-mDae565NE49z>sNcvpDPwudxd#KCz^qe zQSFo823g>b-w5bJO@Qr@13~}`MGRyr{TUr87jv0JOjFndpFrhelyYMNX%1xvGbIsM zL5`kP9n>;X5iCAx)Kzj~drI-WX3{GaM|1g1j-!4krb(s=Kgo@_Zh5%OYu0ZzlHN%F z-_;%0ja0u9OM3C2ku>XP;*x57C8ZmNp8C52<l=8`>ThCF%m^Cms$T;8(-5QZE0_(? zc9;wyt2dynF&Q!60N1D5tMPbHiUt0It<_q!_F8znhhFH9pQl%(r_vr#E0};AGGiy9 zb<Hx6!kryKVFD_bMHN;bQ!Wx1LV^(%5oQQR4T<R}Z57#kqh9LaV_E{JeIS}q02HsN zO(Gxu$?B(E0}6w6;QQBMK|qzn5(HFj82l9M;_n)0weSdCy(<E!Wc`vH-J7hV3(W zY7nn*JvBj&D8h(<wme2B4}3gr$8r*I&4eUaUe2&0x+6H0{pGpX(Ib|T^Q^oixSZ!= zTl+h~?q)}PYx&T=g;q#V$#q$L(SmODg1FKd5)-{Log*a40ZaP{e1hzNSAMYK>jxH5 zp<9k34qgMUTbXDexd$Dd7I&ien|+_Cw}Z~dC>`Tw?>8t#blN=g)l|yD2L_SwALnmx z3BsLFROyr$0+=gtON3AdP{p%5bMRiUpa>U3vQYgGKOso7eTE~UNPs>TYKQ80g_ehi za1<*fI<u1SMAW{0LD7tafhhqnP7!skN27{i$*{_7*{RmTG73U;)iRW5Op8nWxmhcc z3Y$42nnLxK77_p=kBml<cxLI2rKO^VquH2cN-APih+ZJ&8u)pXWc%nqA%U46AT%2k z1}kCNkxaTMIL*@c%s5zO;k)9P?~zrg-7kL;bK^zibt1nQ1`HbApF!n1SuC=##mB9b zlOFlFkQ|A4L1?HAwF^&YqSF8@Td#x#a(e<pI!+mQ2m$;PoT-+`cU#tOE==GJCinE3 z{>!o(bLC&w*QT}S_M^~`m$V2H0UdBXqA@}i+1NZZmQpUyjK{Zck3V=>NsWatiF-8m zL1So8KSu92YRu@fg<6ePr9c6POtLHpDxqql4XyomsF#G<t;m0_XZ4SWNKm;=vml}a z9oe&yqHL$X9dn=Zg5~oXm0zK(H!!Rr6?!=mw6Y5cRfX?`%@oxF&>VIXQ0p5-G7t_3 z>p?iQ+MD*%rQ)Sa#TzCR_Ag!9><jTrCdhO|>|I_${vFLr=wwK7neZ1`fI*e?U_@ex z0A!wLcn0!2P-TG|PBI&v4fJx)HR-7{6rn|*CS685q`hvu>FsRLlD^+$O$2EPwLYjI z=u2`S01_oi2ay6R%wzyA@uwnaiOy|GK(ffLT=B2b%atpE+<^^F^dy`a8HGUGL<xa1 zTz`?O8J#c|g@C<ryR8Sp{vd6!AddxP4s#=$%@(q-n+YN&%Q*_w())8<tce4QICvtj z6{|at_@!s1izhOrx~EUy6T0hS!cSaC%p^{qv#>vt!1IE2!CLJc>#X6gx8cSyS}Y9u zx)+zHF(6#L0pDQ+-sB7Zk0R7$D29o8Fd2xCtgWDwm>FOIi`G1_5^!j(&`L~~A_%E) zZqta_9uGTqc!fDh?y8Qv5{0WPs0Xo8g~Ldi73N1r2M7E5s#Qu2fL?Bmw#LT>M+QfR zhx(d*&4K=EqYD3_2bT9}K}#vPVOxjp#@MHVOe})BF#1jDX5}KR1rdygun{bWN>J^w zS@pr6^GfAJpQc?i<-SC@<n^Hx^V+p*+;RVVuyhOebLq=o;nJl_=7~(!_t#&1@kPEo zI*KaQ=TW5^JcwU5Y8Qc}zk2RPDJe_ZuvB>+p_orR?odSL6C@Ui*x-vbHVbXEG%=3I zz07zalTO4!Ocj_7o)9S$0vV{Qh+M<#V*>nlNKiQHh#?VJMIa2~*n+rs7BNVId1{ri zi^{uNqlF6BUIqlJK?1v`G0}kiG6p{t`e;g-fZslas&}!|MmTb8+=E#UJ=5Z==l9Et z<L$-8_CQH#s-2l#_rX~Vd`lj_Z<iAmgq6XVIJ<gj)L*=?n3RW={$sOfAN}KjtT!@8 zxr*F3Tt~hY=d;H|XSp&E*d3$%N|4tUVMG3a6EexJnZp_!BJ+`6hdh3uuH^S@T}+8+ zi6m5^0HnAQZy;nES3SULO}~H&y6W8a_rHJr<>!wa;jB3|6;I68PQC5<=bziYv>Vmc zMC&cNbQJ0Dt>Z)Key_@<iv<h$^u8sIZ-gULyX&?qS0;`R7vxdDjvFu2cWl}ePht$C zm@Q-eFuX3R6h*c$eJOx4igF>&7u53H41Y!A(Mpw)9jFY9P%@IuB&py;Yz8~|ld9Sj zk)U?0J}`Uc%rmFsXQ>up8&YfsMe&4p`q|T`=LV`j7gQ*qe`L=U13w|kifrDWL+&gu zdWf!}3BYCn<$-@7%#ra6!6r-a9^hNtvho;XxokX!&O~F?2?R!JSmKG&#R<@y1aKP$ z<tfQ<Vp^muLtd;$*RN@2^s!J}mUjH*)NEOd6lR-iYkMXO_ajj8mrw_?@=G7++omSA z4OVupuJ-(y9^YpXGwHHZ{z^3sIt}D9Na!DJf``Pp6c>@j&1ZmkBY=ZUO+;u>nRyZw zz{Fuov=um3AweG(`ujQS@Ah{_hAPMbP9|*2)LE8iY3Yx$EvUAL6(m~Y(*l<Kf~V%G z1U*7-jsruq0Wso0r3`2h$YY|#k3<WlNHmcgYUM^oqJ?TG5l;<{=W~Y-f3wmU8JTVw z5kdXN;lnw<EoWdiRR_2kD#p{fTr)Zos=2vru0PT_d~CE<;WMLFQZybKId-_ymaBjk z8$Dj^jZ=+k8*&NcQ@}T$6OhJ5#x-CATES2}O6V377X(%=py~#?4$`hB)W}mIcZ4!R zfTq)iymT-T@RHu9=K>%V>9f$*#+w8rB#H8y0GrF7#X-JmJ@`1*Q<^y>xKsgf$cI1v z_=9i^DBVApE4}trsC~tB7#U`0A7bTbCZ)~N4iaaPr-kFt#Q7{1wsAuy9Lx$YqkREx zfJV@AN?1T6cqN|%sSNGSSN<?;59_nC7=9Gbup&H)q@&ML<ERh;4RrlOqRaEHaA?M* z=AmgDc=#&jTY>FFz0ESa4YvG)>>cbq>;?8a{%^kH?N7oue(tF^KP)BE!rbFLg>2$f zI)w}s<ZwxdHY1}>NaWLrlSQ5{RD_(D&z*#?m36%A3L<t9#9kfyWQn6fHXLHmR^d2z zdDuM(LmC+pxCz%z!X!X01VRPmqUb0;*9Cpyoj-8yo?`I>@Bfka{@}ZR;63kr&*f*{ z^2B40yz!w+Z@75jo(Io8xO&I!D<_U0IecJo&-~o%^i*+Yap(5#L~C>ep|XlwinXF; zr;4?mDmf$%6KXgmObXbdvT>4+(K|q`cpum}ATPzxDBRF9ccz4505wi=R5y__3}&tL z8ppaQ7*y02rK42F8Z8g-#kdF7_f*Kb%CtxrI*B9jS3EY3@)6qM&ef#jxMN`e6arV> zgk$7Tt%c<EF*{~wkw4;K@h2Pm>o0BY{hX69D*CVJ6(bT~;871lk&0o;MiUv8Ujy2h zbfbbNLygPYo#~LQy|i;BJfUgGOPGLi!*=Dsf!o6^!<JR6g^g{r!nYsLRyA!kX&b9_ zU=>4h>-$wj3itOpl9I;)Q~-ApMm=q5(QHah2>UfeS7cOo>N4?@LNA>7iDc0PWk0b~ z-0)-j_RdU6rZqpivn|=CFz0j2@8PF2%rdPD%tZR|83)W_Uw}wOpYEWQ4noXOLdNYd zqJY_H$b{!Th@GZO0Bj*$pjQhx{hGHCE`GOn@uxO#U|zV{jPLq-BrsKuA6wji`)$Wg z9Y3{^#<XYm+>Y&|Bf$PE(O9eEMqysITi=%9+8Y6ZfX}L1c&<xqgmh?lK9sEDbusVN zUcN>zA(JvU;xYf4nMF|;vIdERa^`xEd;ZU0^EUyDND~0WqL{w{+dL7X^<DIPWg5a? z0%zD00cT8LV;d9pr*5!Bz!$;GJw_vK`N*f`Jm3alZwQwg8u-8tF*2nXaH=&}xqBc@ zR@h_yBL^3dDLp(;&m&t!m~(hY30+_oun>!#H&EX%pvcNp*eUo31eim)GY$9z<&LYW zNV-Z4Kyy)DIDEJtcIDxf!z(9_&F`8+IWwXRV|{!2_s|+hNcO<8j|3<Z_>J^bXdzGr z5DAjyJ<NIFO-Kh0)?V9)I3UjlB}6dOC>jCi5e6O!0!kmIxWjm-fe(=EN$?A>mL{rR zI{z(<()Ca>fxK1}^vF^no8XEa8;#j=BCl&vEGq!#J)B7O=kt+l!3<S%+^o0}lpN&C zMI)Xc4G)>dpyFb!Iw4}1F)87dxa_4kYLP%lGnN@|jSiuJK^e7O(@kaaUc`zy4cFgk zrDNM1r#*hD0E>B#W*Z@7poQ&5F`v&B@~~Mp>7U04kZ(j_51*q|iURyeMp5T^h;9TR zVGM4hV$*xZkHM-$;cTG*l(SL5YDMsnl2~62A#tpYkcaY*erHnMB+z&6xN)Pu^;dQ2 z_Kl9*kR@y2r7#iz$51PGoSkLA>la57F6{H|6EJLcw9vbw(1)jQ6D0M_>jVVzfIU&( z)GlNfNhk%y;uCOb&oE?9B3J7?ibJ&1xI3Y6ls1M`baI0c%#%?xO86m_>>EdsNogQP zbL(C7b2o3JVJVC6?k+37dv^8Y?aNDvcpCU<+>4`lG#ad>fQcL|gHUdCRV0~F33VBK z40QtYgOb041suS(fKSzK1GRn#{szTI|MEGis{WJ`Q+}$qQD1lg^X!EeB;(g`Kyx%4 z&mbE01WtJ~5>npvLi7nEZ9Eah8NYPn$_y0A)-$j!LvRMqVlmhwA|Ao!!;6bpK4DS# z7y^b^aO*HOfYYR%qBsfuyL(Zel;uf%Q3&6>%0~Xvq$uvd=XWjYJ8?2T2MUV60N)CO ze`gq~lWXA0DT3nW=p$H6RH917T)oH(LC_n8c9~4Z^WunUypp!xhN7Fae>J6V^q&a$ z`PZaZ<;FQ%Y4i%Zprqh6=<&#FQX$ZtMfk6);7SqMGGlBKG1_1C%UCtSh&o)<wQ^Dx zO}!sUrP3VvfU~JEa{i1BP1;838}Ky5HLz&r8Ji=aRfA+cNp>X+D}+iVgd_n+s0Xo8 z33XNh6(WL(>yYPsKDdyd`);pX@e5NsC&oQ*c4p_?)LgecJ~=Uo6}`q96WbzQDG^4R zWxS!*ym+MnNlNRwc=1-lgQwGOv~xmJpaV@|iekPbTfGJ@AnA<cmT}6jZ*y_>H+cX1 zzV&-Em4UEW>lbFK-~VX1rb{L6^ka<(E8@nT5B)G=Os1lEjlL)!Zr}Ui4?p_(7lvy2 zxR|?m=bgu{{lY0ea@5tv2OI~LKenpA<)5}IYB=W%4I+3F@Z2Wd<FH$>f=wh03mqBG zd=6l(2uBYN9*PYEN`eUw5=Ehgu*>F474((34$W`9x~l-Q$X9|%<Da|Hk3PY#{%&71 z+Q&!Q=ic;%AKPf`U3VQ7f+k^HHs?Vvj+X~+x{dklqJKV@#Ht;JhE$9`K+G28R~;#@ zQ`@_(kuv79jA??B58y@6qdKQ@4-#{<h~P<tpQ#3mqR<qSMXu%WP@&*DJ12*>4R1rK zYkxNFc&-PjZ{7^j))drUbv(rBY1^%1tT0A(#OLr1@1Y^fbq_}n%BO)$&_SG<z~at$ z@Exh0in^^M{+OG{7dxq;r~PPZc3bZ8zWOm4l6mJLDfU7kEgMLqmlunJ@0?R7```fZ zwcz?>Efb2!VtZB2Z%>qJk<uP_;%;qfXrUqqjusX8$BcoRTNK5zUrsmoNm4<rPy+O= z^eeC$svEYmdG?6^P#IOk$r$qa<qnV_2W!P{!!mDk(>un7`jC(c3L=D#ust+~CQDRG ziYglQ94sqcR-ppGGPEuXm_kP}HK<DtG;kvVZLu_Py*@hwKxnu=9IK}gXLZb*!0l#E z8;Ava!YhMd*lUf0T#DMklhU;sWOTq4p)&%*#Un!owC)k~sb|ledG^egRHe^LiG#9N zibiFlc{-YC?{xoG=~D%6R?ql-=>t0?1tq2^&PZj3D<#0rJ&L}BtIs^U7zst<#ma5b zP&vhoM4!XAy`fbUin>}5!<klfKoz2zBP3Hvt8C_m04NYoh9H~Yh#8|oBU1(yt*ICF zo&H9xLZyHfD1{UIur9LNK-m(Wl!DZT|Dz(a3<*i3zPc?B9uYE=u-kZW>7hfJi4*PL zICSWthwxmA-g#$q>A{KP?N0mn#1alnoR~Py-#E80BMh{MADL-2=6AyqUYN6Dlan!P zu07Zt9NgAi#*w*+0aR9zBXYBy6u<Xa*oXZT#)2HwKDpOEq)e#<<ZZNs+UZei@RfLd z@Il%xmmhkl9DMnc(|hLT_Dt{pU3|}fo=c>5?@lE)@Tws1ISP4=H6n>AG-3)3@?29+ zLXLoMOs1}2)j_~=9M#|}46ABcz;`XeYb{|Ox%y+V(cz(He_y>+s8vf9!lRuqtb~@j z34{~)9*21fGSW(`unpk7l5q<`iiAY?w=E=ftohouqeDXjW82D6b3ht$bu%658+5|q zd_IhIADDmjs^1)F`j&m7=+<I}Rg5^5CKd{O@kNK^8U0;_%@t*XK2=Hy7ttjo_6J>o z&_m=Br=dn1wjyL-&`{*_zg9zUY0K7c4sxb9F#H+#35VGS`HJ5{ewOI|&=bhai7FxS zQLco3<P8fo8#!A`+_3KJ3YeN$vhD-B1r*TFA;*joaH$#@q(sK5h0-LB%=A0Z12fFb zlZcs!5aa?XGfzgi%fyf?p0oi(AY2Dq&p<7l0pUm`>$Fgael(7|>*P?<I#36;+?3K) z|84i&Y@>miCdjsb>;2$vHfH^Q_pW!o<GJsD+xH=9@vTTueCUDu&zwGVz~3{wr&6b- zt%qt(BDs-Mt5$$JkYWu|M>`F04iy(SIm(Qwq#cr*yrl-rPh?a>z?1%^I{0Y0k???O z*Rcs)rwJ1KLHa3VRp4AvF&r)<(S-^eV$3nTqaunKVI0y8PAkB0>?B&SxsbLQQxiFX zDg;mLf(CPjw|j_?dgWXvSN4#C=WQD{MaxdvfC^(_sH;pA$!*f^<3ALOL{oApiZnwM zUGmSRqkWEDNcZ&}>FY}uLrz~9u@Wo?6O-i_kA`Y-s*VEsmoBF>8N6Us5>>R+_$fKd zuYCU<i;sC0Z$@&qGP1Lp&J~lImMrGd)tw`X8B<aT!Pe4}84(($_vnE;*8fJw@|W5^ z%`s&cSz|k5>Fx8w^=dJL08%7Vs?>+)x5r(>iXp4e33ID7ThA5>n!poSD2fYep_r}T z7Yn&9WlJs@#j$4Czw;x+_5cEFHe!NZXmk;NOdt4g6dX)TfS~>kQNvydr`Rju>?PwN z11{iSj&x?gBXC;Af=dw3Ku+R!cMX0R;s(p$haq}t*#Byl`Q8WidmoLBx{Dy*(*Wwd zhaF*``lQEYladdpBy<XTSvO_A3N<Fd9SJJ5EmY5i4CLsE%!DmXi?qQ;qIHAFF1}^G zpy}Xxotx+XRX0GI-ogT73r7}?99~|+Vr+~1_wAkEHNCSnHaO7V2lu8?E2T#wn?<Fx z$|0>dk7-C#2R0O5%bV{e5h@^bf~Fc~A?6><1d4}m9_elknO?0n!!|Mk?S0ej?R~j< z2VF%LMX|i<R_4ia7xAhyr?%P$ln$%yJ$T8i_-Z<>d%}AYX5kPzI-C0r#v^-#(D9 zCtW2TlEZwo(8y*Z*SO|XGnGOzl6o|hEbeqd$-<<)J97AN<j^6~9umC-<I)d{YahJ! zRsVFYinxi5#9X*>0C^-(6}S#^ZkIw_$Dl|$4GQ5v0tN-HilWgXPE^&l#BLO|9Y1#T z1~F@;M191q57eP10g%0da3sr!ij!QeK!_ke1}1vUYd}tII2ZxxJdklKS-X@cxe<8& z5^A*e&u-f}Q0O4XV<45R)V9BEXUM}!2c~h+c2X|NxLhx4=x;{qo-CwN^}%YP^5H{= z%FD~;Pgr)|?VB7f^rfPbZK+~9Swb>hDN~3R0MeOQ@&562Dq|WkthFC9zh&c>MKn9> zWs~15A3j_LC2#t|WN$eXfpS6y;!G52Lk$>~HbLANehRH0ij#xF9Kw?6=Vyc?q`UV> z5`uuHj<rxEHR3w>-5XwVOSFiz*P_)H;IZ&kO8-Jt&VL#5`{qXag7>TIYkcjF$M)`h z4C|u=<B9iZkwsB_toDEi7?Ms9lNJ#0!+0S=M+-D<#PTB%d>5i|_?i-a7DH`R;P>&h z^|e3qhw6PJbA7b`Q;!`x_SjzBo9s0f`1~SlwK5yWnvAda?<+x;aiE0;3yDSuPQQ(` z4s!d$9F<hi-B@~?W3gg}th^N$c9m%@VPly`nQ55|6Rm0mKfNPi;f3jmsloorcy)}j zWwDlh%qhENDJ+F!XeQ<#h5H+0H0y$Zq2dwrilo@UxWY~g=pO+4t!2chau4c=aj^Ah zx0?<*ZrX9*m#uWOF-_=pV^0Mcepf^I$ss-^2<yKki2ldZt`))$6<BVfUc38DEhZUf zKc39~pc`8MTqqU`@!62OensFrasF>3K6isIVOV21Wc=Lg-(5vy1e8aL3$i#+w+mcE z7tdoYlg(m3q%vYnrWLF;f)!gR1-G|{0wl`9-J8!-om_r2KRP_vha`YX3F~ynoT!5= zh+d@}3ZIa-cuQ|7-rosi4$RM(+!H%EhTm5pm^8;Xk{g5Wp6H^69}mtd*?g?q6|`8E zuietes~`XPZ*P#|&+e|(v&oO2HKbS##f?3`?bpF;GSJ{{>;Su+J;I)1&$0LTKUn6b zIx{&uRFN%n3@fI|PaYOn=uK}pvy`*}XMW$aYj2ezTtTi~l$(}{YG?~4xTS$n6lTkc z4F^~T{EVLoIf+Ocs1qSHDZ<=v#6>bYCJQCA6Pgs37ItiZ?roQ!e#_&Jyz#z!j~$uc zwf(@30~6z;BNZelHHgDwh%8M2rYJXp*BXqP8$u}HCD=)=ZeaHGgnC1T{|svgb`*SR za+Q0+9I~E7xlH~vq!N8#<L5mPcY;BM>^B^v_>w{%_lEQ$;gwJWzp#r#T=e~CeV@-| z_`^qzKFl-uzEF3+nmb|TBI$G_nx0P{XxlNvwiI<gr5s@@IVSEXVsWPDZ8NPKDi*Pz zS$%k%OL`m&a0%^$huYydVwL0VLkHhzN8mlB9|`40M)RR$f8Uitp;*LozF^Dxj^*X; zhHT^4B0_cXPB)vb<6G^6VjT;lSoV*@SR#KKOQ?%jPTh2V$}#gE>O+umr@Xg3rYlwo z<0kQ14Y_cZqK}np@7M9m8jAOTmCsvA!l_6`5MMMARoWS7`%~;5_78s5OJD|6D}tss z5J%>B4-2MxdJqeI80O*S{rjYlL5MId7rD%IQImj=Ar(?1e9R1)M(8{XS!T$hTKXU& z4s6k+nkAHss3xaM;xMvw@S`#iE{yeL4625}TPWr`Lbn7k2Ur>Rln6Tex84+}+TMk` z&aT{c?C8P8g(G{9%wy%Nos)?gmSSy{`x00_W`orNJApWjEbM^Q5aB?^F~u?9X9vud zkb688k5wtb7AvzOU36nA1G8x;ur}!2o6|esMPe`h>lyyYhl!aGEAQ?X3b)%S9!;g9 z+)eXci34NdXe_sWR*S2e5vG;>@Jlf-AqNaq;%C7lslG^2RYUoEf+H`O_yG|${@cVY z+Yk4+C7uJf+#5-PTRhj^FIPgjelH@2jqrb<dl|n)C54cqPl5$3MX~bB!P}6XN8BSU zW0l(gGwtb)9!^#X_~XS-0(XF#?Ad`cOfpfqgryT0!j#Y?HZu`}B#RFfJIX2CCI|*t zLE0F8l`h!9OfV1{5I6u*pYDKC6Uf_t-7Qx9Y%+<c@7Tz2bD$6PVptcZl8Qtq3*T|P zCiG5F578STCDwoduE4m1OGUZ9jW{w^#m!?#D8j*bqBLB>qpz4u7L(3>@53*(y(Bu3 z-2=70{dY=NKlGL57uWv!b;_vnAK(4trQqBdoR}<r`F-~-uU_e|4(yJE#S!Vw{ru8b zKD74Yf!96x?*E9hx7r;&nqoCwNMocbVlJSn6)7*MVut%4<PsfLf>geF$V2K5Ef}-e znf6A5H@Cg^1`Q1w*K5?zQ**vZEublW)8?r%pS_QL(0_je77ir8_;v*gEA8aEJ)9H_ z9qChA8;Nh~9J4~G+O*FzT67ucoNk14<DA1KECdD^lwdj$rv6Fj6PoDc_iNn1f}sL1 zQ7rfc7T_x03A9YJpe)pDoW1Lv&#XQE*aNS>?Zon-J-fGcCdLQ)YJS}><|!?MRe3cC zFhYET(RxC>w?HuDILhYm+7sFsx}M)l9&ex=f(Zw;Nz*n8nI8Ductd)$mzKO~p5ofz zpFX2cNo`QN;^sBI$Y$Vp!(R_RL>+WIcA?NTuoS{=Gd6xj$cYu28h#0Hu<1uo)EtfH z(?;UJMai5V%qE-&_QKO&HPc?Dk&c=`?<@l^s%C`~VOpj@LS9G0Fs+amD`&zn)1qIF z0*Izcx@yGn<4{=cfmDSYONA4L<?z*JJ`yplaCquAB)IBLSQ~~JcBfEZCa7l75$;>` zfJqEaS>lC7E15|TPObkf>}cBzJ1#PTk#nv|GOd$=H8pT&3?>X?#{s6MB0`~ChKfBE ziw_`93hhB@o~Yl#AuSuZk(0g#J&{38=j;4qad`hW*JLcPg5R3rx-<tKqxJ5=7s$Az z$`oYb(#qbzfoKg}9UP%kL~wKEh>Q1~z2mkMyJoj_Mu*FN<*GqzFTZLm1CRp@A43^> zfZ<~75LY56<i^+qZd-3q$+X-+O?o4@aYq_)$}-&ijF^ExvURiu3uz;M;Nl8aBsQ^f zRZI?xs+5R($Q!}0-ROpcrSPmsI9rN&V0R;tNawL|lA2D2QP~V!8zYSIHKS=5<>~j` zIuyb1%s9ztnuZufnwS|-+qSA8Xd*j0YBI5MqpazU6HC}g6_&whQ0O*-;KUcWvkutO zw2{RcV57+8WLO`h!WJlU5dqS^9pgZ0mo=DVRZ%b%pzR`lOh(k<MPMi-4YhJAEfS#$ z2v$MDn+#)x5<YW@q4Wu13zJf$=66l*fIJ-?8Sbn1R(pVVqaa<Xf|VY+K(B7htstof zWv%odlv4y#26eI<bFWtkN7aaAVWCE@H_?dlzh26hZB$stlQ!U{(Re(J74D{2S0&N3 z=28hLEvS{%qGW_1{6-})j2{=xL=(<LY!>-ps*W)V=ia$PbuG_nUh?m$>-c%JN)9n* z$Lf2ecqtc8g~M9mg|vm5CJYXOn?e3-k7m1kA9<KC$pGX)+=?Jnu%IFl2NpgoUJ}CC zAasulIZAMDr34bkz8gw>r(S-?p7h2TU;kyyw*mHguKAq?*Og8!Cu;iM9j)Ph%-Yvq zY+}I!)#H+J7;($v(Xc3*K&pgQ<Ui^_12lqhX~n4HSQrFLcS6moGJtwmWN_p}>pUbp zM9?_|S8SUD1_Q#b(2xBw1EPXvE((O8&O`8cLx>97jM+=fw#i7d$w)i#FW(odbyNNB z_jKbG-@EJV$(7q)w|t0Toy24;o~XFx8t@2M>pcmP02@JB_cl{J(IQbFV53Mx>2wkE zQIRC64)96?Yo^)cE5o!8^hzKoum^U8lAvW9Ao(e$jQEsp7_jsdZ}2Zi^6z_cdAFnP zY8S?JK;celD3NIXf4sd3oE`U7=Ue}(y0zV{?!NY2yYKCN-?Vh=swKH4*|OTUtksrV zwj;}S?8r&%IKd>HIJ>h4hn*)Nc}Z}>h-5-M*(@eNLVy`3I1mN~oR|5)gZBUrZ(#Bu zbmn{N-j-yO4F>4t-nvzFYx&pzfBt9ro!^NbdX>I-V_&7_)vI-U&d~RUGBHS10C-t> zfQ@=6yR@w}p!e6Ki;;-c$Sy5;;X-??S*mC4;o+s3@n$7Wvd@j>Y~=1IM)hGe&_@(` zuBjsBxkBzXVyHul)ljOLg6SWHITQuG!#rA?tXq)``M0Toh&@usSw^O6dKsgk${CQ% zv3#aopBW#IVC>O(FZZ9d&LQGReLzz}7QH2uiUUxUj)Kf)6^O$Sh6_GTW)?#~%kxL{ z^SosM1jL;@Z>8<;Jq2PC|AeRTgS6of(hhPvdT>vlWlSu=DR825^xk{si(t-y-~xZ* zvMuDMs8V2V>Bdm6qpXTrLf&=&Zg9c|6A~gc5P3pi6xLRM_=g^N$(^?k&kXht54MJf z0{ZcwD_kY$q|1n{2$B54mcr1r7^Snwyu{4Hl5Dfdr|GH?wvdA4&?_X5swWh?YNtd8 zZ1BE0;gz^@z$=GTpY?L7+H|u~i^M4w>BVy)GEsR-p>pQNO42FCBUZwuVkZtL%dGiE zENsUUvBADpG}cI`-B7`e5^(S>Cy^zMifmWIjrs^#fbNhkcwsmdODflhked(btLsM0 zaHtsZ{8+*Z=LhP*XRaTg86MkLtA|6Se0$+=EERGMBUxH4=-E{3OaYG>@Y>dh%f%@h z!cQ~u$oNo!O2&z*$|bUq;Snl}I<O7q_J>lTfmmG6sB{HtE^1Lg)tE{iAM4MhO{ZSj zH`MK~A?lF41}hZK#_?>%z<aN0XU0Yqev@u)J5MASytHq-)qNWC-AN^v?T*?&Mc_#+ zlZbYu4M$5`Eogf|`_+;Wi>cKO$9j#I%)|yW+x*6ryY^dKcO41^cO5FFT6ZTRi3GY? z@3xgQUx}kzah(jgUffN5iV_=55gnDhl$$zhB;=9<#5`(t0ArFh0Af_zg|CsOU_71> zQ&$Gtp<n_015*<-aU^1zl1-D%q>_^F-1Rp49tnI+f|YPe5W@`K2bf<M@H#@t7QCyA zU;CQ>O;XMMC$C!k;N!Jl`@Q~;`wwS-=9fzE`@QOq{l@SAawhvjKmYL`4}8lnxPJKC z;}JL|^bUF`Zc$h_bWMk53U{b>24+1?6czD*qGte=BekfF>#9A6znmQ7=A63pO-?T_ zpX98Z@y~w$mkl{rC>X~ZjN>S+R0%xUXfbQ3CkJ<Iuayc}TxO)($h_=9dwWi!t9eXY zfh*QLg)2KGd@?AkUE663CV&p3t5t|#4pa~9hwF|6<eideGAruL=*Uo|Jm^Dq7X)E? zW3n}yBSzP@a`Ouq7;z>NI6S&`1`6g5aK{as=o)THt7*afF@XzU9@d2J3ce*K2|8w6 zfg#Y{TROhGc0M&fdQ<%K`7oL2sZ81NmlM$#{YIZ&xpjszHRHhOP0!oaDkWJk%ZYIW zu<6Y~@<C!!8#KY1=XY*#^z#?irjKO4Ui-4(JKw#&U~hhEdo7>K7vquS*daiij{5Wi z2SGNA`$zrB@J+rm+O{Hn^#^z)`~<#VpBBDdd#v;3L)Y!Z;uG`zdM2&il-~0aj(0AO zXC>^N)-Y<qF;_S#Tr=#NXL-<KnxB>KY-?vxhm5dhpgRz4XOhqr1@llH)ZJRb2`APx zsIhMHRX7n|Jq3pJrW@BFXF0I{nmsGKcP-6K4z>y9B@zRvWR{{w>0IE96PZYmU;(Qf z5|yq=J~t~yK=5=Lpa^i*jT32*nOkf$8T8ZerCQB)!^-j;a-bc86(ikZPlyAt_C7y{ zYf`0Q{4C}Xc!hW4L%NkoZIY5(>VDi=+o0l6*>+S>ADl5Aizb#~sS26p<d{4i*DbYn zv4W?QY=k1)Zf!QEn|#ChrT3^Lpf4zo^aGz(-_}+7<~b`mFxnpW{K>;W#&<tZ?@J|0 ziV<7nQPsA8YU}wNeBjgQ2fFL;kEX^M_(80)JEwIR3&Mu5ud~wZ%SIidkp|dO7zH{u zdg?CD#$?t5$Dj`g3BG9TA<@|DBweI1^<eXYyFW;3Sg<qrqvqOK>C9Ow+BVv8MefcB z%8o$xmz1g}qZ{6+C;#i~-tm{HxO<WUg08P#qT|Va#Qf?LruoEIP4mJ9^NUaF@5|-h zr$1?ie)LDN_=3LGy=JfsTrSe<d6$dZ2R?K<#~B5#vwLAui)H%x7xsdSc>YOyJ`0Yt z!JKeJJEl>?;@Hufhlk*Okn@ogB<WFxhR+!tOp%VldzTt!an9EEcjk^PuEEHk(Pr&Q zX&3x=Br-Puc37FIbPl{Y*kwISRGm>DfS8x``MIee_pCLdi;n@zQ@SI5=73WL&!8xp zn4ZW6V=f0Q!rgnPQi+0Lz%Q%Rx#e(p=RNp1Bj7L#=y(Tid)Y#D#4tvx2W|_8Z#%%U zIb6Nzm^<}uwQly&V`k>(X6Q$L)HI_$C5>n1pxe;XeMZfgXw1*g%{L}Ylcl-l{>G%S z`A5HY2kjs9o1kr|i6%@Q(3MEi3u-^({wlilH{UGTXk^vOEy!@Yas#^DUTC4M{y{G9 z&~F{;UfY2)u6u^--2BSB->pXG@45Q?awUItI~TxNdh-Ps=1z(1rw%G4dZV@r-yRbL z*XU|)7V?h)J4dE*8;`xZ^w`4N-nQ`AM`q`~dG6x*^B2#3=tCl=g8sC@bN>FEB+n!I zc#z!S_hGxj-XU-IFruVgz+-W&VQ^_MXTS^(T{`W8s*7h0C0OXnIHzRHijs&uDO3-d z&=_l>)kJzspf}_A+k!x`JZ|wdfD=Ya5wdE|p@xXJNaPimk07et-$+mAlW8j*@>6pM zyoK=j^L^n#)9c5Jr<-@h(rUd{`@EY5haTo1s}!Byu07}Lk>Qn!=@m1PVxnlJW5xH^ zy3dw-c;xDP5V?(1Cm@M0g=_%4`clzDhxt9kZHMs3;k5zwWa;~^x`#lRN)P5=)F;F( zcOZc`Ca#5fk(Tfq1o<;2RE_G~_qvJA3$@y3f54lN77d>3I?tjGnr#dm*PLiWtPi4$ z*xvYr4iRzF$X0S4%{>v1#=>Ccb>~ob$<fK7c63Na$H#?cbarNZYMjY@Y&0>Qo=M~v z6TXj8$V0K>x+Kq0umtB2Tu-p?$n-6qQi-Oq#hAe{Be69Sj;YM)GUY;U<V2%ij7Bkr zQVP@hR4V?Wc>3{;)TyMC_A;llN4#`cb!r6E|2xVK8B|{Mui-GS^$96$UtfIlnIHxC zQtz29bFWq6iRexRR`rG>+8l7TAPJVYtqM5x+HkuD|KE~uV~|!^Z%C0Z{uY)^F1%t$ z(Ib3Vs2@_gfjbbt7ouU=G&a8i|D|d8bEJBKKQ@iKq-q2i+V&hgF?DKQP)^UbpQfT- z3dS(CBdoiKX@dV?zAPQQR}@Ys%Wy)oA@8q&#PCXxlArFl-cZ8J1>0u1l+8fYLf7Mk z06F!U$qgjR6@r72eH9#xykF+~t5+rWJGI64*H*26%=gC>4K3ANkK>O@E!~8i<`uTT zkv?zE@dKVe1S}kYm)ZWtE3=hEK=L=;rTyz&GdZ(T$E+%xDh0G0PjuCub<3!R3=Rr! zt{qMB5N{w#iL3)DZMN&lM8ELnl9SH}5lAsL;DG}MV_r&@VWS0EWkKDt`zP1dCeOaG zc3Go2wRYsl+6(KKi7fKDuJcIfY3+@j2$C^qJnHcDB4;Bw$zj!9XJm`Vm2QI92JT^t z&?>_xbeOl0_*+8aZyD|G4Lacm*qz#1wQ5iuyIGyCO*HGxfdvofS%$>Cc91K(WRNP0 z#T4MEiOhqR?eU+I6xA&?yhB%qA9%ps{JiTvZ5tOqR%*?<_r)`rN+!HF%xfkdxlP$C z%@fC)yD=gco^V@+J=rSOK9H%TDU}yymx^#MV=mBJE-^krX#E+Y?%*AA*;JAUpshNk zVjO2Ea-o~zEI<pui}c2Qi3Ic4f+WE%<l68EFJu9mbl(k@A=;b$!fofy-L{x6mD2S_ zW@IEY8A|WkmEJyheB=1H{MIckfBeO__}kvI&0o2oRQ%Xij>QlEs$7mdpFveq$AfEX zc4}OUp*mcL*q+k6zxQ?Y&RZ_0>)mq=9v|dfd|QtD(%x}1TD#L9+-HbVC32U{kw3uE zx9;+)vvlw7>T_+~mz=XVABV6zXQWzg3x(AR;mgfqB{3RsRDoF&Yzq!(suN2u3W|;+ z{RjjD_P{l)2T&~$ySBb+ArdCX2l^W|u#Dt-5TRi(L7W0VYKBL$(5v7x5#Slck&)VR z(qlFe`(U07yzr=3?YU<sCU$>R%JpoUQBuHX+jO-)GZZtxu8$qKu0JT=Q>iYDrT=v1 z-_KnC(?MyTk_z6+o4-FkM>QT>g=+_!y+S?VS{i1@;J!P^E2+bTHrlLZQ9}?|3~w3n zJmzkdM+T9u?Jt)~)FZ04O^R|>jKG%|coPH^&M)G3nt-4fb@*(u|1Lc^S3A8jyqa<B zu-cVwC&{UezzVp-i5{HFsvplxUw?Y6b7BC9WT|W(xuZIsh8We_eD#i@OloR1C=D3& zhZ=o<JwV}%i<VFJgQ?1iFq0qoH>0g)0c0idR5J32rxN$Mmp+8iEp97jjKhLc1TbXi z`&)^2U#?qQ6FO2b47jBx^o0=YqFc-OsHUcER`NuIvh>bxp7gw$=kEK=K9_e--4XWc zt~Yq+py$@T@V0B+8*cDs!;xyG32bUktsn7RcJFl9+x4#FyROr0I;`_%jNkQUJujX1 zyjhx4ef#U$Q?&g6vpf6<D1eB#dl|+O|GhexDU?i9rpYI=*+hOC-71CWYesypSs|Nm z=6YnLTW`$K@DMM|2f^EUCc|uE($AWG22h8hJ3ivasd_g&W|s^<Y`i{O$!05RgwnAp z6FC=-n%??{UqeJC{F?6Thu1wb8vbHHa!R|3EUJ-9DIV{rmc~m%HdLucSputEkLyoq zP{b<IfkYTFYw$pD%*cJ@)A=MdE=ek*C~I6{V`VU6>F{&8UCM65++lyLGrck0DVOE# z&a0OHGFa{e>pNF1b4el-v=05GgXUc7P#8~&{!p%)m25i0Ry1lDe3n#>Q*xf%(xdl2 z{`kG8mpd1h-hO`LH}AcD`JZx}0j{|%hsvnh@@YBJqf4FT+wc9&jq`6`y6`=&r&~?s z^7W)_4#J`AxeHr|QQz%2nGS)-?v3FB;}B<j$fwcZ<ojHTs$J;al)8LVy?g4(x15Zh zT$Ip9gdQl4aS7ohRj7lf9H$ySQmMqHse4Jw;$a`+&D6lv^W690gGlo)l%WIo+rjF! zp=pGp10}J!KrfuZZMA-%x^8{_x)-mnzc_fmbk(w~>s^o5?L%RCRv-a!>Ph5iMcOSe zeKW!Xk_viAw`W}1n07x&f7qbwU0&p1^4x3a`|BX4zyy#;tdZ!7TwqIwZH6ukMxwi5 zzrZCCc)1eInL2$ih3<|Wi}n~0U&y^|d=nD&ryb{;mpEj{dCqYrosG`=KRORbM+GMc zM&lVBky4zPO3Iu<>_?dcl)lPoq_0zin8tbDsno{CrL9vbZN0O>c{p3AH`i}4*Kdt4 zY8V9Liw;fNhSq@^s5j0$g<p{?=@w7x4J=Yw7)lGN?oh%)mF{75hnd>AktV#cT$Z=Z zuUz#(-5Gq?{Hb8mjll<XXYfHpKR<z8=%Ia}CBk4z4g*@Eh$dqtK@&*-p&4jxf*&&I zuOfBnZ}v-b3vX(dg=20&bSddL(;4TR8#KDw=)OPfbk=G2OWik4iy}wg-9SzX?t}af za8}IErM&K1(?i6`dD0F;+tI)qZpF&@TDKelQeRjBG45fVC7NN|-eJx2gc;VeS2OAD z3sVyl<IP%nl)3|nRC?Nvkf=$x6^mhxB<_G#p(Ql@K<bdHz;yv!ia7z&vem|w5rR=3 zSQ4vog)sN6J?B5|e+`xd-+z(xkZ7y;bg|{;DorMn&A-BKPR70x1&8>o@9*cCPdaP< zv$CU7#n|S>VyjhDGkMR56(@aVwKjiS;6}8=6(9MCHV-Gpy7r{@AGKfCzNA0dS#DH{ zM%w%#a25~0T+e0RrYg0cKcn|mKKu?n(s%4o+Nj1)C@r>o`+^~Jlw)`+FIAZjs=i@W zHHdRcMTB3_@DipoxpM`TtEF?bvs$Ir2YdB7tqi+w**~ZGaS{m5YVm3$UOlTNqxERA zj(fQT3-3D7&P4e1Act-kPD83a==UP246~Te8tIIgKBd*PNV!IB@@gzvJ&X<;)B0kk zhFe4ZW;Cfq4-YikjG}r%tDgePRWcISYb6)EvIIz`p;Y6r)@aD^Z3N^BMXvaX|J^I* z%Fq5=U2^9m|NN^hd6ETd{2N{_nLO)X_`>HuPXI~#!k51ArQi7C=YRe4zy52#`YTU; z?lVt*{1-p+f4=|1&%E#P_q_W}Z+P@|8?S!FgXizR_ny06w0_&^TW>iPpy98-?%*m! z6H7a$CPyg-IY1&FH52k=yLkX2@FtD~fL^38qp539F{qYwu^a<%Qcg5t{sY%b#+KT} zG8iRR6~LGRpEj!ToM0qy(aJym8S&HDSYv=+XT(d>LYKB|VRDubWEZAH{!s9ly!BpO z8$YEuG-sCdUI2S5m?+^zwq-dH2b<qvOy>fd55YCxPwACuDZjEIgSO^>Tl3T8Cd{T2 zU<+YENePB99a(gsXQU>y086D5N-7<4(#^q)>n7qj#qs(@*8GjC0!0X(lPD{s+W2VU zW5?M>CMd9sP(Bp%V@x!RKl~`<?GQJUC^Rq_IYK0tkysPPV`OhKCPfc6pM|~*-lpPu zv9;#=f83XvSHb1Ly5ak+VxnyL?~*BJlJL}ZgjFd1j<&SF7IO=AYQ=G3mV@T%95bv~ z(gWN<hBw{{u89+po@!Zs5;(AmTaBh)%+&<h3PhKylLbKXX&+V6e0DvSypa4Ek%q{y zU>*tb_@pK|_68v`L*Eq$3z^86G<ZW(WKL82nCw8{U|T`-60o)cexETCGl}+-%n#0` zb>@u4MTeY#$<3$NIlRomeESk}XIQJlW(U#=R2AjI*9qLpj4fzON$NNic1XRUk@3t( zK_JfBEeM2s(G<+9ng%P~K&3=hGZ1tHUp-pqpkWG$#F9dn((AG_kg*CXU;KhHyDbwR zpe!hXJn;<REQdhrxu>1YHRtL7+j+Y7wDYhkXHRC!sur<N+L4Wm&P9j6jey(6sb<RM zOtlQ58h`{<3Tjo*Zp?oj=D(}sqF4C(7PK9xf_uO+{YmE=HCnGy)hZ_@6!aglIvQ}* zI5FNgl50b~R7^)2L6MIWW2NCt3qJ9D(rZc#+&(ds8VCnj$K;Zo7%dDY`eC(K?xEhI zE0Wh$t9$o$Iy-kRF3!$g&E}WSr$NKPET!#T-Mf0tzRsS`o|WA@ckP68eR0PkbqVnL zGk|^&&cA#K{2g_*Bx2P~0Jxg1dQzkYb1f>HFinxbLA12{FYZaC!R7z&_gPK)KEnj= zP5D9V2;RG|wOa4}S#`nRTqmS+!N15(!5^Et3%p*sdU<_)Blx(swifiop3ZIaY>ukM z&P=<%uSok3w+70koD~Zlxq*_w$Tue*yJp|c9U@@_92fDTt9zHW(@jG-x+IfyFX~Lp z46SQ`NL}Vy-0&t{S1P&S%A`>2317v*BgL6rV_MXUMNdhpx^fTm<_ZqWrN+y(7c(4d z-&M!LSUdO6JXq(N?r{JpaZ&&L12NI`?ccxu=>DTO-FS$YC;f(s%87D<zhX+LFSpo5 z&3PfLnqR<~)xzEp028mEkR_%-Bomhdudo1QnpsRLn@A?FAnL?l&o?nMnIo8AWb|fp zJ%ZBXHLv89u;FSd!-7{!_%VNQ$cI@f<|n?_#-Rs2WPx7;7T9Ho|C=BDyDvEKFV*7Y z6?l91nr<M&7Lj55wHEn<`$dM;izz%C@fZ^b+V#rPtibOKeYf<29`=Z;JsMO1f=4B! zf${}dO#`z?ISe88ckI=b-P;y(sZ1u5uGa^`p!MS>cFBl>+yc+|RAa7<#{iFq%)huZ z14^PU-HW(&g!}~`me8;Z8w~s4d|;izj^}I`Jp71LSn0dM;ZQ8pBrCPad-(ln`@GFx zI%eN?oBea$w^(=O`>}<$es)E|p-|%?8|D0=Mko}1SiZwQyYf9Di|W32R|j^1)@`RQ zW~7W41*}%1fH>b`7Gi=_*1cqv1XGK=14@j9&{rk)x!-XFh|z9U`ZDP#^#O&ZL?9W& zx&UP)qW%aF>tKqPY5w~+#>Qlx-(UP5H~gW=;OG4Jxi^_7yZ7d6b*<T{WnlouEr*%F z9WY1oev{m%wwll9d`v6Cj1cpDuP61M?{Qg+Kfv{9f&I4x-h@c<{=G#0s9+(!_{o~C zcf@&xk^t@#dyW5FWW|=Xy=!^-z^((^7RpjH8l18?K6{WZv^A#5HtJXqaSAG&FTftg z4n%e-w!!KJafHeWI6Bif*_m1y=AaGLuJS-8*8=YiqS%g{rF><kY<Vxzn~AW|R*QPM zTuQs!BG;h<sAR5`P1rHhah?i|^;PmkEU{?Xw)>~|jK(ah5RYWcNU|28x`-LimeQI2 zP|b+XrF|fSj{karB^b4a>(gVzM(@e?1fJ6du~Mr4L4~6YHL2zi!kMvh73e^4N|4g? zwgo#Vm8itfC^f2;LM|S~R86RaBRWoyZ_$gHiu!ABC0}X1kOJU*q2~-pET6sgQG{5j zgzlN1c~dl11b~)QzOb8|zc`<Cb{31lYgatsI8N7!tx~Dud&N{Vx%r+hZ-?r<F6+%^ zGOtg&vs<x-np#)ujDao|>rm$)T9ktN7qLS^C0$XcQU!gmTdyJvUjf)Fffazd>JF;z zoc)i6R79#-2t9P~A7!q?WE%W-Ha4DpRv7;SJ@N9~8P%@T?;yfM-!~46r&kn`ZvBp^ z6Q#Q9RrNchv6_jVfS){neyt~<H^0FxZ*DN-U4DK^JPK*pb$$=Q_1fLXw1*i}5u7ZK z@J>usyP%!d68IfVe4P&1{cxbeMzs$@`g%9*1KLyEwe*R<)jmuV`6LoM#Tsz?+JA@F zMYfvSUui2W31P+mi_QKd!I?Cl2q0+R(0)_<BKG_Y%Q4pco%Ut+jB7DkcT@WV?Q6t- z<s8iJ93#qAMYaErSMpsn>~_f?yMq9*>qXX?>S4P(twkNpiAot^+tW@{j|BAkSqit3 zxO|q_1ssfEREb?0XSJ9SH)8Q~8i>}ofRgmPIWi?ey%QY42r`@v>S8#CkWch;syn~y zsT|D)>+~;mt`W}lqUW6px|=Ka^)Gp{&e`sHT)aope*ao0I)S27{np?Ar{DhRpMoCa zEpK|mt6urg%Wgk&^O3c~*B#uxEmh9@WI=<}6j9i2TBHVG=1LSB%EiEupUMT%poL)U z698CNA~V~w7Dx(94BQ1_zLoVL6A&I1*giqiQn-mq76PPYkD28Vhu^}A%}k?70c?Re zm#@#G31sa?Oa2hA*x7;^i&2#p44H@>UN{OLAk(erwuKn4a4s$jRZDPVy`38DDtnVp z$~KA1bD<*QMZ>^n#;YttC&b-l$PwbZY9Ck+;X{WDgD|e?6n1Pr_bHKYZ>NxKDnHgL zQTT}g4>zG<VXx}ps2<5s(uz__61(RmVcKM!xKjN#<Yon{7ZsEvhPQ>`&76tFC)K|6 zLd`U7%xFG<03ecY$4#=6DTJ+b&x%3L03eEE>Ln||B*#9k<t3rz2LphL6C(kr4IzN3 zi0;GO18q)>=pf$><w8bXxBUX2B$*Ydm<-Vrh<}i~Iy6RYn63oGOMMmQM^d2hdyC?P zslToGfk0$!{w)`48=<Hh*3-IGcPx)WVrg<(NVw4TjFB_4pa)U!rMZN>hlDe|fOCPu zPB1*Of}j^?$5!XKDr)<V1kbUhLza~^rECM%z2#!rQ<4%gLJ_K56Rv&-xdRqRB`8iw zGh1YuIy6$o(y1s1D`(VHMUKr80F3zMNRC=Rg}FTU#wCD4NfaFl*3<r6o0&4^9+|+g z5V-b{EL(Q08*r!xDj9N9<TxgGTKxT8f)CNr@4xf@WA8bpE`0FhsXOmH1=A|>PQI^U z2TS}L#$pl077+sgG30;s;5>N9<z}Sp%w<4NDw7pZQbIsU8LR^g20^$4x<%k#YV`v5 z7drAYJP+6T{Jkp^6Dt$%$K367_J;S33QPLvzB=nBM3&37Yy{U*7iKom#e^q9UqL5Q zySXdY=-@qg?dog2fB<Pb#cVxSD^N&;SzKJojLyasqf;~;1``x>iNO1ed8_V0w3qH! zI54X8csLciV`_w$f$xwhsGG^;)KU@h&XD<Qk+hM#<%SQ4o54{Ro$mE%a((zQq++VL zxsdvLDruwH>MQgBF4oY_Nl^-%_JSkQb!vihz1k|gu#LV%S@@HX8!<qSqJCMFl|*=m zSem0c6j@7Yalb*El|kGvt!J;F9tc?^#l>Te=Z9IQdY<dhEj$LPlUE~&p#)=9eK86e z+wo#wwL*!Zc&jw#J{b1YgAanGeNaNTSM`-0+MZ5lkx&%f-5hO{b8)_J0H|Rf0o1^o zMOzc;4VI*lH62tZq<@p8JVezy)b^l?6V5&KOmf#nv}L3`Wg6iVv@;-C6lckf3#3+1 ztuhdwa(6s~?UprbMLa<7(1<ZAj#%XFy3yQVtjW!(R(*Cl>r-K!95i)-tyT;+jI_7N zfVpP)MSXpib<b_r$l$M_VdD3(68=mqYbb~f1T=I-7ZEm%yjBOdHY4>o>a|E1_t*H? zFepr(xo%K&aX_F@D}0UThhH2CpkEc%N|jS$3~X7<Au*9<(y)3Ryk*%K&{)HPaV!!! z%LiJ--ZF>Z<IlEJnMBI@>9xhhwZ+)1zvL!J2fk-({WrGO^mM9BtGD8Dc3)ikQt#_a zf48;%zO6M}ba&iz=$AUy+Jl|s=wMBl=s~O_^Hvx$ySfgKe(p~<P9umBTs&v#688qI z_QBoa(7;z&>NMF+YBztcy-su@NZB!CtUY$rx1iOi+bO!UHDZXI*+qSA!F1wi&XM!P zTorhn$&<pqttoBez0qXE{1%o0k`WS%(V81$ZZP!9#Nc8Gx9O#4)r>=2Bmw*zF^{t{ zQX7TsFJ_vp#lbiX35Z~BJ?PVy)HUi7&)E8SDx?NSV4Abr^2-C^%*@=oRJLmTkv^9^ zm`oi=&LKfwT12jz6#FT^)L4sdFS!c~ZfSe8Id|7bQ^`^&6d$~F*PI+bXj^=%!rQbe z{RiMUnTS%4Z>y+CIE6r3;Y#rIO6TEA(wvgY!>Hf4cXwyUwlsoiLE0zql%Ryj@W3z6 z5Sim|p7BpIu_2WLxMW`2b6B3dFG$N>)z{uNNr#xULt&XS1un`jGl$94YPfC;CMsKB z2&zNBw{L!MadB|5>=z&bN;An~L&$tBYCgNmA82Kp*tDrr{yO-SOo8A_-?01_LG|}u z`#!5l-%4r4P7aUmR$LTKUQGIwN(Fvo3E&~h<e@K6AcG5E)+Mn&u4?lpBY5-9NHQ4- z-Cm0Iryt*KO4|l6>NI}kI4HRZT6jliao6^R>5;*v5M+@XWH5MXT#*ogjUFsur3*%d zD_Nyw<R>HO4S-jPH2zDNbSXxOG)mLoL^yrt&&eyB6YQQCPbO=zSZzHXuO$*SoRc;F z&IhmRR%h7R{0sb*S+FWu-~X!D@NV|~BhH}njPKv%^?P5HmHpmLI6uG9?`3>H!zV?) z|K?wG`%o~)_G!0kztX7{!I+UNLPyt*9lh~}L)Yzxn{$Yg;MI!Hl#hF|4^_R5_5x>z zzRt8_ng)a^<TVTW#wIUsO(SU+T)AzE713b#!C-e=H-u~Hd+y&Edfu*_<Lq}kHtMy1 z+pT-3^0{L>5u)iO-?@^j5)>oO1fB+_eeuo99F_{WmjZ<Pl_ioTY>6m|PXg5$W^Hj8 z;&T9Vd1Yxy?Nk6{87Jrp^lxj-F%l;ehBHR)xB47fod8w|`b0@qvK)K@i0`PuwB6fe z8ZWigg#$AHX-VqJoLYb)NG+Vo2sLlWo!R`a=$}DPNBT+J2oWdMgP`0E#*^W&p1j*Y z^sy00X&?keS~9GO74rx-7z<q+ek+@*DSR~=Y&7gGMc;wkTRbOf^uRG7m?I~x&{>5% zl#qT*Dw+rh2@!Kj0>wSDS*6TRG!|!lBzhD1Hj(J6l=G1Qz?SJ>Yu1{Ldbfbj)z17# zih6eOf8-L#`y)xbYbO8VZEJOnoq73e_5NGDziVUjx%IF4zf-9US1>$k$0k4Ad2&tF zHa6b1zW!srzeCm!S3X{=y>fDLq0<=@A3W{Q^CNU?Dozk9Sw-C4rajboSsWD_$GCQm zM0`fLW1fp9^)TqMuzn637<Jn-&WYHj^Pfsseh@DTn;}RUcw{0t#W<!a^3I(D{e}GL zTaO=;q7OS)cj9YZT$r938SI}J81I&5%%n2#P>gJqYrvtJ(XXb`7aI=+MXE70uUZ~J z4EMZxSY-HHd!G>*U3Vn0()Lx$N(;ncay$^M&kA&a09-P5>GF~)x}~JMS6-g!z3*|K zbCV_3@$x1&S$6lxlB!+)&bPJRVb)_W?H<4T8oj*p<H?d2d~2_J=<@O3ba^T0j+dXs z%LMJVZ})PO)Hsd#2$hZUgQzqD)C+V_LtDM)+>L9*-h4zhyfPM}vDLF7+d*J02<wXG z!mr>KWa<fiQE#6A3%w*}_49w_a9h7uc1H*39)t?#my{!_rn3BWsn}nunc$P0NFrUO zOgN?5&_A4Xrc`P64-WLhX%{i^uS7zOQGR$K{mX*q!YvFm+5@dxy)T2(XrV4zc1FUb zEeIQ8`DUHE%~3P*N0#AJS_FHsudk8KL|l|ShoEj1Pkj!Skf_n>tEIDH&oD?m6^LF4 zXua<mDApJT5faY*NGhCkGI7kxsF%z1k*enxs^v<f0RSV0@oJJZS}9k&Q67fmT#9_y zz)K}Ov{k%JGvo!Y;+Z-Hf6+@clK;?55ex8{;Q$gvGr&_~`cXIaa`jQn4YK<S`HbXe z#vPd|h&+%YD`nb5yPlnC1aHVnfj=?H`MvkRF_4qONVdGR#ZQ3FWm~8dI0$lEOW$d~ zD;ve75PYkx&inqF?*nDweXYjN%}#7z+?JPjUtW6apc9MR^77itORtPMgEltHpncor zrQeG=c6^__{Qc#nr{$pQ!SPisczbjAP#kaN^3qiAoVN2{FE8EQJJ!C~>n<-vyQk#5 zFTT7ak0sFK=zbS?E;S8~LP-3~KC(Njv{as{hI|SgdJ4EL;4c7ZV_~Qp@VBC-NK8;3 z8nT=Mp5iHGMD-k{N-Gmrl?NrspH$P!Q7NP6b0#d-7Os}SOkkummsLvQY(&j$@iO1K z`qF$OR#+6~?8QQ?k$-7+_8Z@r&7L|HSOIIDYGD!A>SCeVS=;=>+1hOG6tm0K_u_Cb z_>m<U79Ckb;-YtA$l#*@Pt9F$**bS);-VCWMeYV`08BN>nL>XlqSiK6n~h|%fi*7( z#H|a2xEY3mKy;#jHUmV5kWs3`y=&B+q3W4MxsAm$)gfo`@ER`R!;f??bIci?#qBaX z>c|~%%?P5NZ9k)J*LI8b%wSj|hK*W*^3!V60ei(f7w*&`BBKj!E_Wk%x1IqyUK#G$ zVc5;$uNU0|r8!U_I82LrZHO9CJ>n*~6@jCmkF>;ETgU|_S?2CvygN?X8O0)yDAUaE zWjDI#_B~OzjA}5=I->V}?7pHm9LbG5UGzr6d3E8wQ=LxVwpdjBK52Yu^nu;|3-|2X zch5rqZgH*|tY+iH%Fex~Hov?u5}8^^B$h@Z6En2<Reet^QEJ6v^oUaozZ1rn!Sh1! zNqJQKZU%)=(2Gq9p_rza5T>?@lO><Xr&G-=hL+f#fgKSTSHKYUUJOHB+O@C$uJ_z^ z*MV(Q`*vOU!|Sd)cinZEe*31j9k`42{rh%po|kp!1T1<5(~$)!J*E9vmp*GoGCf?| zT91;Q19i!1cEqI~I)w|2uaGEUQ?^hk$`*pz#$fcsV4UlHi%ebl8pJe0u=f4FccRm1 zwUpMHYDp?IF?)zo+l@*gpNhl$V`^EI4d@9k;}W_+5GHtlAQ?bKU_o@SAPPu=AVqLO zfs}m`peg<u0fdZ=fe5*<5wXX{?8t?V{HRHXl538t^*|w1k-z{IT*z+)+dDLkjFO&y zV`#}voX;IaL$c)zfgqA}6Lodz(zi8rVY4I8m)IQKH<#eP5xp=0cDte7**R0l;43Vq zb&2LxE5w=At_ZcldOjAoZV2dEAt5Kky+)!aC%#E$1;+7extvONLq6q3xslH%OR18R zaPY;xFpk<li^Jh1Gcg>oPz?&he9mqW<FfI^U0h#ZzZj1fO0~oFPBOkWzhmdz4e=Z5 zhi8{J*t9-5*lL$5$u}ok9rvx(%42S)m3(vM&H%H0MP^1|fCrCGX9V4>pQAOfAeg=o zhxjoMAr3=FaD;{SYg!>Ez#itpaALqFOGa!#v0<r%Bn)RWa|pyB#X+f89mUD}6eZ37 zxHEnItB&4riH}ELrD{*TXS(yp=FqM?j=rk<EVO5l+ha0&4yEyvs+G$jdgz?!Xawom z5rHA_RH+dXgmFVmyc%B{OV8%h^+Z1<RRa^8_<XaCWJ7EKKg0Sa$-XI98KmZ=?WPo{ z7M0~Q{g!(JW!7$Rt$v*h^CTTV;&`{fw#f)c!cy^v$$_YI@uC|UNK*Cap^!roO9c9) zScC;9^ib5I4X+yiHaY<~Un*Pbn$#l|Tnfrfm74b=2H3URsK^v))ZQFZdcOZjLz2w} zIE`i-FL*8!xSeLUd`%0tTf25yx3A*RT)nc`^DAxs`3pA$`*i#8vud4o_CS0~^mV)T zfsY%?=(&z|OHm=F6P-*Qq?NTE)Y6fl7e<mq!UTxNs5kEB0FFi>5~RiRq<5(k6ehar z7)($IUG+~n$cavT`{LAOLrN{AQi(wj7brJ|E(*)c^p-=eJL6jE`JRJL9y`iVFp0&L z#PoUg?5}pjtsi-3$cisrf89?6y8Vq;y}nU^AFj3c@O7(@xZoT<bmF*Lwql#VtUBSS zRX!Q0>mPswF;!d-mft3tYRc6s72Qn{JPFmWdiKI_I@{seYxs(l_=@SW_==^ABLGOC z1>+}5pv-orzB*QE6*H1lGar-)3*aN^g&@1B>t&HqB@Sd;?#(8;&)sfm-@%ys%iv~C zO$hh;{Dk8Qa~DdqZ%<GZV!|e}j^`*Db1x-h7sM*L5c_cT_U$sGZ@;}N8(;>&Ulg$? zq=v+V)FaiYAQlrY#w)Tx`U<(F_~{LJ8kn+~&cquou~LG$5>poFzNi|?SWTr5W$>j^ zQkeu&nY^hNfxl49{@ip`@9#Y^^-0(LfCF>Oe?q&rqf?QTd1o@Be`WIngXQvI`O|K} z{h&h(<jWy1rr&O+qf_Yn`tR&xTX~T4B8jzc|7oD_m9S0^h?bO~y=Oo@>MJ94LRF+T zVfr%(bDj9UG%A1q4#geH1Cc6G5Y7dULzn_hYxThDN@v?#V$bfPU@heGY3(VI93o6? zA)n4o=b*f|W!oH;&bl`z9zCObcLeVOK5s#!5jl{ls?TvgN2%ZFNz?brk+^vhB}08~ z)Nx*1)T4>C@hRYfR)kuf;b5D-ktrl|F}s-bzU<`qcFuW<D&}4ZtcH4O#K}ANsS;oG zjn9O<h<+S*cw`K~nh{o0v0So{!Qoz%`AVzNHtV!fLL?H1gPG3c^3v2K;J`S!J=Y!_ z=&$rS5O^@_A?>?K2XqFerl4_+1WELPV*wM<M$ckAE##~$E}#V@r}WD9{D5d<va!2a zb_nJv%and9`^i)gtZL6MT-dl+Oy{WkGhoDX>0iHUdGpT`@mektDp1(MFN7kwNQ{Ix zqGcObuQ#K)T6|+;<K*mQw18>%@|MB-ozMGpaB!ee$a_|?J#b{8U9`Nsm+-Q%zHMLI z+Rz#rW=klXFEpedamTz|fCK1$?Sanyr?-)}_@X<{tV>_H@5OhY(+T|_!4-PLVc;-I zYgA&)Pw22FT$R8AsJI7PtgsIvBGGK6hNb`lK)0cQli4Y#9*hfHL_Ku=_ug~r<mxqr z{t>WKE>(ua#BOB7P;Wvm6xek%T@cP@(1>+6E&*hM!sxqF$4-8;bg(VM5796I!vs6P zAQQY$##oF($+M@ErmG<;k?HC^Oi4MVw->}O-hZ!YPMgN))GgsUOxtH72>DbtUds3s z8wx?!<|Qi-0i{97QG&-{UwL(44={~7+`lT)0-KZQ*YkZ&-k202qU%Fw&1em}n)iy; zoKgb`q)B_-FlP*7VfOY2EY1z@)(HHLkYlS-df2kO$>vx^La#<h%Dh(PsyLJ3dhw)J zM|$az0Yc1bTU!FDu01KIK!+dZ9f>2)uNw#IFt1&wy+M16_IB-k+WYmJJM|w@#q|5$ z@ya7+p?GphFBg7vUGFQyf7|!cLf%M~ghp8E3OrcJ>sc+DJ&k@ARUkiL-7EK%&S|Mq z$WBQ&C`n0oV)WK&<_oM~XPttlvG}dIj2;C;3LHwE)J!d1Bw3@XidvyuES#vRvQ|o! zODDpR3dLgf_401VZcO@m%#K}yOIHA@FAGkdB@YRF%01ur)G;T1j&sNF{@*;c;8|b( zT~A#~2^0MbZ~I^7+`Z=hPIvtL)0QkL(L{6qi=0<bB)i}G);GTK(4qJL+*{xN*0;ay zu{XZujc<ALn-0C<&>LR==<BGs^6Ez(c**_uz4+dH?ml<d*%uwY{@MdmFg^^oll6M3 z-bhaSb?Wyt`;-(olQ-e75c!68hGGQxzR@~+WqYJ5?F@n4V61jQ8$u&1zalDyN|eIU zfpip)48Os0u!Nthi;8c;`6l0xP!V5|bol`NC8+rv`z-LCK(=-d)D^Rh=93NqjezaP zBK*ZjLSKy<dstP&(^SppDA%gfneEv42pp9RW!(v<{Q`0~UBI~0fsjHK;*)y}Jj3tH zHwSA&$DA@b+l+Elz<BxCP>rAc7QAk@<>}CbdXzx|eey1l;gkHsWMsuYmb9n?VRY9_ zPWb?;6Y)|m8V5W|K+Q6t_%A|6N|-CYYZs;MlJN=&9HK2#F*{MJrqcwscVo06UMPY5 zu^<L8$>)a-9(>iwlMg`~9Em!vG0zBey%?pD5YJnBuE>Kq>QyX(CA(33r1Q!WbxL<F zj}^>FbVkJ^*P|uH%@tC!VsSrqj-E#J?2u-`aDG@uY62I%9i_CB7WX4@(BZ($;6Flx z6L}s0goCO{j@marzjk<O=Z@|3+vcJD5*B_+6(ol00-eY~@7>>h#Ls)M%Tn^`d5=|~ z)mM4}<Y1V(wxov&X$rgMB$OhZCqu7L(+Km+563N1cMa9D`)CH4SLGSw{gmhUGu>y! zlXCNvnFF3?n9<L)3iYHkFRe-QM#3KjBW>u?xSg#h5u}(ncN{$U%*lsV;6%^6;s3xB z^ss>R8+F0fZQ0Pac2GOoxoLI^Sdp<8_QU-N9d@u4Oh<6mXk93iaK;GIL@M40k&F$4 zAY>DgJ_FeV<~oiBM}Wo7LFYjKME~Fz$V4x9IU?VKaneGw*mFIDGpGXsA6I~EZFb4J z@ET<-aSC;HXG=VE!2p{HFhY+iV2wE3k`-O`Igr}>HVHVHWOZ<AbZSW)*YLiNA3eCd zwr4(BwIZM+a=3@O_##0;;>Sz+#F}0e&lKwEm|JXk$-=(r*2J#SViM#`3}19=&)l&? zvwM#Eky$Tp3RZ!B+4DE7X!|-V+sXwgJg)T6GUeTLS_<Y}Tzt|}0#%n5>bmn}$VtRR zlm}g{5*X<pXbN#i098OEpf#S~00f>z%3R$5;M)RqRCH5uhFUp+@W?&g+NdN$e!M-u zXKnf5(Q&92xu*Ei)adkJHJLS`-Uk_5Af{Zvo3`^{&=79TUoIcrGkfUR+@6%_amRq8 zile(GTGRUqNv~0KW9fRq#S%G}%$G{{@1;De=<3e~x_U-Cil6+|ogX>^9lwCdcPJC> z7ogb+qjwo=aW|CTf+s|)!gLM;uS7f010A0Ig-61)?!^QJJxg3I$W8*Z1fn!z)3qQk zB<zOjLgX}JuD<Bb)3@Bvt=6-;J-uTf)l5b~=fDJqV&5Q6*`|yZ_<<dmDneQm*jaWH z1CmYBZ!97tK~n3IS~ftt(70@o=7qY8IwJEkbTqnU8U{`opb}mY(zxk1H6nR##TL~q zLgN*u)KG7w%)A?iFqce~)WNJrWCW>6;0M<({#ri8vZ0B3aX5AK5KlW2NhN(p&&K1Z z`_XtjR#D#eG998__G5Z&Bs{a!nw}YO)3Fo?X(EtmuheKx5TkUl7{UCwp2|pKgIV5Q znF*WYy5;*2^L%Vzc4nZjZ(wG2pe{p`|E{eN)|RykoyzD?qlynoKoBFt^_qCUNr8p+ z5DUscX%gjOQm|t%$N=)w3@j>f4+aER_`ZZahLkphC28G6@}>Jr6|3%7Lf}Pz!0%9K zcgJ>!6z3$TC7Dh%rO@s`j+nnh^RT!m<j%B5Dedo;+9FTzN^Xm|fYhSX5lcR1p83?H z+5Up6b@NwXvArsPB@@9|bIL(>OQAn|$vI+TK2t2|(Oaj-M@LC=iAQ~Cq_56^frw2W z6DcsGqvO-Ja?|vAZG(BJqBWtK&*vgi-bby_9?!S85`7ILIg%2K(E=GtSSARoXW`Qj zJs&dw!mo|~a%n(i;7#=5Q->4Z_Y@HO+Vu6;Pp4Xd5RET{*~0p-00glI(mYngh&<bM zC3fHyOggST?7`<D)9F><(<zd08Iw+>gss5zcgLhJfJ3M4nX0<~>zxaojZUpo6FB<% z`h^S6J}cKiJ6xb0;vf*E&g8+)s!O*E(G*u8HPU}hhzp9~jCsOglGQ?#h!;<v%;~E| zsOyV;MU?YwAxo_VLYMFg1@6AU(U*|)8*vend%l&y_8Ng5)=Pt><w~XM`~LadP<>*e zK8$UWDwR^x)3IkkfOI-n$tUTo3)-GeXCgr>K^(wEk|YmXaS;2La1nI|hzbf!1I$X` zj1<pD$XK19%OIUo1N{R@kB-{JmD7hDk*6A@(~61~cqK`R7ojaAlUo}tTSSVWTGa99 z-hAwpMkST4RI-z1GF2)L)RIv$6sl=im9FToJXX8#SJvxKMA9|kAQ^j8DVb^&eLtE? z#@?7L%eq=RdHgk&B72mEMD}X5zlI%pn|6nGm-h0`1G~u1Kn6p<gp<T#3PO`|9Rl~j zC=48SUYIf|NL`)_H!J}rh+qSn?x1=K&16F-e-#+2%XEY4eCHjvp9vD0PoCJjXPHX2 zlB*Yqlkmj-qbUo-8KqgYonRyf7^p3vv#2<<MAz>nbcq$NP;@0K5nf&|AjAN!y?_-Q zthHbonCCyszyBOOH@3Ik4#NZ->l^ON6R;>$shp}Ps8I%%X5&1^3m@kLSdEa^7KF5H zdahPm5B~n!Ek2|O^+a(nmTFL~gd%ClOkZC{mEv|d8uNUp-t({lkbRa!^Mo8A8LLEo z6_20fwy~B<PHz+5`<k1gntZU|X^y>KyXtvNX}jT<yj?r5%ueP8T#@(RbJrcF>%eVg zVTtM{!d6P3FKgnZbjZO4Kuu->6JSsWok$kh2Mi%RjVCxR)q*W*A|cRqiURApFnB>e zgsCY>|GTa}3I^>z`7n$Vu7h#`)J@?+{uzhB2rJA?pMS~S=WeHf`jMLs?BBj^diTuk zq1Jd9^jr+HDd-k-3|zV5aN?JTFEehpV~7(@GRp&>Qkw$nqU<!q_rb3ONtnRJ`zw3% z<r#9&8Cc!?_nB$JCrr^>GxP_ku@DJ)W2A`QxNe5VsC+=aU)oB>s*auiSl)K3)GXT3 zE=#pX@0S4CXHBF05SW2bZY66`P6pjgS3j;Z$`A<XvS5vZmmfFGSopLLHZuw=1|gw` zV2*JTr^Be(wi%B1&m1im3gu(d{qeAwEL-`Zm7($F!91zPcO)WlPQdZwb~ZemG9q4P zu;@5NbkhZNeBubfD^FI&^(Dr2NvmtHSHlv(DD5!J&y*yHC1yvAmXjvId$-J@v}ew) zDh&;h;rolkTKY1ba@hM)v|Wz<XFpV&F17OMZQjD>r?X*x)S+~~zYo4O+xxv(xgGtF zer)G#pP{E07ro6t$x4+r&L{E{!Ffq-AS*lM0=>8MuDejZn7uulNP&9UsIEE3uPgax zBy@BQ8Y3fOuAEt>xpv3V`z5S>j`~bM`fUsS0A_n~3@8*pz$wzj66yHQaX=FYI1EcO zx-*o5Az1^MC`ywUV22)h@Fn-(a_Z!X!`B}?u)1&e!z&MGiF#LHCxKA_vcoPoZGKv! zDH$;fXdz0PQc;PZnn-5RDTo@#3RX#TVV<Khvp<@tz>CnhTcF&sc(UP;Vh=eC$?J%E zc9HJb{gNe6xbAN1n421S@j%L*c-L<vcDI*CJR=(O`(aG9GN{&ZJ?q6lK1X6<G(O62 z=sJd3E)}FHpb{GDplr{wqglwv3ceeohTh0hdpBUSz~zPmIF<9lX&vvq0U$0Mi>TfC z)WAS0zw2;gRR6j$10usu*1)r*{gDYH7fTBXc^%H*sP5&`VZMv<kNR)EgiSePVgyoH zgD?2_yJn29>!Xbzc@}3s*B4IbJUt4NBW`xFZ@T*Zuc)78DGH!7+X1mgbb;PVj|k$b zL6@}Km@ACYHoXxTg{^-0?@s;w<F4|?PK|j*ck{<?eoz^If9mfjO%|+D?&fE2t_6Aw zeZ50p4`bDfO@Dvq-k};tAFgJNsH@|O1(jxrXrcfm#U+TsdWU0@i$d>$V2F~B0ek5Q zjzCO~x<L`!4lD(sw29a_z4xqiF_2Re1O25UR0hx%hz*~JgT%R<{V<auQ92;YU>@sE zV1iD#JUL;mFY9!nWxWMhK_WKP%ng7Gsx#S{6cgLeX6BQ46<V{cT1{TUe#na&HB!us z*98%sE(}ebm;EOvFN7K+$s`uOo6HGgMt|xnss8T51<_C#79lJBdFHQVdGkHN8_&e% z-^W{V9$fE$_PF*7+OKH8qy33?sq@)8RXX#Ud-YiQ55D@$N6cLGnz1y&kYY9o=CbDS z9cyLd9zCsgCsiyRO~<0=Qi-@h)u3ojd~!ff95e$TUKT%dsw@dixx;;>ypb(f*~6sh z6^iM?DXmDQO3KbSMQTkmK+%WQ;a~xqKontZ^}l`N>(Bo2AN|f(zVsVUefBe-{tuu0 z(9i$$PrQ>V$dA3{p_fY~j-xm4+q*|VB=hxpbvltvB)3&itorn{=n**FK!8AyyCCG< z*_ruV7pdB6FX;p95ojAtl0+DcqFO_8(y-dRvPxX!*u)Yf41OCtEE(I~6(}8LRJR<- z8o}lszOAC?7FvjeKyN`@@D+wV9|xF#g1m1@)8ZFtg5fAqByh`D^zCTy1jwi9^@w4a z&KiLl#COS+Xt7MNsR|1cMWbL}QU4%`PxgqXYU!x4iCG>^*OWJ6i;egX5=rK>U9=KW zQ(v3EfpWMBt6<B%3}A~qr;vxs439z%U%Qca@bTef@j~&0IXXExH8E-?;vvMccwX}C zoWuQqu0mACur`kZy^T)(`D9c#iqY8M%=I&au}ChQs16nx`&j!p<pGperAE+SL=zO2 z?Q6mx9*Mb$Xy)gB5{)Sj*3Hg@s_dow*ft^xfNqmG+~C;7CrANkxORPtgWHBWo1DbU z5Ui3*mdgls!YwnITyR6|W?>r>hCt`x?jTa(+lun5Zjqd6ew0;oB`FySM3AOrAxi?5 zM_S35GOj9GB;+honuBY%?Vr?rH=_Gt0uCI5`P#T%&ro}gAcskzI#9&7l=O%hCG8pI zN`S(`ez!HxiVf8O@3$A&!L{1UwYTey&hRo(jUB3x+^h1bmP+SeOw{4kr%oEV;y%p0 z*|7ntfJ`dab5Z6b>-0^4>ZN28yhM>?B%C~_Q6n)~IIE=!`9dmxPD|&Dne=*A`3WuO z!(72r61E8f)M#D!<xN+j@$kTe?Z_$YseHPSXRv9xOfh#07FNQ~ByOQPy`fd&Wup{Q zR3bUihflzC5A)`lM>HZTq7@2x)tmnbmy_^``2MS1Pv<Q^z@_BV#dAT^{HtCIdg|)_ z{ryewS=wW7c_RUWM_x%m_6P30M{Jv8q@M1-c0ZgOtJmz=y|fb=w3+^y8Z=GWOfnId z7}*vRLKPlzOym08Ob!hp0L3u$5fONvuv<i~@MlQjModBxCE`m$mLQt~K_V}>lyVgI z<v4AE4bbHTKwfkY*(gWJG;n&7cf)r@-iU_W?CvC~tsG!Zw#doUet+|uCnsMje5lPj zBOv7mq^RBHTNcLtGT=jHgPV4Lsy01@<r6F?=f^%jJY4e!eIK>h$WzaWgwSG%vJDYG z$+#u|)AWtnJew00$r@$I>xCBn-b5khzDw8}{zpKnN|L1IUS8UKOYJYm7ADuSD9#Kw zFcI?*t_moD54C?k%-2rY0Jsu3tt0T-t8gisC4v@7kSmF|)v<;e#EQv5O^_Z|iTl|& z)819OvDBS)K7j?R^udw20i$iVbE!~n!B&?5Gx|@hZGP^iOB)xT+w9=lJ)`z~wE7bl zxAd8Bqi?)kdzbd}+Dkew{;_wz^DS?F`Mr1TwkcE9*-3)i^b~0t6q}fw7$P=u5^cn| zv0A|)8Csb~yzGATem&H|odJ4AV!~Jfz-PMnrLNa9s7eRla7f$t%2zBejg9cAz(`8o zU62wC?N&BTy&g&TWumFiQ$3amX|BywMF?revV~s@53t-6Rekhv7)hjF5EGSXSve-J zpi9UsC59CF%SI5XC#W2xJjYDFMURtoWV+mhqP{36!#Y5@na>eGmg9)6%~qMQ)c=e{ zvXP3*lte|>6v8}|GdG`$XEC@@LsHRdqUJc`OjF@7^j)ER+;20N%9KHX0-tv%Ru*@z zp0L7M>|@+kmL3OklC$#6POh61ge1~;Y>Iq>fWc}oIbH%NUM6hRzxjWW8mUtph*Sn^ z-mK~bpKRNYmkYj2X4s+fj!cB0b0|YCy^NQX-kO4j3&$r$8&{X|2wyOR7)I6{AjC`! zb00}*TBEvKOS=iN?Q}DOw3ccc*dS3-fGKYlv7!z1(_vKhaNq8<?qpM0vVNIf3e=2q z3QiGv(bvn=xFcjF$I4Ye>j}S1w<DXaTxpW_CRBu?lYRT^>eckC5T2OV;{RE|XgI6> zZ1?rr=P=%|>3EHTqnSZh(}j~rdq(?J?W5?`4zZ};7Pkvaf2Mt1`y<v-Opm&@5=XIM zJ@^(Z3Gdb3sl7vcOnW1Y3ZjX7Ky!pMS0`uX44GKNs>SojQ-!(Baa^v0%w&!#z0lQG zwBHKO@IQF<v|D)fISYIV<4hGVPsa7AL0QgqYIE`q0f6hc5pmR$r7C_2V5J1g!>)zb z9!i)nAW@GpgZ^0*QP;;;k)RtS1cqY@<~o4oXuWbSR1J(6K?02#L_EZSuao-Jd9Zt0 zj3%iG`fqjK6T64iBEQGf&FTiV#?mhSmq}m3?XPCll$wN3;;-SVcuxB~n)M~^DeafF zPrzmIA?=4@!FT}vi)*$0u=0;<H4r!%)Z&x|Y+S0u&C+{fhA4?$+=mq9vXJIMF&Y%a zS&RaVh-uM3Tk{BU2_DM}TM+mGQ(D>z^8Xp397SGZ&;<~-V1R=ZV_kz8g_Rlng-{+N z0K_sy-zBuz5)vo|d)JM^A!R0!U(P@+gE`(S_@K~DMJjNtjOfmk7#nA8Rf%HDu_!(# zVud3H*UufuX}Io%Y4{Eh78Z^ej>1g_e!mRDOneYlu7XZSyaYKVU*}gW2)REaGmY#) z{4FrkO(PB=Y;KQ>Yn0`fAsRXdM%m{WLfG(Gpo#iNa|~8I0#z>&$%Z3FbJX%84D5oh z*B!X7(ef~n&_$y*Mm0(wWljvw(Q^c^^lB+qZlZIBoB=6A%Df}0qIw1wgNI@owQvKI zk&n+o+4x{}yB&7l05T|I*g3q_=%UPcB^(y`+yxtGMkIbsWpl@HoG1<r3Q4PM1kKkL z=LPZb5U5{a7{K2uff}Xz{b?LWpj*N!NjeIkLOp2_f7T(|E=nzCG4bGS&<)&7$j%&j z;go4esVLnB>|EL{rY*EyaD0eerJt3(xuXS%RvT|h!!79Go|f-&R>&5@JQL_3kZ>Hi z&(j-9_+di&=6{L0BnyOuQ->Qtw5kxHaE?uzpsnHsHQCJM49bv{V8g4~B~LHd$pNQM zBy_OPpo~y_(!)yS{*kNM@P0I+xS66Z4f(%F0WKwD;r$_;gqfk#(UR0_H8~9?N+Vf? z9b;JR1Rw-`g_uXR(quS6Q5$X`PAJQ_(KJko$~mD(I;3K>r4#ol083lz9`Jq1c1^?S zD9|CEG}(jb`w&^sd^`dH@#hFo;{i5^)xg6+u05QQ)=)KS#uLeuU5erDqe_J#xk7rF zGKVT5eM?9kFb8Z#?dB!dB``rp!f0SKGkn+%<xR)4a=P1ena&WfflRI8vsgz;4|Ezq z<(EUu7(IssFi@duG!?Z5_z@T=_0_rz3j|YC=dt0(_<KTL9+SC4d@RqY3t-U6(<P>K z*C!wfCzImZi!p?AKkAlXGS}Ht*l0)&A(cgZk5aYCxIqFGl)fJ5?Y0Ho{LcHG=(uuC zsf9TyyC@XBL7@<c1MzUp)ZwZp;>N|c>+QOFpI1t4ekN7&>K@s%zW0IG+;GbcHMNx8 z{D0IfUTX7?CDfwoDX$%kZhr1H<KsV<3)&{5j)LcQG+3I&8$b#$N}BLtNi8377C<b? zd$%3~cjZtz3`pWYrcOkU{2Fz1^INZ|Jn=;J;ja!q%zNeGEkEQ2en<naXjOY%7iBdn zSaw4{4d)2+D1ncY;JmTyNR)xR#x&hSLiZ;#jw>_Hi0rQ4^8@V-3tzdcY2B<%BBl9U z#*gC2A&L(Z8njJPmre@R64AKQjEHcFn5E|G88x}ynaun7yubOhyyhn_?B9GEQ2*1E z0pEO1R^eaH*J_(zeC8RNA!s`-$U!R$DmP0f$a6P3pj=I-_COF_47@F120(KvEgpe6 zwyesM64<MH65xxwXn27fW^>5%th(2YMBE>JCgNTTvc_~LCU2dvW9<in&(Hj*Y#i#3 zxD&TdPPpa^{Jutz4M*)3hB5%kkmMxwD(*-kDEbNUGW0GA2cdo)(a5OTPa_3MaLhx= zsAuLvxuDS~^dPuXYTZ4*#URYsa;5$3t6v$k*t_KQcx|Khj$2k%Zdtke)vx}aFKD!{ zv3f;n!qYm^co*m!aYoPH&h8xQ`!0F|tpr4v<SP1G_cC!d$Yq*G7~~dc7M~n29xaut zD~Sp;yru@UnH(@BDS5!Yq#6@pikVRNGes)EZc***xNU#><TeA<_#KY3?d0p)pC~}R z`n&Fl6PEG2&MsG$+QkocpXms?+0CNSeVmD5kfYMgh2dZUdivp4yrQ!8rxv!BSj8<N z7dXI1;CshqpiOrs!0{vNr9&_UgrpKPz79|&GOB_iUEM)NVr?Rw62T+Z1@muqn$(*h zxQ^d)p_x_Tv1M;_!&@F}+_--Kp+ol{deQQ9_{s47vF)wacFIe&Sas<BpJ>Vu2nE-1 z>GE|n@YE7#8~|T72|>xYaznMUZn;IQf#3oyVvbRQj7}Jud5xKdEA<F1d1!%`uh^C= zrk0RoR0eQ@?xi=I`FtQNr^ZGGTlq%5(eB<&j1-W|cLP4)s=LXxz#wBVEd&}6#y1-U zK_lzt7yfg7%-#Gi?pVDKB+RZ|M|a&YJ?Q?3`{iOI9?fK`eS6X$jZW9LjqKVr5=SQp z#|ne)Id4a^xx@3HTRy(LeEf&|ve|nEqmi8Br>}c*M|q01RM|Gm*`V*$)U(V5Njx^U zej+1tF_POwa@Ux9u^EkZX#|MjsS3vE?c%Y60bJ_TgI%PTez$#2e3FvY?b%=!={g$f z-4ueLjF3$UNm@%i+MeGrwE3;+YnI1St0VI_erWHVckb={slIJ+Xva0v<9kB`qx<f< z^Umv}qi8kaIqRUu_jM;2h#?q3IvfQEo8anzY{3Ot>OjdNlIMjRPINqulF<CQx|BW1 z(cX-fU?O3x%+Gvc<P(WvF|qkRc~$F^#l)v%>CY2Ij-=`M`+o#GX+fLnjJHu}av5rv zQY}j9pawXfVhZCWuoVO%plhrB&01wZrU+4q#YQIcV3r8+GUOms*y}E+X{phLY{_K> zSAiZ$d`y<-)w@gi^~%`7P$#0cn_f0;Hk8Wh(QH~T;DN{{kQF&S84ja27@=5VIRA^K z{9Vb$<bddBpQXZDID8!C@@K<o!hdi5C4vXxe`gwRVt+jq{zw(~>o9sjR}RT|jbjs_ z8IY`vQowM<X>gBh)&+{u3*M&Zroo2b&Th&B1?0f=o6UsmdfSFRJF)q@LF)}Cikp9P zPz|pi9NGF@OnhQ}W1S};dc(6poKSL;+S)apJ$*&pwG%Nyk~F4`-DkU}nDbChnE0eB z9q~BCH5PZkWoO=?k)^$Fpg)~X@RtIacZFRx1Thr4KC>KdZLlDS5vDfG^Ip{Bselhk z#p`u@eb4Zob$e^!Zyz~!?2%*25164MS8oY+`3p84dxUF|_UhKN68y+;r=1Cyr9o$? z715>Wjl6BqVG(b#L^>NHou4;>%!KCbb|$ADmlo>vx))u%cu}3_<KG6&<|T@!Mjm`{ z<Uvj;=e-<rDoOSPIbG<+z|`cdlKjG1(Oj;AfpoR3WICPs$7ww?#EgPQnwycR&}SBh zh8Blr+iTm#x2?7J-@boiu<w0+gYwece$2V?M(5b}>6I0(<BHxVb!)SdUB-lo$Or^H zS7V+6n;T5{hk}JGIup9Lco3qXWo$_DVnB;<BFzNdpXfzqX4aq%;{~9vYV%cA>fF-N zrTv}ppL*Rp->C*~`>ASW{c9sjOC#5hqkR1N&43Byj<qLLNBb&Q)z^`My2WKl2iDZS z;Bte^ktKy{(|KZeICy?qFh5Dw8M(1k86h%YkO!yp08#fiEULOGR8-RY56k-&xsIk$ z!#IW5Og39qLeO6fY8l(&Jrx5s*VqcLCGW4_XAjQpxap?tJ8o*&KY8Q!?Kf_F=l%8j z6ISD<hmIWCF*g|6CM&!5(bWY&O?;fl;NZyA+?bjRso~AvRTmx~8F~B?_rkR+bngEH zof|$a;ZB<zz?fX96fka*B){nfqZY0EJFo)n?kw#b9ohja&_IyXF`@9JNyrMLxE+|r z!kq=jLNAX4H=Y>wgq6|7copX#4&$wxyMMwmM@(nF5QZ1*X3VH~X5KMJLN>`i<Imq@ z$1`(IDA@GW^62RD$P*3AS;g*3m<x`xV8t`0yXuA-M$CyB-))l_-#)xNJWQ5ocP`ja z>uBKA(Q%~kat9CHm2_EZ+B7U1$E4c0aQN=Qp-+DCy~k&_eYtpZ@Ldf#F1P^e<GA~T zyJ>+SFiBLoFa2=+{&#QN_U`-Z*IxUM^~f9F7+HS@ZH`jNxZ6PXOYV~3#g2Dw_Ay9} z1Qadgc4^pSxD8PU4AB$F+!qBiM3e*IA<Ab^y-p{^E~JAROOngh#f>Ek$wD?0!)e7A zjf5ahkW>rO%H8giTgYvtS{rQn(B#ITAb!_&&sFOWA3y%c@#Ff&+aG=OEpxj`guifp zuu|Xrs;qtFxH>yIDgA}9N`qbCer>LMPI`<mNdbQfOQIE+Nb>OnwE7*Zy_Ay0QYy#? z?CC8zWQJf?WUO|ReP!qds7E#gPFdNK4f23zpK25ejlu_;<@C_h-l?H<xq0B+f#3Pa ztF}#KT4QJ4dS<MZnb`IR=t}uUqP{KBpPOt<@|WvRY^%>4IPjCNym|3-xj%E=*xoZ| z_Ksbf?Ju8Rym{-ME^$v;*e-TT<UK8zTogNFc5<R0^LKl(fQcOf%4<bEo{_Z@$3ET- zRg3CG!qQU+Mv^KmB6Dl7fL*fSVdrU^F#Hl}LB5#U{*mEr)DaurIkK}gGT3&=hR^0= zCTbe0aEn_eim{Ljr3tPEjxcGLg%)w$oPfYdoJYOuhFM@aK0dK6pPp}T@0%Vzlv}MF z=$zd?K7J^-`6qrURG}WKn#uJI%$*#V^QQ@ddX;R<E9X?By04g?fU=wKWDZ@kCwG1B z!%*wH@od$DQe-+YzcD{h&d(?tXoyuxbe}t;1YxnE)wJCp>~8MdxQm8R$2*9+V{7A> z_PBx%PGDA=E1(ZM2dFe}h~Q(!*Ft3e;D^OU1)L5$RRG@tDFoDV>#3V>nw}gUMCKv< z#H|--Hf=O0++>m(pJ*rW{&jyr<OWbENgSb8p4AkJQ}NZwudL`Ef#k(tjd=W|xQBe| zg}AfoT|7xx`(p4hgYR?K$`iXXQ0s@>&EJ5QiE&11mTiQG%Gr^zG>#e50Nv&!U$U&; z0f%8M^29Aego1+oqKPwOStmEv2)VJa^EcUW(hEbM`6#gh&o(xnDXOz(ECsZPFzBbn zGa|ph!G}#1voW*azv9mtn1IdG2AXB=m?ZfQlZO35wW*jC0|%|>bZw7oY414<h!Mu! zH85bjzVq6B!>n6U5x8;UQDeoyMJIK4&*8_5Lg5>Q!dJ(A4x<6KX#(Gw1)`iMNj(Pe zAyh4oFjzg!h<X@Lanp<+)^KJKKaHFF_pdI@kBuHZLKN`C{u4X5&tJ1}&Ggjh+}K=# zs!h#wqQ8;Kk7#0I1VOs#?y!{#bF5)D*qXx#w=k2<Q0E~S%OdbYf*j!?^7L?WR#l6_ z<xMnIzRNRX3;U>NN#vAd&e83IL*+esUpiGbe>EJ>RI8aJOVJolYvh`AsSI`X=2@Sx zS%|WAt{KXOQ{Mki4Bn4W;65iD$a%JE->%5fvbCXd-_T^bluul5SBI;)<Y7lGmtiNM z(&b>$&DMZ3a)_{J+UfIzNb(U51I;QMwq*AuWVi4Mw0IJ&PIGpkTF%6ww4}GA&}^9x zUGK!`NTrYBa!{4iN(<a02@0XKJ<F|6NL||OK+A@!sSA;439T;-V|3?$^6$3ku|q~~ zJQ8WCZDZ5Pwih0rF%E71*-&-y9gBS<(UR>HUptc0SH85OQlshFxWDa-2d-H<cy^C+ z8qsKd&%vc@4iv{dZ#t>=97wtCwu9%@va(;8T?`#O7@D6iOoYP&-8pc}Uj+vf6B)N6 zuBwhWt-2YsT~6=IdQi_@g&u?jkML4v*ID(%ma~d(ds#1+`dkIH^8qC6g!YQg%ge>A zj~8NexYYm<s;`u!;y_5>O=>=JlL!htyrvBd07na8U0BjW5HLIF1%zc>7=Z~jB9SEP zCK$B_fKYTqOg2NZY$nDA+jSz=!XOF#P@H6&aPo!8HrW&fSwl^kAd$XwQhUbcArXtV zxF!1U)fqMC^Na5-sm$5^^~I^{eS7Ecv-CAqJsW&_eg@5Xb@b@+&%AbcA@SJBSL++H z@WG?YCd<L}dAVH@qIH8KqinTKL!&cN!<1GRCGn8F>)H)G2^~0?7@7%8G|0>cG6X|q zy0GVRT&H*nFMaCV;?bjv=RWo6`*t2Zy7RtgJKitUE?%ttg4eM>C=0k?@Vsp49WgAk zDw2E@YKcV-eo_$A+C81SUUJ{Lv$usDdu*@<tVD_sNglAda)<!jZt=0;+BiqSQ-qi< z5DiJbK%k(jA0|&uQl>&=L2=30tH7V?b>BaI%ZcN2v-Q#Xs9*hG#JvfaTxWUjdA?Is z=hVLM)m=+hcUASiR4;0^mZR2cOR`#$C0mv(w~Z|u8L*65j03pAHeoSFIA922>EseZ zFmo~C0h2rlQ8Lfu<_?7Tk_pLO=018z!et1_IFm^(H#bwB-}{}aR!cG%$lPaospZtE zvwX|@z03dozwt^w+sK5V+RV91iB6lBYMPR6P3!~J5!G-e+tf<Sq?(p6j131a-Gcha zBEUadCL5R{DS|K_d&0Z0!_!1nro$v#NF;xjHG#m&e9j_r^T#m-!GVf-!_lEz5VK$m z&1qjW;3!XOM<i@5^4|KJtyU<!jj=vTVGQ52GLr)dkNKA~{;_-?F^&|015azT>@Dn1 zZ!40s9S-{jBEfF~L#hIqCPo~O+<6M48ECZ6JQGRPE%FQDPhR#%tx4}fL?vMXNO~E^ zF=8xsk^qLEhURw}GL`{gi^`lG@RgGFjPl0Q^>l7#aK3-bXPsg)g`+N4tn9QhfzgDw zFO>5}BQlP_?HE<$|0?QMj6OWaD*HO)?Z(d=@ALewGyN!T;K#OYh4;FT26J}gJrO+r zrO1O1q&?Bn8xNSd=)-T`x5rz|`IpJ%RRlpLTlklZkV#;Ox=6u3GkDhM^P7D#^9cHQ z&QWLz7U#1RptrLD9H0chbVM|gwSXi>O4&&1oKcEqOHnxFb7ZBTGm1Gb-g{p)V|sxh zoh7+9?u(r@;yzy-R}1yDLvXO<Rd#^tQn_L_cRF2RAgO*IDaZZga{pnYzrTF6uFC!8 zy+C>-6!7s^zQim-;{Ug66xh)x{zqP8&Ko=TFKtLk&i>R@7uk32<vROkZ^_<O=3){b z|C##R`DOPCgTlMWaQq*9iMcpS%}+TdNxVMg9C`P<@4x@vdrzPCdf)xNcfaqw?|J7t z-uBj?d&~W=yPt&Xd(YoX%Ju1Ur_bH}s?|GgKLhHMLU;#n+`Y>sjcN?l2f$VpQM!oG zLBlqf9!=B|wFNNkRIRILkZlsDMl+IM#N<GI4j5%N*A^`T6_-%efU7x6W}f>y(*^;~ z?;N5;Zz3EsH-l8n&7rSRjl{-HB8BRz{5RP{V&yTDLnD4MLox#3vWefA055*8R=cxN zO!xf<yfN6RsK0<mP=R?!19c}FnWVTI^!n(<#Nl8z=2uWIY1Vi+cFiP8wEwq@jXP_# z2m3m2aFpSE0X0{oAl@cr4HC%o`M)pH>?NZL@dd@{`qE3FRftOxhh(P;D-p>V1cXf~ zCI^Xwz=;7L@u{jyK-J<T0PDem^10<%;UI5lP<YSbC&La{WH6#~pi$FXB-HEq->X$* zC>C1Rw((H!V;{JNU;D~=>>67f*eRyTQUtPlDp;)QI(A;fmaBM#l?6j6<c+6c4224d z!1fsy$u7Abu}_a8BDuZ$Z7(_4s5)Nsm!IPMB$Pbx+I#Q0>&~-hZaQ?sfxWxysfl{F zxGzD-OplTwJuYAolL6p%KgQ9*Jk^rvPyrO^QP9N!ixq^EPG@VucFri8fxPA?-BX5w zdckYW4W6^@bAxk04?J61-)e2~c+bqG$nZ-<$(`~+a2bgv5<}_KY&?|1W1(W9(ieL> zK$P0up^@6WgIepXT^bvl=b+a7;8=9oeYG6*w(tjoj?3iw`tw;hE`6Ew2)Rw=P_i!) z?^mzzx%e!)dT0iHXW2O9+|VlFpKxkra0$ki1*x3OsPQZVxD%t)Fz;hX340$eHB+KE zTRcJ^zjOOsdu+5?2~+M?Wo+$(#p!QnY*9Zn_qAufDauXEL!OQ)mJtaUZOV=5*Z|J4 zIoS(kvtp_*`TWr@U_et-<?}@MLHU`_n^x2^pO=?k4q1tb2sj4s7ovX99p<wtZ~LB) z1k@Q|Wxn5x`pr{HO%rHjD&8sD?<%$*SANXryX=qtCJ2NxqzXI_a)bO~QOKkn9Bh{{ zqvG_9jr5fY$yfwELi^^mrEc6gP-~bHVL%*A_lA#^<C=GP0MBGIxWVQp0bmk?l6~eE z)NrmieWD!C0ZH~J_L|vZ4UThe-xHoD1$zIv5IHX9x0<7q!w2kOEZ<k{8#(SRP4x|i z^Z9V8Kb$(Sjrx`M?oTGNg%WW#gaFrRaGi1HW88_9a3vTHcW~z@X+I#;7c6Sbi<voL zl9!Bq$$-Y-RQ}cdcC=c{t2?Tpfzg3ulv5wh1cR-$!=IdM?HC!}**bhYTG^x0tzd9) zOh3w8+!!Ci12yQ>*oNhUMT}(9zKU*gdbQG5f*B5vr!GeUoJN59y4R7jvyuvdBP)&7 z5b#tp1n|PZoIV`-*puhaKY3oQPu9XgPpddq8!Gv|#}oN{;+BE0L_)Qr{f++q#%9~n z#*aLMUVf8vFapy*l8am#(YAoofRr{!4uUf7G^HygE!hJrCb*x#5o4pG-`?FM6>Qrw zKRsEmHwFiigQ<A*N<>3Il^V@2PvRlL^l+cG>F#dPvVp$tzPs`j*C^WW1+NVXihMaA z*@FGhIjJf79T^zeHq_V_7IaC>jvtzwxUtsVA#&wAU3=*^BzDm9P%|MH-V+5UQ!JMY zppK#gt>ziMHK_NHIm`fF$N$t%6@;C}u+!L9WB|q^_#H7-CkJX((24*n80NZ6_|6@} ztpc&K1(v^zU_x2>ECvlUSNv+iIpiZtqb-=T1~Jm?g3w;cf~r?lcAKM>zU(!BabTc) z9DvL)fWHF8V-&C+>vW+1KK!*14o$pmU|>&t)QS~lF(YFsRla5Ycs`i<RQ;ZM#Vlv@ z-U8*N1$Kp73Akl=ODg@Eq+PH^U!?+{W~Y78ZFV9?zJs0ihD)hxZ!D}a2L_p~vv?)3 z&dRLCgxW(!8ix+1g#n2I?jyzl#vM3d0yQvDiv<QEp4@n0d_}h5`|*3OD%zxst&8(> zGt*R%7)JZ36``d9+UPX~)nG(pD8#GN<WGo58R1tY0HG@Y5tNZGBff`N*q}Xg+{B&W z?aMm#M;<T)rkr5vo10UAbQVwYGM`p&e5jZ0(@py+r>e!d>iXt<pVzrrKR!KIMK+l5 zkd~RR`;14Ow=Or$Kxm9K0$od(!~t}H<rwBOgMmx|`YjaDIwX0lo^x?sts~^I&Lu#l z8KHop>15f_m<T{JmX}Z~GRL6c<o2b-x!LK7(c${O!M&cm2g<`VQj^9aIueg3iTu{v zIU*aPKlN4tS!QPzJOYKx@IUX7L}@5=2FU8ctH}Z&8Jh%4Q0HdrgmFoYUQ@m|vsBL6 zcCkKp5NF}Gw{F{x6N*U{w4K=ltO#Ze!!%K~gJ!#in&G{1PObm4dTwhC2wr5@<Z~*Q z>-?XP!cz=M9=>2Y6FG)!)E7J%kDmY|2WzW0H?fOwly1k(<BOd2GP&nPm@lI^B1nGo zf>;7ofl`O;LDix@7y^+PF<t-}YCWDx@lNj7WQIvrlmLl{dOf@{ax_7{M5NiCBO6GE zrw6;^C)t&ny=S!s+C@f%`?$I)Z#wSKIi?5D)A~`Z4yJC0hq9X|Hs{>F@p5X)-E3_h zKx)DrLA|+ki7^y2YT#Fw4eotQPF%CxFb-@~N&HW&yS{S>7tsua+XbJP&V?5rlTRH$ zgWbL`J2~3G`Ik+(F<Fh6(F;AD>@M?eQRo4im4aD=4_`KjTbsA$%p3{v;^w~cu{t*4 zI1_&<54EsAmo$0shaVxR5%yD|^WLyOFWd6)cdjo_{^!YM{qP^p`6Frb9(c&Z{)_#I zLLt%b4<~<N(^gs2m<?6+68-`|>*_A4);NNS>Wua0fYH#aX!grJCy(pYVVp=rYLiQ6 zX>oFVpxPYr!HX(pg=jrmqN34cb9xSFh0}*)0Qn(&ZnBrnU5duw{w}#vc7Aoofqh#> z7o9VVvuIgfzyav>hj#8fp`b{x8pl8M>i7EXp?U+Bv@F?BW}<)l9m_lB2leZ`?<)<; zP1J9B-13zR^;>oZD}BHMy~)zx_(Cb+Ox#<{`g{>jidE92bkayab+vhwh<4YLORCB% z;f>htY~@acBLcWM+!4$g>KO`xQR;-rLDgQD%=Wr61%WuBRg5c`B7`MEhVR-Xj@-Gt zwkER#T}I|v$|xCiV=JTWm~&(n{jEJd7>@zx1jo5N$7nK`N07WAtaZ6OAVPRF=@M9k zv>w6}EIFuprrPi9+_sd?=a_VbLL357S0A}rSobDW@7Z@{LSi!1Gfjw>SQ>i)SebHq z-c@Jx{L-@}sdm=*pc0BSS67{CW!#;5Ym%b*8@>4^FFK#m`>Uva`VUD=uSRhw`ElUN z4&Q_xcJ}Y}N8BZ{r@NM;L>pD&8Be)Dp(&c4Fq$D5(w5(EofYmm3B)S%G%2w7)BH!| z*>B%WfYfgT&6&RHD<lV>d!_GCY;T|z4h^?h_eKXstCYYY08bWhC=<@q>QclzB^HuM z^!k8?6Y>snvJ{;wB73eqQv(tr^P3G*Q-g)wd%|kAP@jtIUYV*F_Us9FzOiR_VQ@<A z*|Ueu?zXAU@9bvd^fdeL*4RSyPTFA&okrRL+z0m}@(0ZmnL|Gx<_X3U1dplqCKIUy z|8Xf3LmWkTNw6X$q|$x4wqtpHwLEayeNt=7JD_)l&C%(-kkeUuJgzbxp}Ro8&eQ%a zi9gFAV-4hdlEdi37Ggd)h(AGsU_Rj4CBVrt$>4<gAF!`SQ;SL%&+FMA3O0rYYUTbS z0qA5R8m7uuOr&AXMlomlHy7G0d^pyx0M@jw%&MS+(<;8=4DERB@f}0X@9dr{mF8CF z&L5<L%B{NC)Y6UZ_Kj_|zWT07>x*BsCf~Js;ld?8J$T-&Ew#p{?HlF(uFN;LenAyH z&=KcQEsy1o8`LudqTRDRNRh&wfHj%fHiRd({c5>C;_1RouRu#&cYn$BpkCqPEN{Ic zTD@!U>HRu3OL9_uC|Bo(=YL6Gb$!!)L`IiWF=EoIYWz5~)#Fw5u)gxso9<<P#(U%W zm8YLxx%Do*yv&uZ?J71w8*S&bi}<Y)PQ;nvS>=jNq_kYI(mf)^idXFiRM*`FP~DH% z=ads}gD)Iz)~bZ%byXbQ8##1eH}j#{&=FVON^TZuc%m|k*?_diYp)H63B6JFccr^) zAUp_<Mi7I=6O0ySNOSer{;xB6W0PAaV`hNTwtin~Dl-5>pWi!0GV4q}hORH*NGgz$ zf$dU~y@L{6#6?H|4nSrSV~z403xH%#Lys?5{zBNY?W5jUUoysKR&0PmVbTz|<L+2r zW30;<9|LK3!noal0d<_jrUUqY_MpuiUCEK@<z3E_WVCC3u037x`5cx*AA~r5?|Fb1 z{_|K@WHNZ}3lkoI+eyGMn@LEH3$oVOzqsY}ZMRUXeE&WyuM>+WfRXjr$0IPHlKf13 zS5lz0edQYel5@7xlQp{Pk8r!#teix1rtJ*TevRGKODSlQ_5zEite;X<Z(+VS;?xOi zYpGbRq+nI|`pU^%t(Hs0h_eU0Nnayzv9I%cltjoTK2)vNZVl)9-sMU7o|T=F6<;J3 z&i5l(m>9kkjx`p%m|yR$4#iH^2dj~CWDp*NBJ!V>^~LR>;8N~Vq4O5a7XAKe;NkwI z!f$wU%J*7!DW-?Z$pp?AER(>HKQ70Mtm<8*FJxYR2Q;F{odRB%Y2zm2cIUQfmh=hA zJ6Hf9UFE}bKcIDHqK@lz8DAvOL@qW%oV|ozx;w;S%l7Txvvb?x{LD@5!xYu2SNdXb z>{|H{qKDj()QoO*gf<`m3maYFg}HgrxDcCZhOwqwA!r1s&z@l)K0!4T+_<>Y-0z{S zx7CC%f)+6yhN`&auN?4r9ttI5ne5;A?Ck%X@ms~4(4Karg5Is3usQ)Pj~O`V_dECy z0fYN@1nqf7PG5fCut!A~?RMflb<YzpF{ag9V+DtNmvraP8kJK7L(;EJv~4>y7Km68 zzjrVh@KXu>zYw|;{jJxAS#*i*1}1)q_L~|<Up1G33%bolTN6hFX|dsnL?BQPSsB|F z=Vr!+YtYde*{<_S5}TstRqc}^Da+nyqiz#v(miQ6(Q0X)1yz_1dov*2Alcq%jqj;M z#tUx5`duqv?t^BV3VV1a{MIplFu6*;&-!BGwa0v5@2}i_=l}8@du@VJrU9$-=cajc zFcdb&y|@MZkwmzwrx~n~O==<UHQxSZ#+wqyti-BD#2z6*e$^n#1=v%dQhpXHzh0;e zZO=(4(h_>MQN1&HEigd6(%z?>v|;R7-o7+5H9E|xn?tqYWH3d6Hqme;6}fC`6pmQN z^8(djAx0&TcT3FkhWJ!m4lERWjd0r7vhce@qcQS5qtP37%q_P1_X1l8nazpXz~cGZ z9<RT@Fg7zh*vus(^>Qu}8YttmcwJ?vS&LE2IU0`j#T$zw<wibXWg<`wOjVkF@V3F< zG+3%v^2x%RBl+sKc%)F-N=ByZH>uKo!$f)y7`q*3Xprb_6mOZi%t9fqd_W?yR7g=T z8L-qVl4dkCG*+6=Z|oncWrrpcjgbcH-@<kGj-ubab-PXr30hWM(M?=0vO>@Va`!n} zLZ{hvTjpD_SnS}gElVT)TOcnPDdg)zTc6k#$zgzog7=f&mIwvQg=8r3mNb=a%wl0^ zY_L-Qd^lQ8w3a3+twO>Vjo1(+)JFRIYo$u662&=U+5Sh0g;FS(F3m?mKLq9j$8KM) zPpE_V(fXEDHmcJe*nKRXl0qQBEs1Jl=HY$<LnGKbKT{V;kIrO)F0icbP#PMXZ416& zaLdp_8?W|UJA{zml=~tGW~*!7V&HAa6q}R@X&(*UW~kI<gs8Q?bmwxquP+T3M&GA2 zn0O^FJhM=R&w8u1$%$p(T+mi4BpOjuL)F;#W{oM{srPy@{#+zAS*<Nk#1hZh1ck5M zr{t^*!+H4Gue9pGC}i45{B$c*1eYJ-4BQ|1te6nmzQ<q00!z9Y-eSqL6Fn#t2!xIp zp-|vvBM=IpaWA=FwuMplr~Nj$M24|r+v1kl>G84VV7ZhNWie!1T!1GLanoX&_(^0Q zNh`tzz!F%8@2-aiV@QeknYUT1bxYP5duZZ%s9jk9RK`9Lg#)sh>bu#_(01SS`x<B% z9;<;LW2L$hjYw-pV@IpCiOCD=e4%(D6N&bvFBCI1Z<E|bUsJHV-mg?AFDB#BXe@P+ z#+9Mt>dp>pSeSNgp-;Sx+~vP>#(w#ePrd%!t0WZUfB!@9U|GJe9-kh>75baUW;{mF zyZj|(eO-l@QC<kLOW^eo?H%xGHXmW5JBLe`hys)uVKWpyYmk;_l3`5gIdZQx^(V|{ zG9rO$1tIvMZw}KZ>X^Z*vajU8b@-zW2ZcTaqd(R0PC0#l{LMf5#_#{$^Iuv2)Q3Ox z-uJxjwfEe8_|QJ6YU%^H2U839Q{4%V$~VVQ>II&(`OiBLcUl$f1udZrl3zXaWpBZW zOJE9LD_C)MozouI-Z9yg&UKZ^oD6_wrc6Gl{L<}65%;$~Y0l}5If|9*UxF)jnC9Kz zjZo+``N2Ym)%}+H6|`64q587s-<HbeBB>BcDFI*{rjg*&F`pF;ryz+>2a^fQ8w^A} zIm;i71a3g)WJ|eF(lLwWOtz@@Mx)V0sZb5US`sEkm9yebzAp_RR_*m=Vm4I~QXYsi zSplJ)wir-QFMBiaTPA~9e*>!ML@FP*BNXnma>-PHJXgOj87{CQ5?BrAAfSO40NiOJ z(H{#%t1&xONGH`P&tsN96fdQssJrLR5C#o`n5NoMtP~GL$WX_U`yf6$`-VV>&2aVK zFY!}rPa<5VXiJ=^T)l4D@%T(RUF7qJEh`-%IX7NHeiMN*Yc=jSmQ5F{#F@^c*HI28 z7z#yhNfjblys2=%v2=LeL%i3Hl%xJk2)-?4R-h~}t#Bk3&xgW+FibEukyp=0s4x|P z#3z{v<wGboisPfqSz$CA(Q7X2xYS-_1=axKbNjbWj1pTswQs4!X>KbbXgtfLGy+1B zaEPXx5JmhPVw=POinf50mU1(aP3bZA&d-gHWfLU<OZ|T^=$f0x_|-#NE&c4n;rZ@Z zd;g}<^}&B>?;N=@5<Y%)$Gf_KL!OL-J}urTD!HHppf3IxyEovM5`N@YrUJ=SoMK3W zU4xzE#f`d@8|KKEu52<T711xrgS(o&s4JShM%%atU(hR;UZdP=k@}mGwX@&ZgAYRd zttQx13;(Mnt1%uCDd8^B%}pg(q)N-sV67?@22*h+N!CyN12Ko*Uze3vT&)O-%@^5S zkb5a}%DE)9h4sV61*i259Cb5#s=99Vma2Q<EBY?BxtHG^vzJ&4q$c-vW6_!4wskz0 zB@b09&*M#{_%t-NtZddPJS(b~#DmB-)V_2sxvQ_1n82AMoT2&`9s>_PC#ZCUF{>-B zSlQ;5JaF6ivSjx`s{?<@0_jM^5$4sUY<9RllFO-3a=0(@k`X!W&*jEy!{l?Vd_bwE zO!H{xp<=s4dRCigcEW5cPpmYjP8}W}FBgJ&yJp%1(5lsmK|3GHm&ZpILK&yO{?J@u z`lLTOIXF1!OL$LClLq7ZsxF~N`a#M2zZ?rNY+59};qS<hu;R-J63+u1@$%&}kFQs& z>Riw>Iy?~yO$?8E0za?T9@uu`+#kfho>@6&R>~NbgXM~O>{eM<?F}DCkHgokO1t75 zh8aT{sRVR@BuF9zBnt0Y#%oEVu}TL(n2S;9dZ+-FOJ11=hZ%eA&FA6%0@q$Fh|9KM z#o=e=axt*Qla~|xB$u1w9{@z=5=1;NJ~sta@~QFM#D5#lj{n6(ZanI|!1jx5S8I;r zXX|eMJAcP64_B*PJMGfVS(iCQZEYkQ02mZX)F_-0QdonThfnVm14CJ?)RqJgEKLQU z@~0#Xo%}cod-dE(zB!$Go)NsxBcFeSKecpn<mAZ_by2^)UtXU)>DtuaSD#nUFdA*L zpfbe6h!_Kj6)Io+_EhGgLW1F0hFFYk<h01ZG(1|_Mfb-<q`9OLq<OQnEV$Xe61)r8 zCjN*&A~ZcTk&qeYq`l^PQ-}G^D$IORpYOY??~m^6yL0VC{GO%t2OnI2@G&=CWOwaY zt$Mt6{ILgSO4}bjap98}E`0JYZ`rZ^)>|LZbH~l|cNv?RJG7CMs654F=R$nuDPd)z zfEZ7`3Sz?5e1)f(Ci7px^Y-YF-RAlpUDj=@ueDmYuB~x&jg@4LS=DV7BJy*k@-bZP zVR9L;wUVr8I6GPJAnVBn$U?+#b1IHkRK}J(Gr9_iv@b;$d-l5ZjpOkijdZnMtzTW= zSVn3*6;CDMJPm{My)JlAjE^Q{H1aPr(=rkzh(JEQIGXi#fIOL%*2*8Qtnf(j;)ms7 z1&8U%i#+p|ANi0M{Bf^10syDD+ym4**E0oj4+BR65DGp7xeX#cm0&8+wTVkExq!OA z^Un`gpc!~G9?;F>I%w3LDhWu0$8ZLNieZxJ1X=Sa`<Z(sy>nAvEY#g@cwv=tg8Jn% ztNNPOkbE*@qE3ietvNHv{0GE@|BTPpxUy@`3rYodpr?yZkwj^30fQ81aVlvhB>6xR zn`Z1Bfza-$R94R!&MwE3ws1JQ!;!5oaRJDzM01S|FX<CreV;$>d~wd_)n@}bM^a%! zpXSBY)wn)!aCP<i^C6d7qlug?=hMURn)}1&uY)_fU12uhYRtm|itFaaQZ0f?0jVVE z#l2h2krwOTDrfB8D;Lo_H|?m~IPJhCW;p!o9;ch=@wtWEn*6Y{v`cS{urB~8iTT>J z6<?5ES*RyuaM;aDT{u6mWEbBr-+k$_@z-jdRU3(iVdQ1GmWU~QQWzU7-olhm?M&kA z*pz^kju>E}5qq{ekjbP{{OdS|1XSEO>6MDtY(u`_W$H#rku_hh?!9Zz%)WMIqFfCp zBRug&Ie$I9XV3IM)@Nqw|Cp_mb6@|u@Hgm}dZV;8H@e1}CG(wXt;iNU<I9L>a<{l# zSYEVmTqw&<2>{zvv_8+r*wNgl8A6h<2T-f92Ea?x+<DpywP&AIYtP>Ql5zjROQW6d zKl{1S(a$~BYAMf%wh=j}tdnm1VFVn{R^uM$u7dI#C6I~Y$?z-}#oH_miN1rcC8{K^ zfto82#<*b?*Z|<zI~B$&N}Po!uje?fXCf{6{Fa5;_SEFqXnrI=l7#F{e&R7wak``P z+8E0usfb7yFff4Q1#I8Wc)MEMhUT`|mrnPkVuuzM4sF>z-)PJ?W989ib$cps0JS|d zu+;gpLtC~ST3DWMHs>2^drJ2IFdG&Q-OJ9+`A?3IS1+7wMEU}I1MzLup-mr2H!z1^ z`kwk-^-*JhQL|)x$w@7?s3TMDOIZPrH8Tm#o{4)Rf^obk4WrHyBEa__21X{Xh5!s) zHgQ2>H3$#fSGX*0gP$v)DQ*MDA=e7v<lDk`)%l;{tAqvXb;F>@%^X31DQX~$)|>Sv zms=a4(#<dwxzG{1wKj3_LDfM7#I3OzL*<l=UH(&<h1{G6dsE)=M~b$j_{_|<u~|Zm zV#0~9#+^j5K}{A<TTM2b6O)a`)acsUsGVKRWCmwix3y*lGugR#ym_YnK0l<Ek-HMb zxw&HEF5pu^`+cLMBO@wv^YHM^ofqxQU@?;^R^#!K40UN}Rb}i24fu&=Mt5aCpTKG< zG9M5|qG^j8{D<-U#fwm{tidPpS;tYg#!21Zq>IJL-Oqy)7}nnUS3BpZ1#5cxs2L95 zR4IpgF*E@86bVuoW&k7*AHu_d3&}Vg4ulBzpyWukX*f*PVFb7DC=d$Y-ie8kkwju* zdIIqC$oL2~a|i3?{sf8lg<L$6WE5-vYQNN%B18i0nXyYYZBsI%vo454Qt{_zeSA>k zU-?(IOvND`E*>0tw%jOp{;5%Jtlf9WS?jN>Ri|^wQQ0l6Eu~;`|Ndk!JXUJ`zT?cZ zV}rl!q1hXU?!7m$RG+Pk@IxDL6SU(h?bsw&X@Svtz}Z`;9ucxbbSwOX5>fL93_nvg zfX+hrgpjTH50CIfcmgRx2yV-kElXRL(oD~MJGC9lcNDR<!<;D#4Lpu_9ZnYcha*s8 z4ZNE0^rmF*d4YQ@&0&hnQKc>72?sKP$mb$FhRNsfE$e{%xAY@R+Uhq-^|)ol>!oj4 zAsh%z5sBHXJT^V>Vg+;zUJ89A`(AyX%*@T}U&?4XL#Qe`AqmwHhzZC#nxadGK^VbM z`ymOq5-9XR-(ojyxEU96?y9f096Z?H`|Ga%zubGz2i^8%l&V!CK{Y+T9A|qPq3l=7 zVk#MeyJguAoWlP_<KoTNL|)y-bvdQR$3*O*JEdmfYJl#%*MhZ;S30)i?Z(%7&DpFq z>+1M8tr7^og#6%X+{%AH-}yVKftvb%^yBx{NcH>b;G5Q^;qZO(xc;Wh<xP!u%FP>o z>F?FLdOx#9P<q5;29Vb>NT^P3y6M~GL(5V~VJPb~!d}`^2i1=g7ojyrh7;M^V58<z zPV^$mo^}rBr!Llm3eJ4cSOi?`Fk#k>uIzrb<T)2s_N3G-++YVog<qmr^WXk`y5Ota zIHKkxS319sJqiQrju8lwyzj^oH1@T!>9D{3k<MS}kMvO24{MBfvceqd`0A_V=_jC^ zP$x9mgiF$K6<voOTO2};>p|OQY_agN!6bE6)OwK#f*zovD(LQ@H|1mK0V`6ZJ|sj= zZK4EGCtxjr17w2_MBbm+c*iH)0|)P(&xhn%b^wE-rL&o67)vL15bF>!5mkk4*cqn; z)&tImC$DHHUUk5-th|*^47GFADPLez+f5((_mxYLo=CiU`T6pnuEJN{yMjOc)Bi(n zTL0YVG|vVXG}`(0Ro4`AF&;lFw?|4(w9U<Z{!;l@4wbLrNcmGX9xiX5*FI($=q4)V znhC5H#-c`gUEdnlg;!JcdNS){-E*4(evdATfQ?69gFk=H`BMK2x2yb!%>9$CMm3w? zdnbwb-*bM0?ZJ~`yvC~*TkfPSJlf7*LvPH0;vF)+>7ssSB%omUR^e!|Y$?{RDG$g& zLpidTIl^EDx>+-rN#HjCw&CD&F%*UN=5LZ#@e_U3nU!yWy8=%waO$7zYvlNpp=346 zLuHEJ4Uk$|0)9;Sswl`mG6AUmLd<ycm|Y^K3?gnsxiHxj#htM06PtVR7GHg=?wd=7 z;mLlib-AU9TK+%}psk5wrc}zH?M9NFPb=rZfzBnGP{#O%zoBS6;4*HvG<=U16u21f ze%F}pf{0j=&}(ToQ!pXJ?yk51UTNP`PCVcT>Pp5t<gW$o{M&F*h)^9xMQ0oUYUK{w zUFkm|1$;u&1AXJRr_dNGc2|I3FOQY$Q}t3~X2_kVRdrbjS5)2@by^wl69TJ+;MOoj zdYY_Ey;X;K2?-O-Pr?%PGR#lzyttP5=}Ye~KQLCln)vAt*f#FY4WoDdhVZozJz-1; z-4ai(GgQO`<PGA4fV^SD36V|>RLgyZT&j^C;*xMdyv!xR)F7>+qn^FyxsI92Td3Cy zWoM$XH5iqWO;=y)pVVjS!3k%)j=NFob-n8qPMV*peXcw4)hCiM<&y_3r`>ruPF6d$ zrpZ<!y~^uB>F&-%8bo5H(2t<bn;r#h6OL?`heR3enaPRK5sB7S$}%}9?dI!F4N*Jw z`Ycglc}b{zcD{!^oWEv??k&}qjy$+?tPx33I5P?#$&6l_kL$;`ZF;TN?%qGPBNd54 z)f-JhTXIRS)4MhHMAr0F@jkspZqt=PmykhXpQQ|P-KnW<rs(P3$YVjm#c}oU6AO!y z-@Wy@=LqxR9Q$@U7E8x=fA#UlzxudJoOu4kzvpc%{cYYp{?+$Cf8zPBJ}K*<aCHlV z-IK25o4}%jS>P=GCYhsm1R_LnaK8Aww}Ixs3xNNN>2lN#^V%epY)ro3Ij{GJ%kanV ze##jPhY4C6(&DLPI1$#G9eSbYc1T>qN9B(MIw`)V?WQ=O#N|{6Psq#mTD!f5Q|9pD zwf5om+Tri=-1#G3E4I6H*ietCN4UGNk#u6@_)$&FaA@N@Q}_??HQ04=ACk|V{lUr) zR@5VSucEPbl-EB{Bl0HN?s1vZ-VW^(pmlER;@faldc0?;8L3xr^ETZjnu5U9LrYFY zyV-yA9;Y1e5fsN3qR)21W+6kBcGX1fX2*uBDx;WS$p)=^X{B_&H2M$!fcRDWs{Am| zBrYXmMXI`?-GxajRHEJ~^M2`>p34&3=CDi!t@r!X{w$Q0Qo}8ui$Uo|NFbxq{*47f zlvNlr1uY_WnBt;b%C7g0d~W2uTKb>wJfqgpExwy5PF1TA$EhOxXP5usAM`c7NLyXR z-y0X%8JCfxmc@H<J-3=+XnL&hEGbK=o{H>(pxVt#Sbmy)^W7INsEcdZgII$rScMnd zd18#4q5z_bbFSd?5sW>ihVV85=FEvxSo}lk@h2-!zO~Z%;UncUKde4dQM2!>ysy&v zZ$DQ#y{+<d6%M84*97wA7~{kG5?9(1Pdo>B<h#|*KRr@?&37xE|Nclt?v0%<F%F`v z42&r;MZ(=N)n-f$b@ec;C=QUt3kUN7%>=<-`WxR!Uw-!4XaDi*(tuwtgzvd0w07YH zT6%A+u5nzyQ5CE!LxzY8%Zi`Smlw5=N>RL*5^y-7aowY%TDX4EQ|V+lRIkv?!t3et z90&%aW+Y2i2H0UWSV<%T3GRtmBTb@>Y*%BHxrI7Qf78<+S@`B3Zz<n@|GHeF@Y+F$ z+4(j)<U?CVWV_l>Cr_MEBPY<Td$y=tdrx+BvC@+u;BoEyC{QVq;w%XI2wcG2&M7=8 z3<>kFJe%qmVN+8;0tEZ?Hw+QzGONzL(sxcd&>UPVKeX_`oDt~}g|bIP##~CA*L7in zZD%}Md?*nbA~U}0KDT+TidVL6^vgQ;CV81i;xQQNz2;5~X}P5%@@$yc(!2$|HaJl3 zOC@AQ@wsye6Pnn>gh$$TCO1#Ejf5qH??)CPz0_391vN3XoLQQfEth8}mNLszi$g>C zJNjBv10#L;eBa2xRIBd}X!*fQPxsI58JjAVrpETn^-nL4jdh;Cbzo+sK2-x=G*us& z8MxK!2N%Vl;K99as*;5mxUOq`poMANzH&u)hzO>e_6t`|z35)dm2-5@Du*Nv#&I3m z<4SCz2|E69=N%Ny!jEcDNYzd&5CqXvrA*!fy+48W@Tp=d=ZVCjAdLi16%ttwWuk>S zhy)565d1iSa;WQCt-(PzVv$a_Mq8sJfXoJ|<y^fkYC+{mhBlsn?oYfA3md$-Fe1x8 z3xotI+8*94bpLxH7<sSqtyXKDe;)o&o?0*JN6GLV<wwcmOUCHv$&ry0qodFEUU2&& z1FFaX;pHp|)>-gMS~Qqv(GGQ-|ID>G(2`T;izX4*AF%_vtTIYMZ!7A00>W!Of+Pj2 zUUMDLOR9p#R%d|#ceI&8@x7y$LY?=8)cKIw#NavgSHBhdUtH{hF~#++ASWf7g_oI2 z5iA|fFxCXb31BLe3B7V1B?L%M$RKhfLE?7jo1TQ<<!Xadu$E&%cy6`xqPo;^R#a7j zS=Fhx%uvO0lkVRFdqhR*!v_!S-%FAjC9PI=ZRND5Pu6Py+TQx=yGN-F<nyvH;HkrF zCGL6t&Pnc)L~wjMg5x_b6M6sr=Wo4b+tQYWt3cr3Kqa+YGI+=WoiKGons>8JJ+;^> zTQma!I37%$d0;ri2`2%aWWdwT=fDAKioeW!dmhw{u<6^D90*E+vSxD;5`O(V@7fQ) zW!hel#=rm|_Kw?8=xzj0j8!u-JNobH;S_{xrb((+L_(ZFZ*|NY4FrQxCIivADD3C9 z%BTQ%kzm#fiiKoIp&_uUvElHbuNDnteG!tRBL4ZVVbb|;Ui3yUsi!G35DN$4i19|O zq8aIr+sUatH_ncZ0yD~I0*zpx>a+VK2n`S@KzTZ9_XXi7;#3rGAv)~|c`{}O=CCAL z{ys9x$(vJlHB=V*7R!^d({yt%73%imDr<O<QJy#McYp?=PVZuL>~xD3)d_sUyW?3! zJ4e%oAq812t_q%du8NXF78HBwY_%V~8!WX65=Rp0tb|;2q7ViB(7$EIw(Yh|Sf1{E z`rdmE-f-_{c2qKzdv{boxL&+x|DGoY_n&*}*!JzM7XM65M#~lZQ&5z`=p<vFiHBoB z3<O+tAfd=eCde27vn@-J@V#|S(80R+?c`@O$7)aIpYMe*y3biCZrheSHr|I9;k|eM zGkk}|<frxHO$Qbu|68Qnlm9GUhWFk^A?4oRN1L^pT=Nxq9W=^LiFS0jC@<;~MLL8} z+_+O(D2}V6jeJ|kX)(8c*Nzun*m2kDC4SbV&qO#On{&vey78Y5J{LwZ%?lZ;8Ca#z z0x^9<okP1Jci}AeZc#AAN4x@01EGH^I^IO+UyLQo6#qq%Z*P%rTLI&~m;E}1{Ez%T zF_M@6sxb9%>L2r6@nqz2^$U2$g-0Y~R8<D+N<-v~9G;9JTs<Ne=h|HzRh*Hy;}nj$ zUb?UP^1)q|&ZWw(gRaKPW9JEV{%hKqQH^0)ptT0IrUUh?nnRw&J70~+$I_HudC)dz zFA`5yoH#~t1&PO}TP2x9cNY&J85rOJc<SK+^7(W+j#zi^!CkW4P&+L{rp5Ih8QAEr ztXC56=rPj&Ayu3&U)GV37qk{U70-77e%z}6^nCqW*5#-5cyEd&z&1hloTluWpIeat z;wJZ*>q@Lvl~HY0n}c;hDG?->wTGIJf>CnAon1IR;Ut|AONMaQ5|*q`$q`j~xg4#e zr<aZ`y`h@VSM%ovX9ty)kN=^3#sk#WOT(?N@JYV<$yRZ2u*gi6b<}NN8Lu!*i@pkI zhUI5Dr3?qB&`vsB=gMot!Mu~G8dQ05h0y4$89E$AiYhCTvx3cl#?3n5nQLa$8$<S6 z)?O`)>y!a`%i6s@`=K?p7V3P>Zw`+Si|(P8<z>tCbe`>ub+{CnKMwuv@T#{?(rAFM zNiD;{BHq~R)=4i-E9&N^dSk4ULcBY~8ac#TDH=uZ-x(dfe`MstqcXOz+dit+jT+k1 zH25sW))2YPgl;COfTt!X1!{WQGa)HsAVz?98Iyq9!A&eifVjpGT(qJHE`b!nz&18E zHa#{y+^P?x3w8?5+olAiG?bNK6fjm`TM`8%h|^rCc$#SdGcFA`uSolCs%=}hZXL+q zQR~-)$kUZ#H4^R{{`vd^Px=CJ^&Z%g&y-5BV*|IdUoC$}$_q#Gt&20eqcvZvzyDqN z*RkJWzxO=_VNt#~(dg^z`?s}j+kTXm{T?kVGP&lIL8@pEhCE}$xf-CGqrI7awFl<w z`7`tw$}7JfXRG@0d+xSPkGe0b#tJ%`dp@jCk+EoB66xsXp7el4E^&$$_!3G_b`cxB z=lSmYl}#s*L7uOw1N!`(A8xuB?uGj`w2mycBsbX_g*mWkH`mu=AN*j9vG9SI<HY0| z@sr9Ln=~54X2<~?BxY$=OJOkXMx~Eo;8{i(GY1532#gfenBb2{q|(N`6wB~=_cxo$ zXpS|<Muy7}P%=M~Dv2$h5}HeR9aVc0{!NgE6M9Zdntu)m9}{?<|CHR_+!xLKz*xZl zqCYS;kjVBW#-XTRA6^<iKvK6l;IkJ8UmppA^oYEEaMAW1NJe6z8zx^rlF5v`e)5J; zEYkV7By{UJ#67)+d-8EtRb#=KEo0QPaz*e=Km{U2FbS<JbN3SZ(B`WSvve^t6?}4d zu~<|YuO4zUoBB$rz~IX?<$CdN^^>OkZwB(mKBJo9{9xzX!||PYHS|I*#i}~KL{3IR z9qRmhKFSO~R4Y6AkDUEu$X+1emaEosr`zrlcNlYqv$0UnX5o{t*pIj@;LKMp3#i#f z^K~yL^Lt#+S+~tLuHx=1?c<(%a+AzUBJ&P92XdeU3S@p7<}%5i$ZK4@j8DUR4y6jA z!&OPyT+yp|>giR6Q7VeZOneXof)W8HJJwEjNyKHNLqI99a`A-J)rk$W{fQ^OygvG8 z<v+V+^ob|*s_2G+)QR<5*eV#bu0Kg+pljoaeK$#j85=LE!nqi=ena8NDfB|}G2=uG zA^l5(qY*M_A9eXi#XxHe1y5trr97|(dL=oRa-{BP9UE)4WMLG^xwxf0Gd4LkIWg{9 zdqabj^5(@d5f_TnjY^JrSF(y>M~QIPC}P={TW=$6eVeuk9Ol~nRD5-1)eVq#)>l?p z?7QL8^-Z5t^^b5QuFAv8kA16k1lP6-&{`$tG05;C(J+@$20+ZvlOl7-xA01S4t4Kz znvU<NsG+{S{gnMyMy=Y{=x+#$IUYs(PC?v(ML~k#km#70=yYuFRa8&n+T3g}?VHps zHC-4SEU>Kpwk)l@-gn#Goy%%^=JvH{(*AQC^&5X<jq3b-wbWOcpU+_Yh^Ufv&mh*Z zre$Tx5Uitua0y+<3$-ar58fqg6jmAt#61CgPJ%IH38I)$Q6rGLs`6k@HI_NbCDJci zPo1MD)B&9){qct%@2ojamA^|GyL{i==+xBc6SBe4bCYXX>s|}1gh*4y(I!r2_r!8W z@pfNx#_wG@$>ziBdFS?%=yL9HB}rD2#=E5+!0eGBn@G*gaNKUK2gGK#)<bQsrY_|Z zou`EpNxd$S?_3o6gj4eNoAU4{e=g0)(U?C~)^#}#m4WDe?Z_gItF=R(dfK6AhMToP z4F0ZLPLwX~0wp4s_^+Ezq1Lazgzh;V&KU*w%)NnTgVp*f6eLR=4yshSi-JT_z#`<m z!UuKs@v|$f7DO;3^><IzYEw0}erDI~(~}c+;lQ4gwOwziP1I@=bd6rK){yUMqt7X% zQ-a^^BJ-$m<RT_3;s?dd&NOXS8Togmb`EO#sg;$f^>rd1>ldb8U#Z07mCEa<TK7FD z()mG2^5RGPts=;mjPZmUg&3plSm_k$VCdfXLXnBu?dk2(&7*Y_<^k*JlNiK!cXuDC ztXJM2V}ps#Tu5e;$kZq<L#T%IO&JjtmONb<&vk^p_K}K;p5l#Kg#hp+0}8(vFI|Sm zpxP+D@5G7s6&t`d*VL-UxypFx;fP^!VLUV6aK2n;b9TpbFM8QCHaDA<R~eCVoU4wV z6Hhz6j4|?~DFU>PBidE(JiTa9?|i>{ay#`Wk{UPa8ndd!hV3VRRbPo~z)BbKA4hk& zfN$UiXJ3*sCO)+c8Lxvzf`Wphnox_*dXZ?ZpkqW$CD6-sa0jC@GN9(+#=>WB<e`m& zfSM9O?T!5N+(M?VY30+|=SFr%C*rqnyW!q@Z#XbJ`>}oSs~tYPZKAQ|08Rnf(4q(u z*R;94LxSg!ZLI01P@Ba#<Ec0O0Iq_$$L1jer`H_d+B0sGtEF#u+Z%;lAD5f{Byve` z8~!h+0<757Q4rEDDWf3j9XYl_iLI-~zTtGC@QWvF&y=5eru?s_!ii$#@Kmr;a6Wsg zu($A`Y~_RHr=Ko=YAU~@P!3HUEQ{*Ik$Ypsr;+l4KX83@V7z@$tO#6<vEL(rz<YN! z!9{&Q_irkh6u$*s3w3nw&UziZAuzjw^9#%Kv2VoGrViiiy;!gJ_p8*VuHWpt;F7gG z_yO|zL&l(7YlW^)QP9ydsL)o)G5PVe7V6o0L)Tj9D*2>TYV$-p%XM)9cj;@|;F)u( zF*}G|X?`?SC=#|Wq&{Mj)ZfrA%wN2Zj|PjD|JDQ>6So9?u)F9N!QidE{&Q<!q^19; z;6eWlQPi0b4R)iQo20ntq$i_3^t#&H+@ct*ZO{PE?MwMff4llrw>-u#4DLyVCm;)T zen;+~@kS%K$L;@d$BlU^<Xq!}f4Re#{Hc9&F<*RJ;^j`{P&#)aoZ2%O?2Qqz8QiKI z!c~6pD{?ag*j&WPqzFIWuL_`2yDCuE$R?+2Y#-Vhj(6{h=#nBXy&^8B^f%a!>iH9W z<&;yR-HVOk#&D}Cv2>~Jkxpfj$xNKuUyM2Jw$^I0*3x?XKH|vhjYN5U=Cfx;tEHEW zQgzft30}DHEf*(9xNo5S?aF8g+~{cK+wIP`wBq*m)zyo=7t-`JNmpNW^E5;Us~B~| z)mfi#-Weyr<Vi_EaIcA!GQ6!pkk!zM40%Jok%mbzgk?AiX^BnPP|E9W!iI{A%LjdG zC>RVK<|!0BY6L?;tZfNZ`2DT|Tiq0*5KXQtT;duns#)l+0f}m>vWE}#;gc3)N5Zax z6-70=8Yp_`zC+5ziM|d*Xa{8Iza3F-_SaV(XKVv0df%Z#_i2#m6YN&zFX%Y5lgP!( z*rcK(^c%Y!2YNuGkdKGqqNRE!{#(y7E1(1Cw<JB#Ai5l>SjZwWMPz%-{UpQp$NKXH z5t*W@Xs-d`EO?p{b2;(YGJ|0-OlQ}Z&ldWl`=`nISaDyfSFP@zYL<(YnFHI89qoLE zhwZDoXNL3^1cjV+4fz@-W-O>)vV?$CQ5sM){)h+<*+DXhwHWWd?1}PBCXt9lSWxmA z0-l1?O(i4o2p~}c+hG-Q{cLV11z<5{-0>%O|GQ4M?>W_TjfeOZ7aQIzz{aiL&=Dc+ zQ<k;%uhr+&hqaEJ5gl0yU`c-IGSEC!VafMoO~x~`X>G^LW>W4w9?!%{DL~YvHkO)= zDWTJr-uB$v_<QQ9SH0?~SABUkenEX$Z|QXIe)8_SpM36t#p3QqrHR}%|H}NQC!-Wq zW%6&D!>)r8&LEavraTsisVPai6TVn<r)!ewnj)!7l-#Rl?EHq0ueN!Lu4^~PXJ0bz z`F4BY%Iq|?FJx_XmFtsn=K3LJ_2TNpmZedo4kcB0Jf~qDA&ST{M*bwZX2NFJ%{5bo zmLvrMS!q9Hzv{o9tWNxp_#HD4OUX6&ypfx{kY8aTXl!^Quku2Qb+pM7>0YnV!!5Zr z0kJj^q*4>G#@z_Y%VV5p4hRSajRqJ6rmS2t{CXv)di6dYYRFu@%PZ6bY&UIe*XsaK z_q|L_zz3uzAdQFKRYmXeF;mbdS!@l5S`%peS3-C!%WAI%K_}V^3CNx(VFVlZiTm$A zp{o6PICYE*o%IV&|5WIU;b{)(>T|{=eOwn`>oA~x+%fgR^kL-tSLSaB2~$P>GD8OI zdE|&%9;#N#WJi(<shooA4Z@p`t$;G<`hIX<Dg$G<R3rgl2v-$XtECHxn<>O1mrp2< zlAd#I@dSzAvP{|HZIjN4d^P$^`_J?F*5E`XbI1KBP6STp$zN&b`!BVRMaN^W**iZ{ zEr092cISueR11y=lXrad!dmcj{&!+_dmFdUoZ|E%d!$YC2Gs!bR8aC7PAVC|-}>WP zq1&<)-IgZaAzrpCtvu(PIN?k#Elpn4+@FrU=Dn|pjYp52I~LXR<+6$+mu;hL+~V8} zUK1Y>x}F8Yh&Xx4T=0^IgD$P4SUV+0Y(xzqQ&TDoGl{T`E!);voAyyAy=4=;^_TtS zBw?(ao3`0i_RvywmW^Fc3B7?ZWJ#vYSM|JZrPGUznZ?%8;noA*Kq@?bK)D{zi;W$t zYpZ)ct(^GEg@#J*MIyR#=n{H}q*4V9(DA6(4s+adp7<YP&#Op~WVpHvaRv#m?7G*s z$$y6+*2ZdtwNpaNOfsC6nUZQEkwq!EeEAOvDAOh#it<jaY{-=tSihdbx3t-Qzs?1o zN@r5o?*@T^y3Qs7C9PNA#(;9Rr`A*3<>5c>yL;chyH(_4Qx82fB@YMX{XTtPMjV&z z1)~O|?Jm)2w@uaxaQ}#0V1R(Vv`*9dET5E~6E+gB&KwixmhIg?+g?~om(m%+m_x$U z3%@o!BIV`;7vCVci57>k7r+^5zCAE5MMWsWPEg;IAiNJa1Wp<v{Gad;t@WFS4)FlJ z^r6F+mF>OHTGruTiBR<U+o@P2s9yKF%#a#M`J$a~r^BnOk(3&VzJUhLn&#odrkUmC zp+oX@Ihx6r5B*9c{gRRH57-g)^oRO7{|@UtzP1);Drgy_+aO6B;KLXn>`RlbBn==K zM3$4&ta(iOBZ5j7$F0}c&t1ctifOq~s(RzD1Yt)DXwVA}76y|=@HRUm2q_-sXVu?d zcPj_3yWK-qHHW(EsvG#{Yi{q*RX4Baxa<F+o{e$RAaDET;|FV)C+5l?XZ!d7wrDJB zLFQyGBkUQI9&yAnfYmvCV7P|OBl5h#ZaFu*v^aZm?qni6I9l?9+avHKWnZGOBuUXE zP?z%ywz%zZe&E5QeiR=-JtP!qX;dWJlG@7Ju_u0Qsk!7P)GvTGfSn1RkR9rhKit5# z3PPX|ji)KA=V>*@Q^Di4Or@GGo=BL9QW)O(WYZ=sSjGNJx?0KP4~4y)C>qVAve*TC zW8nHod{>EMKLAq}A82QVl@In^Pq-4pT|2OH%i@+>mn&7RTX`dRogvT-`mE30x@GZ} zouoU!VMm>MSU~fE0TbdOD;T9h!Lo==#>$4jIA!d0aANzc^Vk{~7~s|jR^aTQF*iXY zk4o8ZsZzN)jb{U7LP0=DX5g;|m<PWhgrz(y$8p4O=v;d4Mc^iDjxyMA>5{`WY|hQ^ zMQX(cc-VPkC}G+W`~D>EOo{ZLf@OfQYI=#|K{M>bFCFI*G2}T-dbJgaScm1=iX2TT z$j$avk&F_;MNAo0t>9N6Al~eub{%-sx{vvUvDK4E3rePzS&-l)a~U_DhEL`om!y=_ zLaLpsO9u6nS|uf}vx*b&VrMPhU+Mc)!bv<<>94L=FI>9xV*DjT`v+e#E?-_Fm73iD z&czjO-IY<U&f+mfU<>?=lO1o`jL`j~C5kTz<uax8Y!7OT5RlEF|9NchD$WC!Op;7< zEJPH1AqbQJ15%8F2$KKmyBU60A9_t&zJy*2&hRJx7FMCOlN1g)y0UeCa-xv;j`)Uk ztI(}d$AhT7AZ`Rtqo0ItP^2T^9Qo7uo%uHO5m|y6dKZdD2zSyf#5$UrSGXN_!fe)t zyLtu$kAQTVYIUvicaO$AF)w%=zc&gWJ95(JFZ#W{Y$yuHRxYGqi}Dhi4;?5_)qusv z{LSAC*c9u^+x1X0dK?wra~E|D6yKs|hIJPM*mHSp%_#!bA%ae|18AkeCo+4`_u+Kx z_mlalpc?f)Xiw*UiG~7{Y5T1|3i?#sm$!?7+l9N}IQ8uLp|U-}FWN`u1Cr(K=o=H7 zHT}I#w3xuWnx1Hci0ny<si>czC&?p0q2zqzO>AIQhyv1Ovd9`P)}~vu5j+0MHvn1Q z_sU-ZeY|xslNuV#)a#Ai_>81zvu^R7sM&1_srP~p)cYll=*luFw4gt<+fqfM(N!+g z+qq8v7k|ShJozT@e}Pb(N_VzdKTs?r;fIUHCgv)hnq-SaU?W6j@&B7=qR|y!JR9>> zOz%>#lqjT3&&Q(CXZFt9!O|y5IT0j=Ps^A!wT_0=HkOSQ<E-&Dr;tw|jSt^=VE=9+ zPq!XrdN0qy9^|F@1opCnL5<83T5!M50_{Rw77}SFy%+GFLvz9lK=iR23zqCq!!6Gy z%bCX@4Q1z52hfGxeySs!a`KhR*)zACICOB|o?Xt;mP)%a-D+-chd`v#ZXz6Jsk=dA z!tGDQ4nD`UkZ$L)U_@Cjb<QR8L-G;YHIxMx7cLog?VJ=Kq;@TJb|m*MC+n;5*RiU$ zXVjYmJ3F17f$8Z?Tv_3_hkYuR+8OoUlXD8Mf*BVh-wS=|{|&3x(R+{G!Z>H_3#aZh zC@|I-@@3^|Hj<j1O-64xTy2~QQSy&WXVo9ReYpRBjna3|49#4)Fx7m<Z_$@S7B%Ii z)XiJpy3Zt3#JI;a-tO@aB1U-V_TeS^Fo(?A4ol);<Ff~!Ye`3eKF2h~J++F-A>DEg zH9TsEqo={xblp}mWn$=CacW3LVn=w2MUEShSVTH%;{Xc1_@_StjBoq)?K`~h@QpX@ zUKTR_1?X)Cr6NVWJ~WunvqC$iCAS(BuN0(VwFgVVY$1tSx<H;}lYRZB9&o{MD{o}g ztD<)D#)-*8aXUsXg*UvdF|;j0UzCGU9}W)NEm#o=CX4+qT)!#!TaQ6rtEQy*?S)TL zg`(LSh}tSpD3^==MfhfQwTfUkm)rFEIn8(5`3w2Z`UPZ=%&C9EZ}~1}lvGtd2!iB| z&g=KgjaBg0!^CHKMn`H@DIQCH_uko@;SB{6po6@2Fdl>Q4I6$Ld{@W{geXL#!H^Pn z0CU6@K*?tW?NIPGS)293Lh(-&W@G=+l_NJDKGaBMA(7pYD24&;;@m~ni;-8Kb}P(^ z8`u_Evp{RxKzhX1&t!88O=gK0hC>TdiZYY-iYox^K9v(xb+dsjExN+md|+{OFkGMA zw{Nx{9voc^%%>*?eEo&_(8yFU9GD&n%@_K80~4Kho{psYhSY6@zs^3MJ8cd1rOw4K ztSVzRFniOk>G9y`^z>+Oe0upX8*(75RdO~|5#~?JTM5l36}W4KlA~J1=x;xM=FH<~ z)T>TKqs5j|w_fb((i`o(Xx!%9GFD->jgGYHZsSrrDo1S9CuuJdauQy30U-!24>1dj zE5Z1SE61<_0N8e~A!lc27iSj}<nq&uIB|ZKX0$Q3KtjJ`f#w>DymE8>R{Z*w*>%%K z%ghC@Zkh7CE^2#1);vS!Ot`qJm_&?p{b*znK@6ri^PihU2J;UjL<BpI1MycWbFWKX zb1gXykP@n8N+NCw$e*ZO0=QDobyn4SyyK9l*m+J(sVU;%Q=LoLuJJeums|>`x$1hb zUExv2XV3$B;SI%h)y@f?dX?ONG_}594mU0UM0D@mD5#syD|60`1*Y)9P8wT`yT#(a z`&D<{xq8Rh+s~Z7?bNMq-8FZX9K7*{1N(*1aCw*1_}I3zb#bmRag`Z{GK&=k+i=$i z+cKZXwVFN(HkUoD97v@Jk0#U*wMl9;PY=K&D6g9CugyEDtHUI0&onXAuKm|(^O8D$ z)jyR~4^~?6UYo_{7f)=w`YS**>d}$G^5W#-aOx>5lpW~3P)B>8y{RwUpWF1G?GNp~ zc1yV5-Kv%<r*A%(%Xv?9pA++Qar;qU=Z_~-9`94N^45XgiwE6L9_tVH<*xqU9pY#& zx0PW)`)%||4mr4AGyCn^)Z|+vW1~Iemcb(-p+!1^n_a6*kreXT%#=8}P${k=|7kTz zw79MtkYOpeF|TcC_x;rkjjMq4p_gmv?|7a{9?<vnBk%62d(J%SdFr~x{DtIGp3Xn? z+In-J$m{F-CHJ03lN5(%{&a0V!B*cPp8BJEc5k6Jjam-aL4lORxgnXVfG2U0U<*RJ z!=fOu*G&X@wd&d1Pu+Sm2?E=fs&~}xNR^<4#C0>E6@P)>OMx0e>ANKayPN_!z0_*z zcUYk3U9$k2KrhK<FB%Y3-HdM3A>p9oC8kA#*<cS?Ds-|@-w}<+qdV%2D=+`GUQ-X{ zQWiR6B1IKP^pQ+HQMN;wTpC|buAiFf0UQ7zVkl8#N21BJ@)T<2xSeM`3|1*Es4iY} zRQCi`z4U$}g<WM)t+nOB;a%{W<z&e;tFjj8;)7DTltbH*ItLo|m_v!IsS+`O44ZB2 zB;5LYo#j1?11W%@EHWOG7%K<CP%|(9Jwi6AUM;RRV(mO#iM8+8)@<~ZLK+*`1)2z{ zpR3of;O<a9#<^}PxBWBXk!WYK3&gagnMG_|)ykJ|e+;*C@{yZPKSo`+x2qww>HaMW zb*p%~*OG(DP^OT)sv!ev{ju9g`Sjhmx^~*<Pu~3c9|D}c(mSI8_~KQ3qs4sVG*|`2 za;)26x;_QBXjJiAui}NYzC<Vs?kv$IrWY<f`e=21T{&xOJjvuVR`DNJ(R{j?ObNFw z<kWZyILiA~HS_GVnP>EVSB{691a7Q_+%$V~l<K3(k*76gI>&SOljET>ch9?U>6vFZ zk~;kU_jBB9_d`3?$K!DNbn37^ImZ&`sC&G$@LMD!q`|$6P|0TzDhmX|v7p7NNaAW@ z7Ei;%{MStL7Su5FR&3H6<2PDw=k*a5(iPtCR{ef|=P!1XXWMIsGBLKgQ$^X9vvBhJ z^{OkgQ(}Gi5^AFfve_4;;<3xhgmbGlgVmDDo_)Dv-*wFeTz4+Qi*hbpYn+Qu<y^9C zL6lai)#Y5cM{5JK?OL;;hnseve#f$QcmBffSN*%W6MaXf|1L}4W7u+U89{SR`$h3? zy<Gdj4@502YZ4}GJTq>EX6=kkf9;w>Qf~QWPQ1~6?l{7U0){{&H{(e6_^R%HJ!g$Y z<0ZA<c%$(#gL)2+s$l3nKlheHdzQA^Hl@#S6)ocr#ItYtLOv^WA0cHlW*8sfWw8zB zGu#qBljIbVDq+Q;fEu7+Pr$}oBUBT*kRDmaFikx3p~v6(_P0Io+KFa*JX@Y<B_i;j z&$VTY$gh|t^2;PgL~090&t-8z%CCIfeG<l^1tKk!R;4(YxU59W#`@G%2xK924<(kS z{K{wY+xuKfTg$oXvRij2&T{o`KS+7(SSS&Jm?BrCG-8-odMaMZQg=HiG==zNqJemk zC`Z5_Df&U?Qkc#P4P<ovw`4<-iM)9ANQANoBSce4sEo6*7;OCTAZOA=NV;Jcj-Rx> z8Kfi{oYxohz-jEqM~1%_1S6GFDP(Css;o$quTiDdPNa*uI?R$VwFdnDXegg3<r2wo z%%a8dCgIw!t$Z++F+o;m1HMq=oLHSE!I(%SoJeM3S%1W~1A$mHSIAWp`9$0%P0aEK z<5honF-S(PxXxk6r;?i|8i&H05+Zz`lq80)vB>1uZ@kI)xbb@Dfqg1$J@yV*wtw-% zPd$0iXNShIoiGb5U)X0sz#W3JICRxW3HVGZ=n=jO`NF5kv6Z0`l%ayJHF(5;f}f!h zRQo^r%)1_6d;9Az+_hTErY9TY6D_H^NI&cD{IO$2{B?RLvFnu~rI+3Am~sz8a^l8# z`0?YVH(H>f*cdJ`mCjgKjjF%w^Mt}7N*-M`T+s2ddAPV3E>@O|9q0xq?wg=616Gue zP7ip)@kEA%Dce_QN`PEycEQi)v*?p(B9khlGSL`0MInd~(r{%*BKdt@=t8N=$Ift? zM?+DLgxdpy*pi~Sc$3yF0Lc)R%797s<?3Z<HrxRd&Zi2wM7+-*5NM4Tw6ot12N>ik z>r3zzj~%|xCm}Bm9R`q)$c9q^oQMqeSUQt0r3x@_!h!0KP5Pn>+yR#iAtr+gzokmY zEz}N{TgJZF)P|#2+IY3u-~Be{5zwX>qhb8o(9xwsDNi5)XP*(zDJDhY6!7hAEaQoo zz_$s`G5&P<CfI0`;se6n-ABT)IJ}LnySuN_hsXPRhc`T-8u`g3*dT!O$<aBXWXQBL zItdq_y?F8A3C;*LC`LJvJt#sQM;R+Tc3u?h>q>k*z7S_q{4#HGcwc^Qji0Kdv&Cig zbh!%Md+phdf=PeL<zLt?&=9W$C{*AVXXC(}gwF9SLluAaSrS<3O&D7#yF=y#k$e5Z zCzSL)vdvxh6E&7L9fZP*`Y2wHeeNebjDrZ5Bbb0q<vOlC1Q3jKuW%{kyNyb#yO!?e zJh7LtdJ{>v@;1i1;8-ML+IyCe=?cwyOZ*g%!XGN?k8aHPrAyVdwN3WU06w3Gj4v4L z&L>Lfk)Qm;$A0mnANlap7eDaS`>757?sq-$_+#(bw^#gO+qN!l0m9p!nScl{H*9-8 z{`Lo6vwsiM;a~qxpMUn(Kl^K+`Sic~m0$kU+M{p%xkuje<~O|VwfCO8=WelS#iW&J zz<?Si&<lkDL)fN_MVE6JO_#tDLJGa4TLuM<fI27-y?*7U8xACzlXnghSsRjqsN~8E zv*~v4EdEkVg6Vl;YOG+?Mdc%Mbumz7Dbi292OThwH&hWH629$*WJ73sKtJ~$#6D>9 zX2PuJIJSQM@(*0eHRss$R(;BU{su7RsO8Fk@)2d<dxJmDbNs>)@rI^-EJq%qX{jK5 zMX@+SE9@ao5w&AhI;cADyl}+p$@+5S`*>A4kO{^Up+q<fb-x+(kbDD8Ka_=kvV4a> zk_p88=}asV%|*!;h=nsy#MuR35irv2b~eDSIk;vbnHWciBWKb9JLk)rzpie$*H(|5 z#M2_zXx?z%&%3CVK5{{YK!n>-8~)-*L?|slA0z__=84w>l`xlY9=T9ZcHH*I&44F@ z0hEx-<5JS><n!cxIpoyu+qW+(Z;A3op<Eynm8(mnqLEl4?~nTnLH`}gWJXhVF#uIN zTSKJ$a-ASNVt&d-Y}n!n^uni&k2oKS6Xkf{d*1!??|S^PcfRA%x4-SJkG$!PZ+Ped z3f5Dt{@#0Vo!oKe^d!R)PM?;?`}7AdKK1@5Z@=x<lQ$EBIwJlPai56yM9g@~=?&B< zrbh)(p>py~3hE8W0_Kx>pIA#^mB<Pf$-5~VSQ&45cxF144EnoS`7ZKpTANPdq@12l z%`j*%)nER>%FHkl@t^1rmVWL%xFN0FLYmL!Sq1em7>?H*tNXzKgRl3^t6#mqFblkC z<>VvhZ$j)7r=~k>x;@1rC^evZjT|8M8wz-(xycSU8C%(~jFF&pBWs;>&c`wll@7{i z@H6ljq|_ah;gAXtTl9FzvN6pN<D%#**o-@9#pq>5Vk8FWF$QS*WZZw#`A1H!yeXhM z4|1s9a7@dHAq|Vpw`H80;3_e#eR+hlPewe76eA)TjYK>FGwx@wsb3(69(-HMmnLTI zQ;9$_6qTz<p><JXQRYr4t%3!HSDs@>8E#xmG!w{$tO5=<$!EHPzZXo}IBc1_sqA&q zc&GDdIZndBOtlnbjXypZ_E_E%lLIJ+_L0MTc5a^^8)-GrDt!PySRZ|2WQ+EBj&vRb z{yBWyemm$F+#g&8CW4HBMUcva0RrgC4+j-?3yPOtXf}@>mC?9m_m<t{+$A8gjfbzm z@O=;#(79Q(W|3ku*)~q^8NCfuc}_m#nPDNSI<K38AYhZ|*`j_6tpOkDo!FrZVgJC6 zOeNi4Znl@{#tQ00Ev23~ICu77GQ6vvERT66hif<ZgL_Z)TW5BrzMw|8j@gy^U~<b* ziNZvK$?0z`S$h`Jp{-pg{K?~sGvo0{<U_3nb)3AD6RKq`4d0YbY<o*Ozi`0nzj2wv zHHRm?`(mSrjNNm^0lN~7J-JmiYWZAapncdoRt#%{^Gd%QHSTcE6bP$Mw90+COxU(O z(<6zX*R)q|I&>oyu4esy(qF|{2Ym)A{duC+Ani~@&jZ4-&jTO=r>C3TpvA%F`PG3+ zvXaR6QF&ogHAEk|Qp~hjnQHQ~(M(IVV`;@EtB9@vD-A3F6`S@X=D=&qW}3?P=or2t zuewwa>TqRiD7~;p!48|QWGESus(CAjbu(;QyTZwXXI0?T-k?8|+IdFRDg9=TZ8dFk zb~+i1GKV~4<>Y)V+-=<N9#{?+$Gm(M@fshW@gt-sCcPCH>C`RT66u?URk$e!i|z9= zb7IkoJy0|QX0DOT*Ba`;LO#9YM&Xc0j$#n6sWrTF<HUD#4ko@K?W2^WCk>jyHAnap zO;zxW-PF99>B)&^qgEvmn^FWr>9Uop?FfiX=%OvNs)iZajX9!tYvu#BgOcH%q*+j% zHBa0ZA*5xQ=DBD(dam;~kZ29{-P$*l@PDjTHt#e4vy_}iFU5NnrdnMrlF9Zb-jbl$ zqSRgN{MXjGz13W<vhQF$aYrGU)V5LYUWO#YrA&sbdnY)&xC1evq^L?4p*&dER}Yue z%Ur$rO4ob-C%ML7lj{<{@nzb0UF+bE@n++%oYaFC=4Sg!R@C>}druud>WkPC%9jx5 zVb(EEDCAuw)DesZiRMS`VAMWmP{zlOoQr`q2}UdmIa`)g`4rfZPWMGYB9sQ~T&i0I zZw@Dbs|P`65dY+O9&hNr?g69s{fmxx%4sa`O2l9D>O0Tga^lAQ`*!bo^YWXvEly1g zHwLP?G;Gj21-+aEz3h@|&h~<ux&|caY7%*-8j?^6f?R@GaKNIT<S4)nkOWY($QDUu z%!q$yCau4bo35DRgQ(-l(vAha)g}b4s~QSgZjQwjndny5p4Ej<{yZ3s2JaT!y0=O( z6<+`sg)dAX)dVA#qWq6p#Zt4vcgucAgB8F39N8Y&{#Dd-z)cw#0|V4y0q$hMM$7my zRh1Ivp^S1<3kGx*m75vBu}CAMJ|9e|P~hQ8%<q3VtrEe{t4t#j<5R*(`AjS2`Mh}1 ztcNL0X@^2sY(Dico&hiWjiey4kPhvR6%Rb?#J(mc;<!gWYI(3;Dtf&;(L22G-QcNU zY=i6&!wg18!H$47F@<~9AbLDd!D+G8x5xz7WIRa#HQn|{6zcY;H7#IwN*BM9=A3i4 zxNRwM9ygEl;_AcFJa<Kf55G(S39*e8<k=XmKwCh(*fg1CmL+dBdYA00oYmDhckK;^ zA;bK<?9cZC532y~l$v@t!0z%jZo7qRhCM|Laqs+m2U!%rR%QMMaZNiBmeZYlhS!eF zU@3_txm%J_YIyc0Q}r4M&Xg@h3KvEhKz7?+s6Tf1u9PPs4-@6p_42CP_GIeRlc`Uv zUtZ_C;@5P~Lw=T%;e8LkY@A14+?fO_$06lFd{@4{roVVaRt~^|?-+MGch1$!fW56Q zMTVChR+3#n$0WdwhDc{94`i&KS6dYKA-6C9jveY((+nKpDPSHaWE(Ic0^7NL%lypL z<itp;S|%9;6$+L;+Za$%oJ`UQ%|vF@6x+qFPbgevqvl*ffcTmvY`ZDj;B82>*|4x( zupLZ`gnX*{#<o}?Uw*zkVWq8!@?yppvbK!v&m@a#au6aQRa~6^ws&P{vOK?3P;0{t z<?a0U#K=&oG&F)n5>Sm{Xv2QB6QK@PrK~#tH29yQ5d2kC=O0H0r4@Cb>GdOtzQlMP z1ovo2o&&efI&vQ_2KDLyr7U%rLBAl-AZTB6e;VeF`T$CHF*TGP!W$#meee;$D3Y4V zC9b{Ms~RFPfA><s+_<N|ymF%~E^C#}r>@+=mAg`RR=8#+2!r5P7-wae6r=|6Dd!{s z)0wFWs`u^!@nxC#o*_l_hD?aNVOW4o)hCq`B@2NkOEV){YX3Oiw!O>L$DJQ<kGIE$ zhX#tdB;5xy3e*X1_X*Ps)2m+zg(@#}wk`;s9Cj%fUXga}g2g$L%Ip-@u2h2EBp;TJ z%p?TtGq2teO{JnADER$_56G)$;=y2iARhQYJYZi;9LWU&IVTR_FBXVf$%{<4wPdvO zooE`>H%0l%aujq_=U3I79gBCqV~3P;chs_?cXz&}%JIjl)yHCX=j$Qpzq<V?ZDSF2 z#u~zoCx%IkE+E~?66(1hV;)mWqDJm3`cu#c=6=6DN;TGkknBe6N&jS$AdM2A&ZH9j z>W^p#KFBS&Gz1IOJ!$2rAG>nR?OIYS$I3z-R*Jph4KeGEYi}>;>pV}l++YQsu2!Gc zm=)vyW$sPj<GQc=-uu6I_Vvy_gBc9&%mA1HK&*p}6qg~mN)$y%q$EO=C}^W;YNO;u zn`I+*Y<ZDwT6Pleq3xtEiL=m+x1@1`)T!g7S@@FHb^6ImSU2r^&1N=9`<mAle&6%I zGr)k0OvU}YJdiVYmOJ<U*YiLBbAIP{Ch*}b8UcwuHXNhhfb*X{x!BG_KskveMe7WE zmZHiOV)*tlip7=itsvkU!ncA!A^8t__f??G%aC@?GAjKQJi5J3FL4T)Ql`zDXh(zT zPzt0=zzQUYO{GsI>F#uQ!Y(3IbyTnrWD5LXRqe82`L~5Rpe0YMa17YWAv%~B7ahlT z=?Bg(Uc9)tc6oIb1|O}jx%INZ%_MZpry!;@Et{+cvbB&MyJSJak1l)neX=AZFv5Yz z343Ml+~#MiWa@4)Yjr3cD>ZI@K^JKiC<0}fSY18uI4g_mbLKqbBFn6)f<}C(wak5k ztdA#{w}2Jx7^Xra0>TA2K{R1Smr^Q0YbQcWNf>lU@yH>ppt~oNV6E2IR~xH|m8k6| z@2ir>-sy!SAl($606VQo`YK?0iF!fY(Vj>E-uat)9%bBy6w&}8qy(IDc4BRL!kOrO zD3+XXF0CXUz>Oq)Iu32>II0b?D4Pz!eP!Dwl6&o+Ub=L70=S1g;f@&tTj>fdBoTsD z&}UzCt%uv93T|y*aG8%|MmTl?<7tu{;KbOfC5$Tg1qf4Oje{dVETzm2>-L1K$AnDY z)c!G6_}BdFrPgGv=Aubz!!;CS+NiI{D$xN%OXwg*<_+EpFvTfa%%V{&j+3rsm1f&$ z!b}q?A1#t5oJDmWq;OZeElaa8EZ0^qUzTI5<v8so<3%!ArgcPq(yqFl62kr~tcFt( zs^#-zVGVEy!2EzXVXNB#P7-}D1JmWaViYhi1v{*NWJpSs8~xQ%3pwcV1QG#3LTTHw z)ZYd90I#VG@T3G0u9-@K^jw5~;j%j0nh;wuZ%GIw@AZp`mQ-hB9TR@o;Z~ixNh(Hh zt+hemY$06IL%vY^^bmz%P41Tx_<2n(yr?Exm-P)-)-GP=x~}8dX}6VR=^bIkaZz+f zQQRL=Tin)rT{dOX27%CWU%`x$q#?RoQg$R3vzMz#TTIgu%UxkeN$NGz!B>Mmlunp| z43vV=K=2;Y=H*oclk`2kJ!Y(2G_lIWLDhBO+E63<y+9z(xOY+*BivgBqv6x~UJ*NX z`hV%omRg7Lg&=(%#KL>>UX5AO);9L)SUC3YT@bXAwi(Y(YuF6DM1W@cYa$3@fm|@# zHL`2&$gUHPxv`vdxG!Wpv%(-G>cVF;)9h87kC{35eJ0mFqBC}%xBj_v>Efyu%9lha zU&i0S|4R;{y7O3+7aLFO@08PO3BNIm)2jSdA=cN<yOYUY<u_;BkCpbtI`19(+_H{O zW?soy>GssP(aBBYiPocOG}lzpNG%xz?W2AtJxhtO=@ow#PCWt^f)QL$aIUbM)Kg84 zow!#aG`~JDDTjevM2gEbm(hA>d%<>F7!pAp1?%64hHZAguJbL7Yt&jd+qa3znpl*l z^~1!)i&`yNZ<=qfT%0&NvBE$1c^Mh(>SnHNkyhw4e!eY%;lRNPcrwcB!3tuWX3a4n zc(Xk)!>W5otcc%4GT0<k(6WMuIe=I;NU4aF*(yKwp7{s-cBwV$y13F%NVY*-w3Qpl z(Q$082c)DJp{((B1dqFHk<JA<ELnVIfszMA7>mnmE6cdE78x73V0fW$bJ_CFah$bt z$Xx@W>o~2e+aqUu)Rh<D_jM$(h+ER=Qcs+BQ9N2`0BC95<a0O$5m=fqS^q?wPdE0P zrPh$tUS@E&qsbHZbX6TmX(eoXWHM1HXdZF~if}B6BTrrlpPf_}H=Xv}QRhV&7E(jx znt`6Sf}U1vOT{DD^WWWi=Xlj*ZIviG$zHC(!Z31}NwSzLU&ufhhJbX3q9=@4O2zG1 z9M2^?Zfw{m5W1we315YMSX{jIR$Pil7l}E!^~kM&i*G)-541gK$@%8Qa6_xEG6{s( zu&9deEZ9t{D|On5WRV~()=-mOvV?HC_=PwszU;l=&Z|sytR5Q_2F;9*T{y951fU}z z(&<>V8tushjt4S5x5jqTcYaV`{^O?CpA7P}T}%YXkU!ktZ0>Jv-8M9|ZRnpQKGaf9 zB6cB`N=Gk5lUj=@|NezIh%g9Q!PRB32?l)^{Goq7wSQ`A|7mFWhUQNu5)ZZ*PBiC6 zdkgb{<b!&=g^?86T%y<zAtAtPQ3=8J2WWRlXj$%YxRAD+29HRC)4b$4#)7>$CcD31 z88g$96Qf&(8vXTtppQDAEfLxqO=`FKaa{5-*~1c}z22m`PK37jDX(n5Yq#4=x@~?l z@uF^>dCdoLb^Cl%H^n1~gr!?!yH28@$DX0}7}55`S3JhPo;~c;WZnvd7<?ep(XL2n zC*d(cQTkABnO>Vyk+9b{)dA6CD}4hAk~s0OL8}8q*Srm+ORILjPWio(^gScU2<%_j ztY!p3<DDDG-9@hIG>}94PdYCS+H3#W>rY+2oCuSE*75{;D?}}+MtJR_Gr_qrHd|t9 zk)v`}CdyTEyr=#=;_=&If9#cq`Ytd(`D@oRZVVc;ttK`>0GMdGl9i93f4bY_6%IB; z#SspM-rxc=N#rVZG3ODZ+Nnb4c%5pvRrqUN{^QpyyjyIkXe_PDR~8xD&bl8)@+aht zpZQV_E1yK#ONiQb{3^l{M7kTF&wszc<_)PvlpdQA_G+SaDlk(^(Xbiv`9g=~81fP9 z><jrs8SnbJ|Iyd>Yfb)S7|DDRAa5E%B3BA>-=L_2F$_@|0WipR#LrWvMmRn1;E=GF z&ni}V<xE6dpHl?veQZvxtlF2(E}y-G>|b4-6Q1pkpF=o($b}=-g^ChTi6TNv?C<xp z#iN1594`@fV$Ali$-^c{)#_cRdLO<1nM*AKrCdk`%C{!I4*)-w^3LSi#bzgXcBNg~ zb7#+9TA`G*td!Ak7)#4WuhBBd0}0X`4bwEzOoDMd89{3S)q|ZiMaJj_#Kj*Zx(teG zd|;&Nc$6E;wtzv$wh`AUIne~UhU7ZRX!ISJo|0UJl|+B0lB|r%JklBTauNiL6JL^` zVcG(2niV7&p&a7d_c51h7{2@@DvVnriuf9Q50g1TvZ>%JuOm~XFIvY-!o~sQg)?|? zX6k#Ne(K4^5y#}FNHRi-rcjoGCfwJavRb@->mX)5GZ^*_B^X~S)TqyGec+zfuDfwD z5*3Y=Z!2-G$}>174a1aaw@cO7(`un9un?27)MG9%o@GVGBnXJXJSiN19<a9npRwbz zsaTYs<N0H@^*bmI{kC7z;=FpTo_e*?FTZLzpEiD9#gS=bq|n4=UV74iGg`8w3Q}|~ zH<!D`6Y|U_$6rjm*(1ldGGe;sWdPolyyRQw_lgenAWOtBZQ%8!cAHZ%yL2!Jkqn+$ zl7(nA>RirjOUDkkiRw?j%f0ESCYbsmNwIuZ#gi}T5*Xjpj>@&a(5aVc(av1)Q<i$G zUyo<Tp_IhLj=S!dcWG66uE^<I_d{=xopPO@7v7b8aXdNC$Z+%fo_{I%R(Zdv&KumY zw1j4EL29CeUxfjnrU=X~-n32)JA%`_sawAnC79@B`@ZeUeOE^q>ABYBkG^p}xX%5$ z@3Z+1-F+$b%D8qUJf$9DAlvnmWbXu%d+*t3OGYUx9m^9GHSp%hy0GDw?%Y<uTeWtk zZ?}@amUwFO{g14C2okgIK8zZ0Ix|beWv+eXOqxyU?6@@<C?TsLk+&om?_$RhL{o=~ z?cXKfyU`VY-G^4Vhs?`mFy9Vqx$hSlnUdq(rC@^`B=^P0v16V8%IUn~BYxI3-ldI- z2C+ZwEGb&0!E>t?Kz(EJ(If{fTNXHa=Diygs<R@*1Mx^$fNv?Bq=u^x%qH8>ecdHd zgOXhC`G4}n6X&0J;wQRF(yq?)YfsBJ=bupJt}i#WVagb9ZRyyBglZ9NpITrd&<rf< z99;x8Rg(f)8wDb1yq*vMMqp0U1^Mzu!yH>L!XI~i==R@V6RY(KvShEst8G`l;9f_Y z&$VDdT@r?<wqOXcI)|7p@PcAY6Q89P6rxeV9K`{@EJ4vwN40j|w6!ucP^(SWvPrUx zVipDyC=h&+8JN-0zq?YBwezFIO#vXgij@us)W~FcVu6_a%$z+JIdsb(RmUf)k38Th z4c3eCn}$o1Q6H#YyI`qc4(_lMCkAG!MNcIgi^R58C-&``{hPm;jof_mf0)=iVb^CH z>7n^@4^YpX&3>ytSKeYz5A==(Gi6`7wr7HdmNDIFlZFAadV}_W?NGOem=$Rc0noD; zz<o>AfwsfE4$zoTHsJKE5XwAItM5+KatYP}nM_jiUF<k?)oZwdG*5&JyzW%*+q!n) z-;?US%dTbiZ>~r5(MP2kkw2myFTHeinc0J_vIpxS&J6uGN%n^!={#Axi20|pNY?_d zxv&XhOm>;!NDeFTRav^2nWf_B$Y6h^uQ*?tt&vJjScct|xpH-Jeg5nBU$df~lv=F) z<$4w3^K^w$MWRx!(Pzs3Hxsq$)a)P~k)<OB_Dv}BqeJuc%<xu6Ix7n)MPMM`H%jU0 zA7;ZUHWnGPMAYq&F<W5@6Zwsv1!t|t(o4vr?02pju;>Q(T(26iyLWBh<__5YWL5?& zqQx&1ZepkE8nLiBXbj@_AF;jaGvQkfMds`uyZ(U9mSn&VPInL3UkM*N6lTz7r)t$n zyFNdx($WfK)|FQ9H}ZW9*}?L-ZmIsg6Ve_VZDJV>iD_$8;vkr0*A^vRwaG9Lq7K0| zF=hpciO9Q`X6zV5@$q3`FpPnkQ_iJuma{y%J_gzUYY3doTH@IdFxMErz3SWcOM2wW z6b;YS`nGSb)$+0mNQGXR)zy1ta}7kscgF9LFD1oM%w8dk@?2zQ0sf(a=v{hmBfXDC zKnBKQtEclVfS@bBT>6rXVd3_@{usW_FulfL<fgI*bL||x#-wql@s`$e1#sun9y1i2 z2WMw396q>zugBMdbRgsjhE5}|!EdPW=_pb8%tap>vmbRc==Yq6vB3#jA-3RFAfP=x zfn(x%I*49OPR||Nr|xVX8yg)OtX0aBeUpM;#F&be%77*<j(bXs6gfalZp4NwO>s8X zTyzs$pvX+^wA6AGK#zB74)=#&VnPJ}#K*iJtV_I|e4*n$UhEklkU+&!p>X_D>E2!e z3C1i>5{md?UjP!w;-@lwrPP>;_(7;wr#zlgmSn!!tbY(}eP~Mw6rVRz>z}$bP>7(U zXJU3J+}kLFE(0BE*LntL>wVd@qXN#@gPu^R?(;`{DJ<T#$}s6D8kSic3X=XHk}oxD z{j|4?>v3&c>cidxMjTegw8WWusq?f{tr-U_1gB%_)^0F^cfaq?1OaF^&f5dFZh z1=b*8v%+`cf$!wdg#trsQhq68>&AcB(s$eR8w3CNtKJQ?cfR5%V`6*+M5@!QG^1eN zj6PL{?ry;CmD+l&O&uDbt{#yjMpyQvdcEHc_$p1ypU*gfOf1>e@c(ghM}2?{Y=gdJ ztV$$VE)n)^YTpMo`or(IT=mN;sT}r&lg7!`2^rleM?r)KokHBUjA%(naVpGC{E7j6 z<v5m6e7*4tKV#}OkKY>}oA&n~d#+BY>zXp&>W-r_n>vIb*?w8St>yN@&VqgnVPtm3 zOs|~9-sCzbk>;Z7dy}n{Ru9&%!dSqeX~)Av0~slmB5fS9^{O6zadR&!XQQW>Im`*M zxf<FYw98mA-feuy_?Yn-m2ADQxrN{t!pea|gW{VSg?b?7G4H!~>9$)B&DYtkf9Cwh zfAmK_^8WX&yzQ+oJn^UttA0>iJNLkcA^w~__;YmdxsH2w`h=yg!2H2tvEA=`@hy+# z#U1thbI(5W^iyY_d|bQ^Nx&|_K+5u_fXP_?h1nrinB5&ZBH1&yXJ^|)DK^aeP#t}c z>D&v;fw;GX>_Ad~Y5x`x);a@>Ow9G)7_YznPnKGl55Mxt$3FbAb02uuJKz38Z+hdg zqZ8wOL12N9tI0mmeLxZiKbzK+MO&VObPJj`Hp}e?Oe@4-Z^XU>3`K35VLvTryALeI zto>Y(E9uL|Rfh9WyW0=!8W5dzF4?hxlE02%IV3coQljrAo>_-W`PE9rDn_b-M6NgF z?ajmjPB5D3^@Pj0q`wv^nYEhP8|n9_vQF63n~emWU?kh?4VSYC`P!<KdVG%K>#>|v z!dohNeQ5`CjRUDjDVXsllU&?asrZU8@g%&xCG3zDfYcSf?<slhl=H1KhYp=NWSgf; zvB22E*&*l9>0q+*_EIICE&W0umM(k4y{NI(2v?|BB?_9#^@Y8il9at6Cz}e?qP<ek zQlu70=E@;&ITH;orYi*ZRj@G@OTI+1YWBDVsV039Z@CEZiCa>ir`YS$1@-s!`Kd_K z<`<sdq*#Z}%miYk)8@jbi-$_NWM!~#WQ?M}p7GNe|6)7H8^_rpuC!iUgly!HP$=w% zXyf*lX?Ty{B@ro_PGRdjEiTKe1O%|h3bC9T$mL0g0Sa~t9D^I`AHgKBaAW~c^llb? z_`=xnFxyyAuyKKzla<7D$&^ptchAzz2Qik9`M{ges}iFE7o04*u){!(D;DA(bP#rI z>i;2|u9OZ%r9s95PoF;I42@Niif;Kq#?ODz13(S?)0MH2zC(|@1K~$Yhl-WtmLF&U zd{FlwTDowUuE4RFH-=!q+5uYYh;c8|`HiioYDL@dgsg{--^`YATOauP@hxC5UVldu zUN4_#AxLmzh=@?(b&7?2u~Vo71jczW<XhN_B<e8)*az@o><EXL=1Ykg2TtCH1Y|JC zSlF>Wk;`PN^+I*PhTX?a*j=sDHCi{4Cs7gWAnXN>Cl7RdW-2IsP7~z)poZMD=c%JT ziJFxaRQOy~UIP+Gml~|=t?QKh6tzYMf*R`|TNo2>GKYS1;ogOd;DO~mjA1Z7pH<#8 z)M0iK0JRU}shRYJ$_<jS*~db@37Z#<^NZ!IxiwX8e0y=eQBG|&vws=dJ~*~etuBlW zZV$zLV+#u)-e7#HR+Tr>n4kYCUh@jp*Bwd#VpcLzR$~dWwvVaRa=G6Zv*!cN3THMd z&A_}J^YxRYK-QB^AMK@gjvEiK$o)-gtO>5)J4@Cq&$fQTLry)seC&>KUnF#RpBaqY zytk)7LhYb$VXG}zB}Be3ne78x=BDXJ!D1qYPQ?g83<bRrp*1645uFIJ8iau->?Bb^ z-cZB{9cjM|=^hLbB;MM8o$Em9BV=bcdLcZZ4?VcJ`1;cio_Xku%e%68eDV0*cOJP- z;@p4?f>@{zFgjA}xzn#69l}c_5?l1=dbKt)$h^i_Ee~JSpQ%oYOcyR}p68_ZWl+Fp zAv!igDhnG0qlI9C`czIn0}y!C@Hh+MoOHL2UnR()Ggx>DI@px%_gMg6ATdlY+7s?* zxlOF!GJcLV%I>ha))4s@Bx7<rpLE{x$9R#ykk=go0qdk5G`$R;BV$C^mI=F)0W?|G zLx=Gpu?7LHb9BdMy8P=P8)|uU^Qwm96TJ*H$m{7Vmzb)(=s;d<Sb_nTs14*O(Wo9E zd@$Q-4xV+m74Rb9R-MquZh!SgU}PbJhn`4!7HXDnH{euEEE0SwTXy~fA+FD@P@3-< zbH5e-tp?W4#m4uHh96p(MsK+EN$5`0@b`?WGMwKE|MtU;#_u#5Z{#fdLB2g#3YXql z3inc7kzL<gQ!lHxvk-I`=OuexpI|xg9|2t;mw7V5wnEpqrvSjAn8yP4nrd7sxuKwL z`0YkrT~t`6U1O=GKr!Vgx(Le)h-vD}`<HcXlaAwTZ&gQgqhHJM#Q&`=RayHUeT_%s zcUrAy9p}N(>{u>0mVKV%y^iDVYh~^WW;==Qe@p9tgf>UQ%+WZiFiRdjeB~uKCG`^O z5w_<Tx#&c(ml9Hpy%a`g%fNn6D#oH*2WMK!&up5RlU&pOT0&ATU`xsQVY7(iZHE&# zrzSwCNi^`MKOg?0^TqJzzwPlvGT{gebIwH@3>FBlA8vp3&-qZk1IHlyaJRgE{Mb2T zS8IDJ0Y*uApl3u1QCeOD1IIQ%#vjad>?03z=%mdvjBF+xqCW}hX4&2a;(;>C;Gu*Y z#amsG(yjc4^F`+`*9*3?Lb+C2f5wNa8%1JK+VEw}8|00i8LIabqLfFR8Q5AjVLCCl zS?WO5!T9dkNJi2RR9J$%M9SzLI@AopGB?*mviKo%%J3}zw2a{_*Eyj2K7DqyF(n>V zLL5Aho2FCsWIdG@rhj~kP`>)isgcpP1^D%6kL;TPJV^vyI33B5FCkRw=_$bM)YDTE z`ha9Qk`0l;R>c!D`;JKAyXw{ykI~fNKt3CC^QY16sQj$PYz<9v2Ozqr9Ug{YpszR3 z3^vKPl2|9f*MXBF7)6Rwxf!ZQU29Z|DrR_+e+bX@ptg(0w~b5@MNBp5+D(<iflOq+ z$C_$vZP#t>FZLzkp!w}kHj++CWvE(@X%(buX2i}!(qZat#*&OwHWU0QhjH%(5Sk`8 z+%J7O3(0e!<EGvbQDo~i%w_C11~joDaZm@~H_{I3u%YfDI|Qag!gL9>XRjPQ%pvHx z9gZ_`=I+$L51C#u0KN7LEVUY$Og!#mZO#-jgs{fbaqYE$t<;4~QWi;hZlii;#9=cB z;9gQ;&!lE*WRe<~sn-&#t;K;u6PG70TyT`J`-5t^1?=t6+JB!=i!jVOpeQd+{Pn`x zMOO~E?cvw$@$#35HZnVnF~OS6K$387tWYO08)H`X_&|ihUIM_U3#~-Fy`i(aZ~BR! zc&G38o23@S9)UooqJdZ-)}Kf?q11>*{w11;R1P;c$tPw6h~?O;mz^&inpnLEu+LG8 zaK9~5HGJNn^28_G?&B5uSTLbc5F+H=q<c(~x}O$%8~$6yiJv72c>o4CDDpzqBas)@ z9av0Qk@kl|g4z?X0MHuL&UUsav5<;v7NnwPJ;))6p{T1RDlO;2Md$Ja(B+mR#hRG7 z>|DG^Aq|9z^Z!}7h$vxPG=-d@T`v3LB_Le7V066{Oo$i&Na~VJ&}Phc=0%G(3o|Q- zCe(utn-#Wo%*clC3=2I@G9)o<eyrz**$)ZHf=BHKIK!WKzf&4O$7rNE{L(J6P>D!g zIjfwr_v6Y5-*StF*@~D~_Puj|`?qtETW;yTzvKo1>C(<QCT2Fg85mG;-Y!uFtTl%@ z7=lN~cpW8-GAh|1#j)7Fy;!SRD!KhneROU0qjJyi9CZcft0q1t_lwMZj?7)MrmU!C zF6OTDtSOs00ukX|BYZt+y1?qLf^TDX*wIM{E6~AZfd$HA#kS}5e|<k%ShaZNV^of{ zMp8+jC@lB^R;|vOArKMZ);bPA){K3U6B?7YAeJFd@>gcG34$8V)di!s`nk1Vj;iH1 z>@|-}OdK)yzCk!4-uRYF-#UKS+&?g|-#pyTjpW`t;>KvjA`<)sB^fP>o+d3yyK;2X zG|;Z`XxzrvI8Y($OKwj7X={kw@*SOfy(93|ueSc?;m(a7j=lV{i&a~so)e&e96S>f zM$34z^;j?Q8i?6Um^drqtsr~}z;mMr<6znev5gNta)Aei17aeN7(vKYFrMRw#C9&N zr%mR<glriHQ^{RBiT#;Jm!BLP9UdASs8)LNNhjqr24ax!0#^_Y8v*&rvctZdSS!|< zrVvWA(xRBl4iIKzH+6uYT+{97Mg4(-IB2RgJ6k_6IN-+=G%<Pd<d)keX0yZ7wFC8@ zfr0VF!ua^YIQ~phP&u~56Q(0+5NfOZFx6kJ^0WCu*&d&qjg@NEo}ohD1<oH|c!2W< zr+d;ReqtwkNbt#@jKxly6~OmB`IWvfvrVI?WP4Q?bGGSOX3)dXOT?(_<JVEXrVtrO zvzP|nk%pWJ7oTWsuX^fIE0{_Rq!Nt*X71JP)v-U!>5Rhd#_?UFS>C4G;g(D+9MFy6 z+uQ)Fy3#viQ2t1bQLd$~Eqr+`3M{Km=qp0AL}~Hy6G_!;&Y{oG_!Bw%tBnh*m-tfy zzx~L=w-xVycx7efg%_0Z0(I+L1KH%}-^D90Ka%q=saEGi&hzSXm$@HFH<)+iPc+W7 zUY7=bP5X+>SG&R5#t0u%z9rzCQM@}!xWEy0MlkFNN@6I(a1%qx1PL4aa=8$cRb(o! z<cKH|wux*elnSw6#F<+DAYp@)tO~xCM7%iB=Degf$&j8IV?lEUo^8_5#T3EH;Ifs| zx^SVTqN5ilXrYOVM5oygdTU#1-UrXC*7EuD%gcNBE-uo3>BY$2b1Ru*F|*>z%og&i z#hj@c@A+aTX8Q1tNKD7L_WU77JmmP44LHYBfT;t(&)K8F)X#{~dfpud5n%h_72o&; zF=MjT{yslp*^Y+Gy~V6vDdOR3)Jas5Hsp?E7Mg2HotxSEh?;A|igP0#8ALN9>f==G z=?fR0_RjgY0->{8^XO*{YF-bXFJ{i2%M5@tUR+$3`qFi*;0Cz^&k@sc<$kP_1FUI$ zy|v0ou&4n2TpB2pt#Fnw$Z%k(Ki6x)d*O=%uXj}3i1_1?rCO$B!H^B#muIP(Dq3Ef z^&cdDCD9k{fyE2)+kQzbmX^U26Oz)lzkh>0$=$q7G$(-Pcc-^?A+%1-sZ}f2V^+Fy zvxk5m++h3>6m9oIVCeE*5*K!VF0V-}aQ5JQ=T9|c>|^F>|Ebe!7wn0NR@eXU8RyQO z=YQ8ne2ujIer^1<)-M|oU(^?gp6*pqzb{H?yOG7&NrP8&5O}5C2Crm_RxpY4QyM(g zWBI|XN;~%@3YItKwsSe2N3o}s^$Sb%2utn1b_@S6XxrNL+g952hT8SjTlK7MpSz+( z-TCRDq%0G8H)%Z6dSk{S-eU+%>@X&>J{5*ZfgJTPkH85{<Q0j3Ok%`cJgi9gK*$He zGGtglh~WrOX7~s$WeIu2C>;))AoRi#h&(wyI?@>IuY%hy7I2eFAZvhJL#j+9Yl_*} zi*T#48fxoRrnW;8(EweBQzSQoU9<gp`?Jed$l`y+*W1|Y@5|U$cBI(Y<`0sLsT@pC z07b~8ozT|tlus=xWq*o(3`YGQ{J>{TXlKHnPrV-&asPXKQ8689Io)Xk5Gu5Q;gwoj zrjVLaTT~Eup|H2ZF9bxRQ#*)+shv-1cV(R<>-nqJ>G~D8R(bV$^u0^)IG#uIEE(I4 zbSp78HCo9fSe;tb;ek2`%T!tUV;0uq`t(jKB?jMdVeQB6C!1OFSeSZ;p3Sk-m6SK^ zXZ3z}`M`3(TOFx}o%<CY;aH)O4uys?q38S))yYZp)_5crj3vjy;ZYD6&=IKfGoL;@ zzPB%S^l)R>(D2T+v;AArjZjEGpWA=?{K)oQxk8hye}!});1tHjg2B=8a@iM16nhco zMps?zR+L&;H&Bb~74ua~L)%z#KXkqG##SsrcN%YQy<uy_4EU$|V0JXgx@eMw5akx7 z7Nj~VJY6jWyt4BOKq|1rLL-KUCG-G05wj)ZIK+{0VV5^FC5C|C!p4Ec!w2^7X%X=O zQ}9TGP~M8(btEg<>7=mtLm*bGNblgfs{u6Ao3jiXA^l*z&D6x+K!AtXTE@*CI?OEN zpKH=rpj^n)Fjw<WN|%DG5IW*X^`@|@N#e=@6%j+BguYBnnDNPN_Y&*hql{A27ks0| zH~;G3#}0<fE#DdY_b=@UMv~u&QM22!`Qku-DVzWL+c<+5G{?3)1^eUu#auQ74D;)r zci8sZzWK~EcB0X+pM5eGjzs+aEQ=jlMY~O7tm}iuu#RuoY5dzSSBorgvN;#Rky~Xu z=J#96hQ~&xc>GI-kLam@4=jCvkX=F`i2WeP4Z$Bv2zZDAV}RAju^{Qh;-(otV#MPz z&Eh78cQ(IV4qY2D^n+gyvb*u|k&$}6R@-?KnW3h}31S-=8^PgLAFdN}Q5z&JY$B1J z$xf$HKZWj=P7pKEr0$YU-6`ED;e-D6gYKNkkv@Yi%}D4V08@W3_MK!TxaXy(x;yQ> zeOC9{?%=jx2p#<Rf$-ROw(O2({r*TK9DDM??k;-Ulk{-s|2Gr%GtVUK2FN<;i&e(= zQDYhW-<yqh81FZJ%=ii83&t-Q|HAlP<ByDgXZ)4%-`EJp8FYhcTJ2DW)ZOY4^%TyL z$JJIfrzVX*G5*;2J<$lUKW{hwE%UUWq?My|N7?9Cw{q+=>SB_>8cTv*<8k9L<6+|= zgY0CChhD>Bd-y$mmErXf*bhwRgx6Rxo;RMOGw($E$JoSY1AK!Fz`pUII&S<&;{(P^ zoR?=$|2M`5jdx)=wRzuzJ|&suh6$Id8NbahY@?wZ@-F0!-!Z;ntQr@%YnC(O#)9!V zj#c9ic<xte<2N|F!EDCwlV%it)=2g_eM#r^;DG7$dYzLs)tl+-&72xi`E*Yxzr1C{ z>`56tCyi7wohqI(a@A}O$G?xP+x@=C3EH9F*Iz$DJM<;XeX`%nc>NjZwY(_ZkmBAu zhF0epB~l?oP1AWZy;xF3qtGZ8PK>KzqhSv>PJn?&pUB#*i`9zCn$;|)re$oWWo-ZC zrb6~Py{9&nGM(=^t&5rNNuBz~E9cVg)9N(%rDtIpl7;XI^|*RWJ*rNrr}+FSM%2UV zK6QezbxhsP+IvLZ#z?za?NfUhbyKRS3XH)RftDEEP!j&9@js0JX8c#<zZidK{Ac5` z@fXH_GXBi?_l($oWBi)&HRCJBmyKUE{;BaZ#!nlcf|d5e@bSIhc-eT7{nay!^JjTH zWt?TypJD8u#6NhKaR*@!2l3_Z#G^X{I%@>)ZUY%rX5~y9DMp|y`&ff{Oc+3&aH`3+ zyUi!7eWW64#a*fu4>sq#u0a`u2Ua%bu4*E$+1j&;ipy1NCT!?=-JD9-GiWaQcY~-d zKJBDKs8{{+b7&&vc2jdRe5rpT7r;-8sF<45764&DhZZQEYqAosc>82I#~$sP*zx-6 zj3ezb&$7;Q1--_TVUO^^P8oG2I4cVwa=S9zNeUz(E@W96^htg=N{l9e_fSeR<=+X{ zP0Vy50@Q)DK>Rk9g@ie-cADZf^v`mMbT%^!C0U;uGyS?rD7ni3SF6?_SCqCB+eX>U zO*N^vc&Bq&_2|I7X-@TQPk92l(Vj9%7w6*vv)nV93wTo7d!|fte&EhKE88tKotKmH zTe?o#l9!Y6)5_Xjx%2#pQ_gzBVQ;ov%4G9qJ(~;plfPi*v-PAul*`UKBjY7GBWh+B z<@+sRf8qjPHxmBvmU|)egQC#ui|Q9JucUQ|-*fS_X(dzQH^`I03%6wSX+c#Hv&k0; z6O18D%#SClkw_J@7lis-1Kvb{?<^FF7Xrib4ZF-#y6S!w^#p_ecdUnS7JQ{S+hZp3 zAy~8{-k*iHvd1sX8df?5J*y=j|8bxcgtllXJjPX%1urzYo`~0m%1k{x7VxmD2a90c z<3o7#Ed8xN6#0pm&noxqNO?wkrgYQj_M7S%^`v(6lr3LOn%K#0PeXgR>4Ytw^!A)1 zeb9?XoW@Yz`?GbLD3^#@r)bf-6;0%_iy;fDMPixUZ?~kP*6aAPVMSA0ltuH8yA2&) zdrP)Y-t=Y7X!Nt1WaQmI6KlG)c7$_qBL_0-v1BzIsoBkdYDvR|bAeyS4Xg5bU)UzO zGA*n=mncXN6!PAF-jOWpUx$nM(qcoAI)PU0dS}!-17pDwR4Vp}zdn`@@p;VS-xltH zaErz+q+ke%z+&xru_qPsMs#DF{Yp1KYN7TWx7W^_S)m?aO?!^j=to#jzMzV&nR6%2 zSoCETifx~P<LmqrENKUas`ylmpZ|#mNh6!H%|P(&cbGmquyB`(z4aE;Hrx2JV+K}J zBeo1ni4i&}#+hi?IEC_q<O{No3fL-e(y)EXCY`Te5c~e9&ws>|#BBw((NOmiM~As5 zioKB_IF<>oEEC7&vap2<PkS^JhO_Nj7q(C7D-#xX!<Sxa4J+dd7k>JG``l+g@v#qo z=$-F)_L(<4_1L4Yd*r?ow;$O$-xwUIF-T40W_5E);Gt<P*O<^g5l@0ES(ljz1E%|C zfr-T1EG|WMiLexLr$vQGv5wsGW!tt<WUa`qj(8Pu)h(S;8zPDPF|J&8CDJDOqe#cw zmO6vXhjo#&WAG|@liu#m7d@f2r`xh-AzxUR3P;<5AdOI%Z%cq7#`i@%=RJD<|I1C& z{Tp4g+)S)}SI_Kdd!DO(n`ZSN&%0AuO4dD-w@bmhCNkx0OUib|((Q@-)@rgn;V$YK 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 diff --git a/dashboard/lib/ionicons/fonts/ionicons.woff b/dashboard/lib/ionicons/fonts/ionicons.woff deleted file mode 100644 index 5f3a14e0a5ca6d20cc4fac708979e807b0d51bc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67904 zcmZs8V{|4>+wC3O$;7suiEZ1qZQHhO+n(6Y#FI>H+_AoS-gSPS?zOAewQKLItGckd zJQT#m0U!VX00c%5fbidQ?eJgu|GmV;RptKa$o^I0{sW#}G|ZEN3M0!uQ{lf@`X3C1 zxQv!f?2H@%0C3%Z@!Y?<H#<;!LKAmaA^-q_?jHyKKcIk!S{S)F{>z8=FNXdP-`@Z* z3tKO9000&U0Ne!uK#Cn-Nhpvl&5TU{<zf1#VfY6QP@9S}%YWoQ&hTH1{|{tfx8Q}A zcCMcPxJv*4)Bym1^A~~zNZC4={L?}F^Fj>&hty8$H9I5Ef9(Sa{O2S34`93?CH6*k zW&ps)e}0{R{;*=CZF@%t7gqq_bLC$y@qgW&${JqX^xQNtG&M8?7^A6iJ$w4+G{A4m z!V@_fW!<5Je|`hd!2W^|WrTpxApoAnVO#)!|EK4@{RV^(pn*XHq{Jc72VDsPN-kjO z|6cyzw+H<L;tas~F93l4kNL*|1pn99|M`t-jXs74rv?X4e`Ssh4*o$b8(@)SX=P$! zVs2z+9Si~lPa-ECXAe96A^nwc6ASf4Xt-d)JNO5HZZ4`^JU9pq@Iyx^{jV)?>O9Wq z%*b|e&wxgh{gGT@6k@Sf;xaJK1JF|dI5=XYpqQW%gS{Y2E<iX!$21j;aA>W9obRzU zR?ojoUyA<m#LecElCJ{jA!o|La`+%g5yx?$X)5hv&)C7YMH>0-1^>Y#+lX*4wj$Gw zspW2nxtTfEW=Pyl+3L1z3fE0wJI)7g!Q#v-%q8$DXVHJ6(@H&h5bvfh@#@nN0ZRYM zJ8Rxq0J_%$Q&3w>YjR3y!4n?WPd>paiq~wQy=&U*&wR+sY>(CAVk;EACp?9Zcpv&k zJ#aJDDe5B^lN6e6vj-e|v6sHg<BahVA^<MEM4MzBcEARhv)o_QZg05QS<kq8<1q?f zFYzP7&6vINtxQPWQqJ~;?ya`ZCr#^*kO}63ZDk+QX3~0OoBy(k9UlaP^8<ZFVAebD zj&P%VaUiz1$oHW!Ske+0tU#Mq9oq!cW-M%uu#f1?_BEI_Lv|-|yn?@#?lUAf@&@EA zVy>@e6ReF;Uh_G4@?Q<0H*JT?T`=tZ)iW4upbbZR^h99yzvgS(c(et2B>6HtxiYNz zwC`*!+Uz`ijcL+gR?9x~t<#teeCRA3_p{KgK%UnH$KVhe3Vh~o2}c(!`}<tpJR=gO zzOPHoa`t6#)KmJJCI%J&`?HW*I;8u@g=#<d`SJ3RzcF5PZ7vAc2gy$dko!ZM%+JaJ zFQq32V=DbQ`H0xR4X%1E%6^g#;AY#g)LXLp(jxGU$FR2YN^Vg)@Bj@SsDAQvAYwmW zm%QYse$8-dgS1J$*oANnbzB9ovpx9WzB?T*6pgBG*7|-Q@-BfrsfUvOZ|)izng<$U zLyAKpzknVx2fxz6{|szJ2?0$c2QGe;tV(1g>=sxHT)nvhm+urR`1M|0AC`9%kofst zf%nTf3WWThFTiKkEsOm5j{>s+-|z2&pncL`64MFoggXLXA8e1y{Dt``1q}Y(h-(j6 zl_%_q^BD>O{4M^+pyw!Gw%^|Z0;~dP0$_Ur{et|o{4V^g{3`r@{CfQK{0RK){N(&% z{9OE2{4o4N{QUd`{PMe)ia%4Ju{N;&;9zG3f}?eVh8rRM+m_V(|E<Y?d)B{_=6|;` zz!Z=Ps02&^Zb1MbL?DtNnjr2V`5^Tmb0ANkwV+R6cwmxX=3vQSz2Icv&fu-!FA&@i z+7Q_g2avFk+K{P`y^!Zn@K6j;icro_+t6gt%Fyx9?a=oy6fog1-7qUKAF!IRsjzc! zuyC$$p>W-BOYmgy_VBj|<_Mt(YltL>9EiS%A4m*H(nz^TQ^){hVPtdUY7|fuDilMM zT9k9tR@4tPQ?zWfX0$1^HFQLD4s>VqYV;8dcnl_t=pT4LEPvGgnEG*!iHb>qsg9YC z*@y*>MTI4d<%m^`1;nPp*2W>g$;KtX)x`zkY2vlx9pcO5_Y*)9a1gi?q!L;Z4im8u zl@m=69T0O8`;!QgERm9tN|WJ{wUgtKE0bSSFj3r7N>c_>=2PKORZ|^M1E}q(^Ql{@ zr)UsqlxYfSE@??<m1$FHCuk4p;OVsK(&_%tQ_!o^+tLTqXVTZxFVUYfKr)aqXfk*+ z%rUMoUNg}#r8ECv_Gcbpeq%9asb`sDIc76tb7d=JTVuy!w`CvUfaGA|Nabk#3I8+k z=M<+Z7dTfV*D*H^w>Nhw_c8Yq4-=0jPd3j2FAc9RZz~@jUnW1l0G>dyz=xo=;Hi+P zkgHIlP`@y|aJC4qh^HunsH$kY*qivU_^!l~)QZ%pG@dkzw6S!e^sw}`473cJOr%V+ z%z`Y1tgLLLY`yGnIZ!!7Ic_;=xn{XBxovqwd42g#1$l)9MH)qZ#dyU=C1Yg@<q;JU z6?2tzl?hcQ)l}6>HD$GGb%461y1)9a295^5MzF@PCW~gj7L!)A)}^+xcCq%GE`x5b z?x`M`UZ7sJ-XDE{K8L=lezbm}ey9G3{<i+90l)y>fXsl&K-9q7Ak*O1P|{G}u-5R) zh|I{+sM=`E=-e39nA_OgxX^gY7-+&^B5#swGH7yW3NR%yl{U3BjWo?R?KQnNLpRel z^EK-=J2nTHcbgwr5LmES*ji*;tXP6u5?I<=rdsw|&RHQ_iCfuQWn0}^(^;!qJ6oq( zw_9&pf7y`P2-{fOB->Qm{I*56m9=%Xt+YM0<F>Q5OSbE@JGRHO7q>UGceHP|-*rHA zpm30OsCNW7hB}ry{&BK(8gv$Q?sQ>s33sV<8F4jsU30T^TXH*edvb?%$8o1|mv?t| zPj~NipYy2ojP)G$y!1Nvp72riS@I?DRrh`KQ}%Q83-tT#kLd5{-|BxE02?435E@V! z&>zSj7#-Lf_$Np;s5A%|%o3~}>>4~50ti755ezX5i3}+ZnF%=#1%$GMYKFFl-i8T> z6^3nwgNFx(&qe%*;D}_19EsA60!DL0J4csCFT_yAc*m5-OvPNsqQ-K>s>eFUX2y2L z;lydixyMDu4aQx^3&zLBFC_pHbQ59|J`&ZFol|^MCQ{x~LsPfY6w?~hP183snllkI zjWY`~r!qgXbh9F}+Os~gIkT;^qqEm?h;le{%yZ&%L320r<nx;IfcbR!+WFb}{rPVN zOa*}jONH=-bcLRUy+zPP(nY>S(M9z|V?~F>(8c`4#>KV8E5&amG$ryS=B0S0wxzYD zyQME>uw~I@hvksvSQT^?-Br@n9MvB+lC^lX?zP#q&2^A<balyfGj)IJuIoYT8S3Th zJ?pdUe>XrjNH_R4bT-^Jnm4vL;WSw`Wj3`oEj2?ovoz~BAGC0{Xt&t5;<Y-q=C+Qs zzO}ix9kk20JGKY6m$!FzM0etKj&vS&!FCaKxp(z<BX%oyZ}(931oo`-QuJ!~UiQWJ z&GaMo2luZHkPVm)BoEXNoDSj*3J&TIW)Job-VOnVWQPKWS%!hXW=7yg*hU&hc1HoD z(xdfb@?!_%=;Qq3?c?VYI1|DX3zNu`;*(2Lwo`wmKW2I7K<60d<mcw*S>`?G^B0H~ z5*H2@@fJD%`wyz^gGn`&aHIGj*+q5O%h-M}GdDB8lBr*nQ8Vl4F56wHPS=iePt&f$ z7m^`L991X6CpF<@`wfZ>r(yvwt{I4H8^UCw!Z8MEJ3qmKb*nwdHNf{_qVvm>H+DSb z&0%D^cFH;w-r}oz#`CUS(_VD@eFyg^3D*o4-uNeIcluwh;aPuJCzp2tIq+*joPy+$ zfz59#0+G~rbOpv3;C)3@=$GAh1xnwpYqosfnQHF1LBL7g>E;(JqP4I!Zv-czA4r`G zWGR88E<2fWnQHxdw|)hR*Ol}_7~`9r6mr@ZeKeKix0b6|$NGgC8_Be&$WL17Z<mLM z8cYU3@65mY+XrilkhG+jYMZm(VGi{T4O=!(-o0xg%zoi9ixk>_$rz41?fW+DA!n&t zk!QUSSJf3$*l@*GF5RDsyj^Vk-0U7xr)hn=zvJ2Pa!FIB5kPtrdNLgt6#5_9Y;2w@ z_s#kPv?|>*UbC?Mv6~CoLk#iHDV%g!C(T?QKE_^WXJ_|6*+pf*T_3Hl)GM^CLxUWQ zV5Em0XoMh&?_ZooH3%d^Ga`$TlTHehQ!B!6wkE_*y3iL8Cd8+A&jp8wtHd)U^q~Dp zw@Wg^of{60Q^PavaHQw_mbt{ZDoXXtzI4JbaQ3n_wt?hFb{-+-iZC2!gy>$G1~W?C zi}&u?it6JPT?g7W5Podb1tTWf{I0C%1K)X92S|H2#q6%B>FXtCEy!dCGAdNTiRt}2 z=erH2x@JZdx{8VrkK!^&Zp^Yr$@l6~xSQQ^YaY_QHNARNmUUNvI9xGV7x|lF3$veX zjMO%wIuKH3+6t28Vm%OLz<`0!c(~{sp+3U$XL7U0VrfMy4NYdPAjUH|wTXClF`{wU z@~fzHca?_<{eDJIJ#CrP1@vT^^>pN-vVf@iz?Y25Uxs)?SQ~%r|E?8@QmpjomwYdD zbmM0Wfk5#moeGrMl6!&TI6CscmY8=)IY9aUwsqyXQco5v%k9N@xrP2%_Stzm9R)RB z=jOR7G{ENR`JI_XgKlR*H#aXkE0@15P;T80H(vqUt2`|)npCW5PBZmVPfya6G7LSf zJ=N?+4;vje<ynMP#`cS;#8tO?e)V7p%5F4~Oi54@-FB8mRcwe?I9c*A>O9i~Gy1QJ z%Yz1{bAC#;K(pfXA-;l=N_^VnaXCv>>j_SGb#@h$t8sL8)}(yw(Na+ZRd~`I`c&Ga zFrIj~J#N_iRCalHc!@MilB!m-?9LKGRHZ0-kP3p8og)gAE{Yd<!$x^uZ2W;Y;BFJ0 zM#eX)0i4)IvCzdw1J7>cQ-7OhGc`w|gM){?Ypn~0FSq`;{ao8mElnY(0JO)@<HZs= zkT2^z`ES-pTot|LumtXQG!x!tD6?}X0;t*|9erW?Kk{CdS-kfZg&Jz-rBdA(YHEu) zE7h<C23#Gfd>tz)-!;|lD;mQd7poQedAEmGt<j1-SLo7PRpM9Ft)bFFRxs>~7M8}J z5?aIQ7|#I+dC@52%BEHgj|ZNt@md9h<?qQ=*V0yOVFiV<X_c?2X51Kzy{1VFa?j*v zW69eQM6XZKkHZ3S0vIAoCBP6eALg_qqUA3nU;>vtqetfb9EmnnA%k2_JS$BXDAtW? zU|NQw90^F$Infxm9k*w<(C;8mxEI<~;;31Yonxdsk~Oh?VkL?Sh<&ysLKIQ_7{?us zS6uLY?~wq2JRGlqq8iRUNp?pV80c}qaP@7V-~_c$q5{f&V&OrBXMV)4S<W!Ferki5 z@D+_`<KXn|6QMqN6&)m25L)|t59DXxD7|y8jFu`%>xU!Ru3cbc5C_OuACe^|2loP2 zY=Pj2i}YNM3xn&`_sB45^R_|S(Wo!|fd1`v@6Mhe-+HW70Re*f(U+H&IOZV?PxNIJ z*`<Ntc1*2pAOeS=d8wd#tkZI<!$LBXzwC4yl9K8|<PVanMXS}R<UOm_DbzHRL8HYS zxxJt7gysAD-NpqRD^bt6r>^p@U*s9@m%C9>eQ1_rtOL?F0jt0<cDDn@9?I?=w1znh z%2T@ugUvBY#MnMmjU$RqY;{Bmhbmo7#~*^pVrHnRn{Cm{r|mLAzb`?DiO|gkG5s_< z?E1c$5bzO7+-j{lk%~IHy4n{-Y#bk;fE3AYJZpXi0ZGdS@7jG9TTOQJ^Da_6eSp@^ z!B<^|BC(%EAfwc&6bl6wN@ZYd&`_;deEE?T6((fMik(wz4Hj|0Ka!jRN-xX9hh*Sr zeerL((+u&xs9o)P;TdzE$-3?plZTr3{?R#M=p<+$lx>PVEVgo|atpb;?#XUb);2O& z_pcf72DkP^%3Dt^T1e|GNYo9Jsx{arorc><RX<oXdeVQ*&q!SB^v&R(v23bH3FOrS zpWxDf8`G>udTgbiR=Hr^;^=~kxe~JIl0qY7#v2Wi0@3mFd0vM}2?EN(n$QYxER3Y8 zd@mxcqDY@p7y2Hv{Scu^vh}pav9%5Z;6jU%UjD99`Xu8Sk_EVbuE_e}*CF24er&1| zAeizumUu&;wkdWTv7;ih&p;Q$I9s}9DB+a-2<1r-9hy1XAVCG!*IxPln8@P_^*m_= zuh47{Ii0}o?Qe(LpE7k|SwY%kXmgAGg@Ll;`o7;q4W6vSogS2Y7wr1fcyY<a9Bl#( zG@QeSS3yaHXcW<g4VMHsL-9K<P}#Z?e%49shtvyIMta8T^C2kW-C0Qz6oi&~wGQPw zq8Nsu3*Y32zB^(Ph>a6x8#05ldBLU0=z=8nM4h)p20b)J_9A+-kyd?c(c|0~2`kBr zZe9%(6?eRnw|w^!S1m0%YcW<NIuVkL#S=7v{APw5Ux1Pe46+xDs7w*$iyk8d%3ysn zMq!S6++qFAr8g4N{$%;#38IH^&_6&OmGA&64$AO5*%kFXgxHSYaMhuNJUj`rJ5My0 zOk0t1^R1K))9m%4cPb!nboW_Fi(%rP@Zp27WunlR(I4}08A=OB7H6@0_?@nam8St2 zf`o7fPbzgmr=Zm8_MgBhgzZP>Z80>5RLy%08$y_^g-i<7glUDY6qn~UOQlRgnNVpd zVqB@X%W1^<{p5|Fa#n(~szvBmGvwze$VTf7{vpFjyc1>BOjv9Ck@5<BiT8#Bhc+0! zB`oD8#1ZA7*pwr}Z**Ow8So?!i+ZH~ngx?!TYB6-=mU_6z^iOK8-<VFW6n(_x%zV) zWwt(=ivocFf0Ms;4t|KE<iVn}x6N9Njbh5$(?@|p0+U!TJAq7Qv!?;_>x&rS6u7wX zvB2LJOyb`^#s(t_-C0RZ3U{yI#|8~~e+bDGmJ~JxQ_)qt6tQC=P{tP|mL{Gs2ONNd z`w~e}${XStViPJb+@6YDZd4=?W|Rh=B;cDU;0pwq;u-rMaOMgdY?onLRMr1#MNg*E zcoYq|qL?D~&O66!l^|SoE_!P3uri7tgX@1gMTH~8-`<HzDAzNyVwDt4QAjn(22-t> zytky#1M5R6Y$TE%E=gEwq<~J~gA9~KJ;lHQ<@K?ZS_rEaBn%2+;C<sz3xnEw;_y^c z+f6^@L1NQ4>-IE}2)Y1xgfvNoFbOu$%+F`Mf46NiScEB8<{anWf0*rQR;FTduMX#; z9!nK@dj@TYS@P`$?gH$}m%A5|g+s*1nipURDCWKKs^EKYy+e#fc8ZG#Fa4`6_z7{X zzXhtoi~Py`g;kP@3Ugdbe#ar06u-luagS@9%B?8IX<mJ|R6Cdaj&=MI8+afefE``B zNq#b4f4$MteNx>dYfjfP=sit&&Fg$PM_Sn$vCEZL<k3I>Huf`NfoB`=*O4mR{a%Pc z9t@Iq1i!3Jw)D2qI?%pI1(JWn@N&qlvkyOElSiYQ^v=75;H5GU;b?%iyvkN`uvOuE z-~)sAvlry=&s*FVOs_9Yr&xjchk|jJ_XfcvvJa$HHnrC3Y^;Z$8#GA12TDKmxljeX z?hEJaI*{lC0QCBADC9^&9;CD2HmZWTr-~%g#pKBg>>sl}-_92-vtG2(o@WJWTk4By z(J;bC6#XstpC|ZN=R*87gXJe#d@_GIp%U{sUySSL$qh`$?{MDXfpu6QBVc~0t{pUk zCu@Ny!Ic%>6N1x1E}u7?A3W#=UQi7e-rqUh{q}IfnCM3yg2eHUPWb#Hd6124C(be} z%4!X6Py6DTmX|B4>rylc*yYi%oFvMkZio~LJbH?!LCbU|3P(+qzWZ>|kzS9a!MRCc z^ucuZUGtOe!wQ7A4Isocg)Kqg9i@NhBx$~^2Y$wti%Ow_E3P^W1_#au_J2{1uuT?F zfzB!5{#03vsb}^YM4*VYquaKXJwe+f@5Z{CbffYjWeJn^`mvs|*!b*@t!U)UX2)T5 zp@w8$*Jtv6Z}R?}F%5MM9pAP!zWKA0!cuTKOc**^<fcx`W%qIC%=l<<%D_F|je8t1 zhk@9riBnG%Eyp}|7Zj)g0urlqs4wWHS`69G;20zg*Etl~g#r!1L_m*1^3;KTMVsAA zjrzK$yNmMiweCAKlx$uEW(h%U&0rx-KB;KxD@)6Z3tsRbTRave$2tU!oo(WlF}GBw zgsoi$nii?l2UqPwPNL@;gp>4kA<FDodduOxfQ~+N{e7<Saol`U$JRFn7Y*z!6*M%Y zo68(#9?EAA6B+36ux0ce>qOZS3%>}eJuKF;_A9lv3ej?=st9Hfj+5XO3scpzgP-Al zv<F8G$M&28n?}CvurHIzZm_E3^>!%>^*r3TGGZ&kI0%EmUBC+Fzi>C#HreT9E|Lj> z+sS&;Y;(VwU#rKsf2P~}sDzAE#2zz+iJNyl)({bF`L_VJ32tUwf5=0i%FpSb4SWqU z@-q#x>M;3pa3=lTB(S>QsXLyxWB-ZV@k-Lcg=KKD(EkJX6~R&(O+_0lD`&M5Jo1Oi z7J@1v;;9<95chEP_IEJ@DcJid_jZ6b=tm9yGr8RIj)zWU%IY48sPd}CXIS#CD)fPy z2-ZZJTOuv@Y5-X?9orVlM)&m-4Mka&jSepEP0i!s2gXj;DxAP9!W&3hfXYfT+pz>{ z)sSUqqpbC#d>rJJdfzfa4?Ye@w-I<qT6hRbkbP~mHdltaFb^+EcMyw#N||*U)se0= z%=V!+jmFx@fWc0Whue(@;!ub)gWl?hwVJZc1F%S&3*L?^!?<C1R8=1F3hA<pF*dbn zZdS;kPIBSWEebr%y-xmoN4syy-d*#i5XTP7jTBXU_UgV)K}LI<I;#o|yKg0m-O3yG zj}GNcsX}R<Z$)90N&r9p`0^bTufX*POIBVQjHvI8=vwHBDhsoas^<cdee_v~BA!`} zg>sH4#8g{CPjF9oPg)PsOE{7*{um0IIr3*@=gappE8h~)t=68KXVUv!Lov4$2~UB- zH<pIxfW*Sh9_Z&6*{D2f5yg(^Uwc6nSHXy?Wrlu}kuvUFm_M-G-buyPp=YT!x2DDe z5JVYRUW+=7vNN11G?>3~>x_g@Sc{1Q1#f3<t8!O`kzs-Xm>3{ZybdSB#$0JpawH~2 zM^WK=J@t^o+xC101AOd+8p_Y*)6~Xk(eV(?LPtrY*x{!nl48kpl<`sFPOt<rY6q_? zSC1E%e)?&C1(qZFc&k-(<tj?>+vkXll-@2~ACn5{(_tFu&0WLTt?FGR_c;SFLU<?6 zchK{sL?}Hx(A4JuJu>q=Y1#EuX`z&ITtvI0P!e=&a;T_W!;1j%_@bV6`%XA-ZnbHz zE(js&EtYiF!Q(J)XqizUr1r@TZhf9ptp}I>qzi%rabm4vhMQ0`9VsPrcI`wo*WkxD z0uFFzn-j`&$>fzaji)fLPR@vWnV=&^%SuUf1~W0re39i%eMcoai2U9(%P{1SO%Ba< zcB+)#`N-AZ{md|NsOt`Xu6P}Nb2K)c!%gRo+-XfiC6p@JB&<AV>7eG`{~L~qHEZl_ za)ydu<7}d0nFzQgcJW|iWAl)Mi+gc_t0Usu1~ZR>mC!OciK-K}hu;*uxPiy)tnDbA zYtPcMY<NqMhdX~X=3>Ib!KB)~a~dG{%OM>@?i@N<T9;%}hwE+I<aVLuvWT?%6Y7}+ zq;X+@k2=L~f!Ho-13aa<v<pVCYJG4+u%=-S6eCJhLJSI=PLMxo%H7bgEgIU9?L0bA zme!?H78DL5>O2T-C%T%@O`DbjD%@X<JrG#F`3*1HScXL<m>oPuO!8zP82*;w%3tz5 zptdEpUcI^dL0FSXxs;b&8>!L@NL)f8&zk2>C(OJRqc^4b{4P765bx%WNu>DJ*bt=V zbXOf+h?Yde0G<K!0s;-uX<)UrC=dOk=m6Sl5KXRwP+ysFol4jZAo-J&y+XxQ$bowc zl1FV;DofNNp7(V>_dc-9_g!Z0OCz9u-NyW~L7roEQT-0ECS3p7YR7}x5zhdiguKFE zvE<Hy+S@GLSwC<a?BKRh-|`>Ix1b-NO8;GecY0#SoerfLe@|EK@`@ELRgnZaMghx# zwR|6BqvWe?!|n^beIX?bI80)V;Ayt@q@|y3R+Xa&r{o;^J=p}?XV^xA>}QU4b%AI8 z)a0}X264f-aWsg+8#0m2?Hk|c94!aDK83}(jR7_E<R)igvh@hW9t0fXk6~u^2?m9$ zyzOc1rmKiP)B-I+Ke9sgkurAS>P)3ss)64^$%ztP?UKvK9N2_0f&~o0mj}H;a>j+R zY$DklrMyue;aiqzJ@TVo+15OmmW@=U;KXIq&G6um@z8p=2Z|Wc`_|tZzjxc?T(;K? zWq*JeIp%?!^sq^IMAi!xYm|!8^GtUS+f>E<wZd_IQjotc@I|djxHv8uoA<<?pC)p1 zrF!~FamFg}%x!oy7P6*z6D_o-WwME!_v|Dcn+pykeq%3!wyfDxSsY*O9N7J(`@F3& zU&Q(uAeQ_#>@wdbwz$T2>ae2tOnXWns54$9ftjcp5paqn+Z$AjpbZaypXj>T@_|PK zeM+sRD8*zYVSn=0WTJ%@Ztz&obC0&%%vm?5+hd`v0@1V4f6fG}8w#(Ga>UesDPrLp z)L?O?dZq@~T%WzRVyd=IHo(UtP&<!v`zv!+jqpz=23xBr7@0f;PoVqCy=so|N+j0M z)s&%d;#~Tri0X@dP7Ch-@$1sI?wKzu*+acozP#7(UW5tdO*ig&0%^HkCIO9T8JCB6 z45SmunN+Gd6%=mgIf5y~Tk>ax1t?ht(`2OZoG|mSr*^(S_bnQijOe01#hF?;^cfa1 zmY?_H4^2@{)Vf;Qakve1i!~w!2(5Fj5mM%H=4ykg0h)!XSfH@z3o&kgs^A7C$`qO5 z!=C5p7z>ORzrJ1l7iZ1J$6LC7EB2RTjsE(%<Jvh<T&YQ?d_|i88}cD9?2pp+%Ok{W z<TwN5U6?<WJkb!*O^6Hp&k_R(oSWPTMJbG$^5(ocrYg2JAY)-k*tB3mb^yDM?gdfw ziMW&U&IK#Y-@l=?f<W{~zVHXIc!B?F!gAhB>GNsMDxy)-rJ=Rshd87Fg7>s-MA`+< z_A<PJY*QE0*j;ex(~2uVq(<Fgc|!zdOoQA|!^);0CWHv_qt-4)D6p^xl%TQ2A43m! zi6^Z0xv-k*obU4ntJ~V|khHu!tI`pv@2L<fH&@z-Vrv)Pw+|fW7s@r8;Vw_-d)K;4 z0*n3mi>aY-$sRZU-V6tvNT@?fA#NKCsZkH2WF8<hvfB~ckT((K8e+Cm7N7Tzdj*If zfhGK}TKOhoOFR?=DZa`MD{y7v)|e1`<%(NEf(Z1*6X+sVK*tV6%9eczzreHLVXbVx z$EcnJ#3JYqH`QM>mTu2@V#y3fATbg!3FM&+`axo3ktAOr#M$ssk<flCgW0v8QRI=3 z0X0-snq$53{pD5F<<@K~iW;hK0Tr-VguGPHKw28Ax=0N&%1?)YfxFMKVIB5TERull zVSH2;<hPgM&q6zER1!_!&tWe(zL(Fi3*-s?Q2%3QI^ia!a3>NIy&ubxqTRKMA>r{D zGd7YdYHCn&iQyssI3fX+D){w$xtMmBzYEBfi&ABEc>sQ@f*03_Hy}uBc6P5b&E^*} zE?Bg^_7}auciT&5tbH3ByE6~X<&(!F_xGWb#&F|qfH@yCy^Lqj)U^ag-N*`yXw2y4 zWwEJ}+Zdf~Mj<cbYa)->xHqb%uZ2kxVFUrD*r~dyL=TSpkjXr*70|LGglswRkS?jT zFUUM0@~a>0Yarv9sb*2@;GiRDzDPotn1%b1g?Gtxdlg`X^SB(tqC<thNXdxEff$@b zsSkdwC>APWzmh#elc<CTWzv;o%>u;78BfE>ZV&1lW{mRW-H2SPORdQ5D)+$NDoWzy zKF9~jUz?={rHxxmpiOTf%7JNAyW?L6m5$}eqYBLfoWi(aOd5H?-;<4wM`>Y>$$5vv z!}YI}b|X)S$<~Hi20lr+hVSoC{0OSF8^sD5XUphk!n>y&=XuND_&D~=T4x9+;mIdL z$%;s@t^JD^aR(L%i9%u8)a@2aInd4tG)ML}*d0CZRK~@Uk%fCJtzX!u-wMF>@4Ir? zWPFI(8KO}XAatG0XF!ln^%F@)Tbn!+z|!Ab_)iopAMNA~=;71wp#6*+q%K|Wq35V6 zzd%-iAzANW;`XV<7G%rZzXSbo4wI))7l9)Nhgp})sL>{Tw+6Foi6TPusNuIuU~v<M zT8J>Qrf~WbChz7#+E>Ba6%kL?PVJ{3xF4Jmro5ui;|uEM80JiS%5M<&wxRl`7Zke? z#C})b1@nu^eKGrmP_}^@MWk7TtDaVb8nAbUbEN?Mw@-HSEi(cNFnn0;PosLVcg9#! zj<w372DC7cyE3~r{A(o*8qTWq$ktiW`~_tt>il`kX0OA|az?o9F}UKt-11)SvDI&w z7gd(_2R`guPTNfm?^RSUp+px2(BQ@XJav`T$zS?S=$HeXBiA#YjdPY`Zdt)+Og4}Y zdy?`wHg72S`~nJKZxPq!M&D9DwxlS}THdSNC&cwr;$>LEP{&zlnyV%gvq`w^szaD~ zS_zdU1rpbQgnc&68=(nJT~T4QZj{M-C?Vj;K?n+aYzRdYa4bLcVCId!r1y>9ZVy?p zm*?RMmBK*RN_wk%qT}o+tvg7eNTO?MUL_f!e+yCF+%UMr@JO(e1{&AB(Un8!9zU1l zHMd*ascRN!3wcQMRBo_%cWECX;}-%21O=8yUg(5<DQ0mCpI{_Uk|s<DO18gvgGm`l zc9HLXGk!zS;bCdmfvBo^<7z0Z5ur0Nk`AT2hIAl7zaZp${lZAD4X1%7hbKwaNIdXL zu8tu>lU*dJ(JqF8C0SIPd^i#mOdwp?X)QZaW2C=mw>4D!d2-A*J<@G_;k>D0w*hWX zSEkq3Y}1dVsBuPVKlw=50uyl1Uc!6KW!V!m(*gmhgoW;uw<3j!EMFs%hi!ua*YTT| zihX|p27LkettPCTA`#*Gi9Aft2~yhFTkosx>MQY4+uTnl;7=C;p_;766K_Xl00YD6 z5qpx<l$cJSX9e!_1dhZ@Q-%rOD_5Xz98(?6kK*C0M!Eu7{=p|z+N^~-P;{7Tu<wSg zM|r_Je)Z&VD}DsWS_{5{X-Q=<H-0idzEyn8%h%`1z~MB8KNuZUaslus<GrpMY}w_G zwT;UsOG*M(e!ylrMIac{WN>hJ>#+U)jYaK|{yI4%a=Arz2}hdmPpkLh?Ra*abHijm zz<3$<98SAG>v4{30JHDY;NQ@{#<imrF>n~TvRu)%&-+DDgSi@YL3DAF>2TCuGN0P` z7aV*h9V%GK!-YtXDYw4D0O+Yo6Y;mXw=C+fQ5Sj~>D=z-rf~a%!pu6><9(Jy$-(PG z+9hstmwrRQ-GNvux4>S@6<j;tJU^-bPem3ZA~>b1zbo;ED$BpdBkY8x;k^ypc5}tR zYz|<fu_78e&K0-Axc`#ND8nJ|p`J6`<vp>0#!+udP;M7fX!pEldiE~z`}gu`C6`ND z95wsUr5X~M?zm*x8To#;&J$|#2<-9r-`u5g(#qxX15Ts9eo0WGvw`g`oN?Xa;NWr2 zZq=ksg3RYcbT4qhWX#&{lT?<c74Bm6fJ6zRWSwK^g^nX$d)-fd#bDO=<2b3v$Ow5B zdM_&&bl$$?*C1XUb?&&}u95`-P(z3f`aZkk;?~+)#GLvyLOj&ZE_gnk<OE3>?+CDD zZ)MW#49bhdVEdvHsrAucmfI%5I=1iIb3(RGeSrt4#LK(^6y2{)IS%}sTu(N(>DgQP zKg*i;N-jXFuNWSn>X@f{Va^T73t5@!%<|=j3OkP<J4|PNenX2I-5Ai}Q$5(<4X(Vs z9lb|Chdg~_=3hoFIrtj-CWXc<r+wPkY*R5zJN;d8kDa2Rpb!Y#oE>AiW_Vb@CKYz0 z!9t9S)FvbGE>f;n$=^W8Ikj%kbnatfU!Iwt^%`X+g<o2Z6aHGM3aDB+IZn^1j+qoF z;7+?~8>Mr6Y?3O)c1oN)sp!QhIX`rHh3RlP2l}=Js~<n2H}G?Mys1{u#|O=+628o` za;t(EC?YS)*}ek>l}r!R^6^mj>!;sNyp)s;BFLu?M%RNF===#7irGJdBs|k<b4L*K zZ1^|8dS52Mi0;Q9lYGNpQsqJx>hnX<*&A2kLy-H_E3l(_AH83+QT_YK?+Yrj7OHF} zCeHE>@l_pfCov+-Syvp^19!y+(IYz5uDKJJksNRS_~-jX8^`i)MpRNXhd%F*G+7X8 z7g`i5BJjFLv}aCnnCK2Os~8AA<5cS|NQGu}u9^AU%UKiE)2-y7JirHv$3g=irdSkK zw}TKkZ*h+}9w>#M%%|G(AYv*^(m9Ljju9{>MYWjxSSv`k+V%EAJ-@?@F4r#=>!=3G zR8@a=f_f?aC|l--H)otdZ4CpbKl0>6#Xu&x--soiV!RyKwVrgIZr0{a*!TR5Li?#H zw~8LMYpV=qxZJ%T+DkEQL#?7$g1M&ZJNcSTriu2qod|<OEDD*hx-FK$r;82dj#*0$ zeUV944DZdS7U9h=Mr+Xlw13b3OOm96htw4hw~U%xuR;fENLH>_3DX-&YNm4X5H1eF z-$7<Ni-rVd^<G<`==WaZuRZ2wX!-?^URMg@Ra|&2@DIlf$(T=EL4=mk%0=tNsrH$9 zTMZw|PLVnbpguZih$;G@1iYtSTG4g+(1+E6VEcO4bkVaO5^1&U?^I8gFmYzYM}s0X zGuzc)f)U{+q%1*2GEwO&)U2?x6ecJ%S_*42ic}a&5`XdnT7~yml#8x6^RJ_YnK4Nw zfhT?{@Nm(WR*0aH=3!@1!b7td>?U*xt<itg*;J{<trasn%-P(uo!PWT>Z@OcvC<N; z%9N;n5$aBGWIwPbS4%&XmvEig5<9!?)${aydXE{jUb+AEMH$&SYOcaTJv}hzV?e(b ztA;{4Q^fK%?v>qfw+7ymt98I>z8A4<GfjB?eqO`wmv({MM)jcgz<o5q_8x6)<9lR? zI=xitQ;$!kT``IkRy#+LNI*GTgK<$eVSxYsVhv49km?6E9SY`q!{)qHRe(Qw{0X+5 zcI2a#Iz({1sQ_2<Tvyq}U5R~zM9P1OyZYI}q%TpB2*=_BdgK{4kR5@<<NNaB6dF%B zuJAw;AdM_P1kws-BrtyiR_J@(*{p#6Og-Mz_K-gLFwCF72lwnCP=6T_vHunCpd#GB z-Esdb^$o?1aQE9N`?C0#hJN!?T1M?1dD{r1R!@X}vwVp^aAlKFc>3lqqVQ}mca^wM z86tk1H;9B#3qg>m!}^vNZ`fHFb#LhJ+iYPa{LW>=SLKlC9*zT~4}xsZZ>0WS<*e41 zb8vlZpZANpYLe7MJ|nOJ$GpL>g?VEA1v2XD1Ru+Gzx4=#kGBS1b`^SX->?1_3k3(i zHwre7IMSaKc03KJDTzP7E(oGDy?o5y-tc)um7fAj;<r#F69{S8?ywyJnQJ{RJ)(a* ze?CS0&HovHyy?+@T|<ax>hpfJZkW!wVZS$`u44G*(T9IkM3cmHF52duMbN`u2(DNt zE=YO7G)I=?OmEGkE;fn26mx6o>Hn8kZ>jxfp8-h>{#S^+W+cy9R>xB>Flh9H^l#g8 zF$v7O0_>N{Xlx~HHv>UJ#hzE<CGL7+@Y=?EmGzpVSbrbIkEhVGYMt(FtGtv9^ZH6d z+i3!Eg_;yK%Hvn(hTJS}8fY=){X>~^Rq#ue>8qj|GloZlP-C!=s3}F)NOs)N`yxc& zEK1a)8X{BfC>{6@8F(+Z<m$fHCLMdP%k+~dHiEKOD`pz6{7U(q%do4@xjmV`;G}k! z>ARlCBl<$hzG4Sb+&nteS16EfKKnni2c6a(Lpq)FEK-*x5ytKQjfr`zNf^2p?G|1R z+3ys)T<Hp6b9%w#pVC?Q$~~LRJgV8+M^`=Q6R}c#(H(BL6tYK-K^SGEN|^lSLVH%w zKp`rdi#5W|^P!ZDwXCO`Jl@woA-8=~JU(kZ=Rs?2SMu+hYif=~Zsl(D-m^or>bIso zPep0wpSQ%w%^G+spMLMYpN2l&JbZneZLk`M?G%_B+kfS=T1T!WrqKk6E9Y1yveIdb zyF`8<^WOsa>eC5*8)sO2mhX?Cko5a~FOi6M2Kceck?^G>LcGf5!XK)>g;U_wq>fDx zP{C-V)-Bpjt#dij%9uQr1c&hS8rybLFdMS6vUD}+d^Ss&{!(d=;TN>i*C;k-BOZ9? z<n&cdR^{90N99#FoHyBMlwbbt_gvg<Zz6vkFum?!!IHCIiExK7{i43cjCe2w7nF-( zLFKqxsS>HG(pW=JCOO8TBp)o)FVA<$>>^*{8gQScUH=8G+NbT;sNakcM;DK$$1TOE zy2&n`3c*?OutVFKBpc31#(E%k4k?LI#*|P6H<dLFE|}WlL!yRR;@qFYC{bK59@B!; zkYlx6IL)C-X2z$o7AmsdzwXi3s(H^=tDPL$pLjQB*OG}%IN<Hei-!Buc|;prYiNM( zcZj_jc*-k;T0m{ltOe}}gQ8D4Bxj6h*ZaBl7fFIU+xelKts{UgB|)V*H~Jx~>C+|o zSmq2l$60(qS9iU5y`Z!0+atP4@?L3UO%#gMsi9!Q#j~B`hlSp_Q%jk&-P3LUppu(` zXty14pKD<{?GLk9VJTP?icwCDp7Ec#<)sL=Gg3UCd+iGf^5X@)_ju!RFU2cDKE1g; z-ltn484c)}2A*76p)$YjZ*2)J8;(ZiBZy6{JujF>cy;r6tZO##a++n=S!PS7ulWAH z{%W7F>Ey@Fc;40F4uvUza&s}RCFl|_L&nzbLIz~=oYmKNpQ?pv_nA_M8=tGs)n8@N zttiK%V-<%T$2{uJ?FcvXrPraW*uOoB)9gCnRvqv^B>J4E`rIE{eo_Sb5JHrWxdl{e z{|XyhdBmr20KF*b8@QI(f{U{nC8<2LEbE!g<K}nJT5AG}d8drQ$A(EcQ!VR0sd&as zvdhZ$F0iV=mut(NP)RGehm#yRbG7rX)qK63OgUOzy&rdL`4fASLmywkH?#s%AeBb( z@T%N?iXn8gKt>{vEM>vII&bO{{shJfOtL*L);%|vs*q1ph&QI2;tBd&n5<F^hf_lF z7y_=9uvWP*aNY2ok+u6W)aB&fzZRik@Aop16rqst=6$~s49b|Ht{ApL3qV}(4)~n+ zVQstX3i-?S)fAyn;Qul)XkdC9KbqDB*^#TccMfOU28s)zM0&?;sEa`&x4^>S)MMOF z<0y_v(A&Q?i`Aael=pl>vy;pC*M2>KHRtU&oA11+4Ayf1;X|JVOT0a2d=ZaPo%eNm zHDhH5U&>V9IP;qUlkc7&6nw=%(4xQRm&`{YBN=Dv8~*H#KA2RD5Q01YT3!(OyYW&< z6`^vDR|~>yx)j%(>s2fm;fR_u#K6{QbAiZ356hnKaTX)O)XT|9b(`*a)|To}!!FAp z<^Y@-iqI0hGi4`kXGG^umjoBxHi*tfT??aC%6)eWGa$J5&ZT%%0%o6XMIwz>TTja| z-{OZQyC`f^rLbt_k;Ek(b3m$AZ=Z2|aH9}og&P747?oaU=!^bMlRgsuO!2zD->i*N zJCnU@Led8|-;Fs-eFj%9_acYi>I%8DY^tXcfVWI2y4UcTF;iPyDT)lnHSBj4Bx))^ zhQ!{$tJw}B8gS)zKee7&Uqqc15j(u?J0vL=>wq5P1i$x7OhxsnzW!QCtmPCl7AIhB z(#$%s#*5s5HL^5k0DL=}p<&TBpR&1hgRrGdm~3&?Dj6v1C6okgjUfY3tLe^JBR4D3 z^;33|(}>nD!-Vy=j?@Xrc;)Em{EU6y8QB4$PgL~FIh`e5eJ&a)mZL02>y9uM-W?>w zt!*L$PH-a=ZF;j<$qnbpx5-%nd$fQH5!8Bq>*oZ&Msa7@?w72PxUgNdJdKC$KYYJA zxQLpq7t8Rft^5C&@%}v7g*=o_=wT)n-$!&mqMltbMfHtBwV$sFbrd3i_Q=Qq9TtoC zlC8yhjheuqUwt#nPJeq}A%yCF$O**hCOZpLbGOcfQ0$;zJaRwlhC!@n(zbiILSS~x zqZg@ED>nTqBS2RiL23w7LSuk5vT6q}xZ_NVR(ayPG0@ZT3+mVrNm;!!u?U+*^7DB- zc=IqIo|OpzUjNLqn6EEAZQ1kv=Bu&6MKei>(2XfTn<Ef88Tc%EjG@%OEBE+D;pLlp z4|f?2S!#nK$0A4pZOqlOmtrU=J`<2g*)FSz4}yH~x7IT%c4Vqf4zrat!I^?MKhq(6 zgG3a!@iQIq7Qr@<@swnF;OGt-z1=m;fa9h;LE6LSTz-S$mo#rYC5iNjQK=4ny-=4` zQL!E1B#+@0;9GSu(|ZgS7DrInrnH=1?pkmsHm47em=;a*9$R+JI;8;@U8`Ft<_{Mp zMhmYl$4xSr)9x={MxbR2Llz>o{)5vE0K?=jE@&54>sZ`W9dcveX-=;%fpaW}ZLhOV zZ(-vLV_r1I-E-k>{<Q*3p4;=$RWM^+miZij0<pACzoJSUsF?_s%o8Wiib%y+1w@%| zMZ;s$W*66h8;_(`CP9a@md6;0p)gExtrI4xXkCBpUsLp0_FvUVg<l9k#vg~2kx9Yn zHit|+!4umA5`UhRPTmsOu>lvT)GA`I**Tr|9=X{<9L)U|52BDElVs6@kj2`_i_hxQ zXkU|xY^<@&VL@Y;Wv7-fx>cZC!COO)%>*aRcL#DzV`FLEr=}Om6Gg!VF<<he$P{nH zbd=cTl*p9SZMTr*MASr2kq2SqG|(;Ig{GoSbh4|gf4QyVbpuFWU=tSt*~;?x+rfpo z?iwsw{(?!jLOr7mq)8vx%kycwKWV-0C>Pm^8}UnK0d`M92A52&yzJ!uuzwnIgSU%> zwzX+0B8<D8K<u*MGhT$bPYW2{kthY)tAFMBM3qQ9t-S8yvx}u2O6#j(=nw`_@fRR1 zrITY8Or1u9&`BS5U9o>i>G{`Y_v%s`w3CU*0_9F^QnqP{$8t-FShal&ttX9O!sIp| zGlNG&TSd7|vE3%gs#kbuCrX)UP|(CiV6%Z#l9Ajx!go~=1zG&zJgam?+;8PNp5Hm@ zNE?UE?oCCf$<`U>!;Vv(_b9!dZvDtLWyUbnl7Vw5nV?jPn(4}})E!t1S5<0vnv<F< zZdG^;^i|s3{3?^_!Yo`}E4g*(zEDLqE=B(HtjnILY7d%#+z_BH5B?4fij8p-l{ZF$ zf=Gi%F|j4I2{o%hG7xa*)li*M<w|xZq@)PeAL|?>pO^)EUUqz0%Ybx3fY$v<ruy!5 z{_!`}$HM-mqX=Fm>So_?bj004YK&h8Y74(PjB0y>wo?4D4Mc|`&rV*5&y=))Oh&DJ z1DsEG@sT!DblNf^BY`5yUnj1&Q;B-KJMBq#HCi-H1Hcv4_2)d8)`DKoIZ~2LE3k-Q ztG5bentA+z{TJPPKS?<Tn5vjgavm~_JH%wK@$ZGKsCZAZs%%nhE%Y=uc-V9r+Gqw# zV{r|;Wu-RNwiT-4l$P1atY1!2Xf0LV&os+u82KJ88l_IBtM)Qm;WV(ycG5w^#7opK z!Czw=QLV!~@+e~Rl?w92r{?whViKYXwb?%q6Acu-WD_OX4!YK7W5xQ3GGHSpA>ENs zHviD0vtPCjB7UNsdxWQM68pt1yiQVW7j3w@OEMR;c#qaIfV8Nvxd_tzWEv0QbN8x9 zcem4&Q8H~qZ_&RZknq6s>&ce9MyE@ZZta=a;{I5GJVN;Rb9SCwiMz68>R1cPco}SO zR&*H2;Qx^Ggmgez&{}{W<qwQ{k=es~cYEKz&EQY-+xr=<;D4l305kma<G$g0I8x6d z6H_D1m6pv;GU43L@&PIl2Z0|hN)Yt>pK5=96{T-F5cLP@>>B=M-w?&KP7<NG8%#Jx zAO_qbKNfjr2zH*OhJC2(XQgTqjgkkVpj`!5FB20~6F$eBL+<#L9G{LB-;G;&LsNg| zl48#x1lNYXJ3Jay6fTs5y)pJIY+%2dTUojrG09=BmQX0%RS6Dal9I&5iH2H_M@sCx zLoJ6q)L#6zDl)SFymkgKz{VjrS{Yl$!=hdkaJqOx$Qf=b+{E`5K+({2bk<#ZB7=09 zuh3X@Y;i__;;%{&Z@aM21CYp3;=)e5Qg@R~V=?k!m|4QOjs;mhU+syLN03xxlvyca zBME_1v4ozWGJZGK0g*qwXit_JQj{5p$Oy|3N+>WuLGezDnaro|#9Ko+?8NfUu;QHV z2axid%qdn=Nw>EjuvT}PDebwqlx<fI;@(&6#^}OJnZOW!@_M6?es8v$s#aX2RPzO- zB`gF%Nqfytl4x|W2o`(ZI3S!kUk1&C{Th$<8@V-4ifpyZ&v^N2)VgJW5u~(Q7uozE zE^0@Fn<cK)M_KGTCl8gbZ>pEC0rs?)>pxqYQvb|6evFROkF&$=Q+j!04ZfXOhcGe` zdAV<S@lyiwf7BB7e}5j3_lsv7yGu>=sNl4c9%nXeSzTk?@>{Bh)`<)%H~x`u{o>t@ zID_W~>T}d|h4NfM9Jedy45NF9WK_(;9fWlufPt5?Ko}ALo%->K#gq{9L?)yjdSMnY zcKT|q-fzSv*5vXPLXdgAFKoI;sq+hH2>R5P?fGDxjG8@XX;Z_V3)zX0=oc<qa~2rd ziJ`-<NVjc0vZ3F-_>WJf^5lC|^3lK}+h`@G9(=zY`d!}(@iljvUBeJ}%))*+d4Mp} z_y4Xd`4(vzxKC)1z32DNDc*)WIu-cNe=e+=>nk~1{w<K#=QpxexzGn&!hN<TBqEk0 zu;q8c(<AVHr~VG*VZa;kb+Dr#(6<#~ow0W<lD!sCP_AU5>)o008tnq=<DPuwz$Un| zW17QH#n5)5wh7O$%&y~VWsn1M)6~2t+0}m-)4tAM?cVlq^03)i7%#;;Hmp~kuy*hg z6HPeP3~4av0-%-r2#$N441o}u1@|7Cl<d!Xb?h~X@itM8KNsvUe#3}F!a5W(mN-|O zjfz)Fk*^uDD_W!}=`pA$`i$fJx*}{LI%qEtin_{9tAznWmHbhz&vB&1JC1j}^$Xz% z)SNz;#}`eIuMOXgmI&8DH4wv_$OiuJbT~2TA+f%?J+PLC?mNouMqJ}*^-ub3>$y!O zCaM0bL*OYh<m%}=>ioD@H!Nd8$D4r(zi|%Fi+R>-v7*ioRuhnjk_)B`2r8K%iyU!) zr&M|>WjLJSgQeD=_xb4+fn|HNg?*;m%AQkyD3W8Ttz##tjKa{l3UAIYUfegxWZ zS-Be$A}2*)pfzf;r<QHh`E%5SNTuX<S^ru_?Ql_HM|<BrMFOObgPQx=AK9bTcH5TK zpOM$Tm9`B-S@f;2h&tZOl0W`Bmb{muN4%FVV9#*7J-?%DmGxTtySaVM$#lq4Yy41G zDA4aS-9i^P!CewSD(MtD@$PX26Kmgx*ejlkW#=%O`hl4g#7tHV|FpRov8aZ`TL>Je zq?$+hI;d!AOLrc?01p%7DHX!fe5;GZtJMwAI|3NCU9(EZQ9iWEek2wCd54grU9ga_ z{Y@hI9$24wsq9d1uX@vZzOz6`;Pvu<05d?$zY>W5;jMSyee0s1&HANsFf|p-i~h=r zzjyq)_3Qr4uH96#XJ2`fz307q?1LK!S+98h71mY1Kd9?CiqUl}pG)!>q?yb4r6is4 z>&79Sp*$W(4-Vc7epKm3Qb<ZQn$EC1+^+SZVzPhb3JM^_Zei#pHrx`z8*2A-qlZd; zxE%!D38K9<H+SF@bf<?sO+@#8*wZMMniD2ph&wY!PmHmB9}30pjQ@Ad-)NrvAlua; zi`XI8|JH1K;Z#7779Xn&_IS`@|H^Iu*dAMBHpX#Yflth{iSEh3D|Ky%cxGJy&=LNc zKi-aSIXHPmKsOg&@$0UDWL-8V_Q}Svg%JHh&^UR^Oz-+?Y}nbHaQgP*tS=x*>c4s4 zMBpu4!M4#EnZKu2_F0PcipawC8mKRGxGP3GanNNJ8iYouo12Bs{on>wjaB9Fe>|+f zQAM|FYDrPY&yA}}N!9ioS5BQ$Tbf=hRI-}dMr)^41s?D9;AurY0q-hur6R*MwaNdv z+EP{DSJf61Z!dnE`vTCSO80^CK<jBzbvC5ymn+d=S=sOaT+pO0ILT^S;7y@3Z-+vj z*K9tc%ud;sYTJ`DB+J_x|5#WE!vdPpLWBbSZp{$XwU50;QxxqjN%*lfRWP(Kv*l{T zd8}l=1qu3~PklL8P`w!d*a0LG03?JS(vDUTsgrh-e7e_IZ}f6GdN?-{|3?<@<&wir zd}MD>g|4ZHAW=vuT6*-pC!V<PmgU~Y(!0*D|IvMCmj^s)``IewT&Ir*C|<sWKK<xY zZ~5$ff3$x7T}vCgpY;elNFB!88^cG@k9rnl5OXb$x+vZl6a#G+V+0>W$zH}$lhm7S z<`N5sZbYRN+FZLIomg8t@yfNeSF+>gNSq!AK9$Kn7M#cEnb2`_y`g*-D6<atwxgrI zo-RBeG<S9fqO<Bjef<Zr+<#7%f3OM9^yC+0d0t-ct?hmfu_>2bucGz!&EczvTkEaE zd+>H|XAU#j3whA?h_!atOIjNs7Nr)S^aQkiH5B&hT#g?4&ySp-bL^!56g#_`1?U_* z*^#%&UIPJLN0+$PR?6)vbvdMzZ3OZU)}fAQJvlxs_tv1Ao5>+rUp<hGgz1*kbY%+A zmHEAP2dmg>bWL?*xQ*h@I_O%RZcxx_mdb=qTd{?_?bR3T=j?CV^zRPpSZ&lY&t+;# zRH(q%@Bb5z1lN4ta1gg;+ehXpy;tom=7EheX8&TQR?DDfO6ASWyp5z<|4-<wz=$3^ z#dWwt+#2^R_j}wQa9<tucu$&#Zf-fS;54_t45tNz?yOa2FrKZMAE;fxpqV)_G1^iv zM?oC{8QN+9TpCU!lghw8lUT!n>klk2<v~gS{i%-7T*3qU%Fxn6)wW>U%HG+>HzFpf zp@BMMt%l#AOZ3-i)nofb&h~S5t>rrz&-J3LM<+~teNnarq#~Y9C<zdFz9{>Z@jy`= z3$f*a`l`KNM6PM5q9$v=#&iR4o+N@UhXhGgY%wL8w&@~Xw=IBjk`&5B=LH!_f<{x& zqd=1d09^C>A=jkKqx)O-1slb+%vz?lYTJLC_d19b$2U#eu4SAYZ(pE2e_q7s1Zdny zrYmud#HNxi@v1<LKr*mv`4zlmx~hmUuPFpUsc4Y}$(AJBH9=Lhq;kd1M6rei6@hY! zF^wPsS`P49VQbBFH{4&MeQMb6xn%DQJy{`EX}6j@-GTpE=-cup;A44lQSPs!`Tlcj z9JhPDV2SR^LwDXu`b#tDvJ@zSr$cBNvAvCg`fw3C-)z6|9Nl{Nxxbg6i=UGpM!E2Y zFo$BD+(7j8i}FPoKI_bNSS|*+Tu{s*qU%u6Y?k7+Z5cgkzu8%{(dG7WE8Jz&4nC?4 zMZgis;2RBoCt&#f_s-G0ZA0VPG5dqT&W=gAecVDDc7F{t>J9tia684dVWc;*$0Cid zt*x`j>gwulOhlmEXLh{Mgu%u}bZZN`+0iUYwmf1=T0|%WVVfZV9%dUK6;QJM5mTP( zj3W*vPT1B+gT+19#cEd0g2;+d01-8IY||c}uqVdh=)By`iHB6jbnTdkgQY?L<HvvZ zlAE83ExLL5p+kbg`qLuR{|Hxu_B#SH%@U>%nL_m`x)JI^xlNs%cl}gB6iS0V8k5~0 zqh!(O_NI_*N64v_!6Frm*-{mRS2RsD#foAo6*y`i_Q`nyAKxUm-b(&MaxjyNA6`M* ze=E8sisjc4RVA-0i=y^0eFwhqD7-*@#FJxkndy~DeG=PWjv}befHl$YzhCzC`4s$r z@@2~R^gR1J|MEp)<2xyfP4^$`{JS~7_hs^2eEH0FWatvzpRr0Y{lJKxIBySr5@25f z^1Gl#!2?a;;)C-bxzH$JpCo=qY}y2^<f=hbGju^yL!#fQlZhZFsdwOtqw#gLh;zBD zuk6uJNP>vmC>uJ&6lD1e;!M7f%7BnGd_u+=mra|Jl(zIh(A`*<fTdbt)(^(Sn77)# z9e~bmKSs@Qd|Xy+VbnLz0gZqmb1xa0BU6!N=!C%y6hn{B9axAhz}dQ)j<{?VWRc%| zyWwS2Dl=^A9eVy^$CdYIGAvAn6R0zOoT+8AJzLFqhTDJdz(=<Cwoq*a!DGJC3byg^ z8sMpI+cM?6&B1Qo^w(2*@!-F=zP`0Z*9Bj){?FLqGPK|oXTTih&!1l%4DSASA@BY= z^Ai}n=K{y2`+I)_p~T`(8?;`L+MO;S0BVpJ8*cKlZSn^)un#3zy(NLDm#FOT(gjTH zRtH3RR6syW5dGAuOXvg)JkeYhA^D-Dx7ldYeR+VoJY4_^ydfmz8vQ^g3E669-$eED zEE>$-K%bOm>GII1fQba1v4GfI1aL`e^&LD^W-CbP+KM`LiG-n18%`Z}I{?Zcth4+i zs9n%xucN~fj}^KVphR~U5ajf}{tJwL?~*0KOU=}>Hc!Q}EMmGHHNu*K^?(=X-UQSP z1A!wDi-$8o;zcDCiGU0`MGlxm0!+fT9VB!&3Y?AwfdImQ6CR65;)x|F0w&l%Sd~mo zM1p`IO`Me+tRXsSFR3n%44zP?XG)?{m#`+F0MZe$j<JaZKn$uFiF^qYI}K;lzenL^ zR|HZZx<nXqjFmcq>@Zw7Xs{KuJdY*HN&yA!$$TW~B>w`1CA?@T8uqbNk|os;d0(Py zi-GY5e8h(uMhfG<yhgDpB%KD_r6U3B3QyTH54i)3q0^BDv1J{&wj%JNB)I}z8w|il zQULVGf+|Rat}ui$5g@yXkftHzsF(*bOBy0F5Gjyw3IpjSLqHiwo9^{s@^(&-u%xEj zDX1G10V}eTkwa)7p6&%9czpYfbAY+%ULd>nbySA_o^;s1>fEbd@!nUUjgQ`N<GFJ; z-Y^_fbbpA%b`$LQ4bGyWk6dkFJlg2dzsb(=dyjYSJ2*FYaPGs0=#@j-;c2=8bNX;; zj$Yoi-%Y^wjqG%(#sFiZyZ~b(G1!LnkrngkUR_nPw|9?DBW!7&dHcc?=v1~WBNYp- zyRek0Xwb}G(tX~&>C{KquOFa`GPmn@kT}NUBAQhmC7vn^)PJ(eW|m;Y0?wlVzYBm0 zMlEoi@MNPZO12_frmWgpm2Hxu$Ut2c`nsG#Q_h3~T^@beumHQN=GP_BnXqcv8Ra2O zMGrlMRPCYrM(Mq8`xiC<PqM)sL~KiwB1(3n1GQrXu}MTaZtH{jSoS+Gblu-xNoq;D z>gtkAfAmH=Eop=(Ml^0#pj@a{YBfSzv_(ac&<5O<OqCaXbrHJE<&$^h^OAJ$t(Vj8 zUjRt~xKwiNrWx|cQ6y=U7gA45x|{DLwPJ0rrKS*#tppfufDAy5sxNg0&L~?6;e?8{ zAsl<J-Ku+m<H;XfU0hsUG+XwP;&`5S@9_F}hgSxCIj9XTJh4dM`0C)XrGFh>zkhgT zmrV;(6w)mbkJ(ZA!4C#?+XF#H*sd6fV-4HhK1SU7&l#>R{2Rzilj;w6I#x`9a)-j) z_@W3J%H|eo%9d_Bnh7IZBuLWZX`u+>SEwzHTNVslkQB6SH__#2lkRujrI3~W14)=M z8?p_H{NLcVd(8EYx@~+n|6m4F24IM}2l-WFZ&vAcmF!-l(!T2xo|_d#Ykc#r_ORb3 zKH1doW!tZ>!xlTY=npfjpf-Fu(1Y8pIljjF4%_0Q4M2#k2xvA&+v~zS5Oto28fBiq z7zOwT79s$T<rT%WEnr_=wmI3)<vZhxi{pzqJB<nN1GklB#<<~0U~iNwLrf$hyp2<X zGuIP%+dsAZ52L?Xu|;=GW@`r;%waY0uI;v1RhBXJ=d)1U5um&F&*`qKi)XXunE%89 zVQ3$@h0W0wK?9;IutJ|WJ}`wE;C@iL0p&r9(!uo7=kCs_1E<cc>&B)TuUS^?IPn_$ zjgR;|3(?K;q}=}pP;){xRzutVx>{DRwe8dLxcoKSzD6BWzfLcXsn>wc^xZKvu<ZcO zkO!y#u(JmN<(GLnyE~lKW?O0n3?sJLCO`}+ddyXu%>nMjsK09^*-N?(aAAu55Lmmz z_Wat3EusCW!?vpdW(!Rz&B(lSgTu=+bPM0#0Z9fj1FMKPcq~h@uZW;+8$6<-gxwPO z2MO9Z+Ehed<#BLh7wJ0c-WbqjWunsT|23i$E6}JI0@mJGrh7}vD(gDDjA_RK*+PFr z0XhR_G0ZmANPH0(Rv!8X>}ax_3mSp|U#c<G61LKz=hEOy_aMBm-hW~3oA#d-3X=su zHt{RwKh}G86~*i87uMFEwC#QL`efnP<M^lM=exb$IMp=eUB9I>x^FEvTrNxH6&_ta zJM@VK9#I*ISCcLHsTu*`Yy0=kI>X;)qZXt3NE~s=&x*{laEqFu)@ZP~9YYx<>new6 z@U_A5GUWxu%|aZ4x6|JtyNt$Ay#3CL+#s@MJ~;a0CC2u{Pq<n2vLul!x6^<7c8nXb zrM`yw1~c!KZQo65vKamZ*}#p^4|lt>jQqDc?QrMWOPyiZLfy{DFP<gto{+a}i4;`X zel{}}#{vKlS$F(mCgr*kRbXX5$QCMN<JB?KwRAxiBwdv0&vpRFg3d)GO|g}9wOp^( z;!-{UaVLSGlSn|VK(#T|GgFmPoQ@1Z{~L+76@ab^pU;=WKv!r_)uW(Ts%nuY!U(A4 zV?WeXo_8dJn&w5-*KCCcX%4VL7ev+8J<XK^3m~DPMnT@T96Mdi70TsIDl`Fj3dC~@ zxq?c!O6K$*T5C4}@^T6K-6`%y?hfwNbY_pr^;WaY4lrh^^ap-q4~`6!vn|jG4TeAW z!G5y?z<D%`z0`9%H!1nqTXl5awpVTYA`MnosqyAo**t6!8oXya_KtDcv<MB}x*hu| zQywQ44Q}0zeZ!QAb(jYKdpq_VGYqlxQOpjHCka4sa67gz$ce~*y&bz}kiuc}ZQC&; z$q0g1ZpTJ+xrpvR;SH7y)TtYB;;If@av6DSxkfi4R1>}ViU(6=GrdTa%Eh!<PCXd5 zzWd!)c;k%>S*-So=|xca7SqMvYX7fVaVxs<#@+kI$ZW5RVVY65X(l_rP#IdO57*SA zs|Lwpd7^mRBF%a6w&H}mc-1Osmsh<pNqI(|rYoUZ)AHirHzWCN%-iJl(tS;a(!oMh zG=TVK{JlGvi4B=Nu!IW8j6_`2DE6WTGrB?eJ)gYCBEBREbT_>Qu-}|wTz2*{L&*W> zZeXfWrEK&5j5?`DQ_p48DJ_LI?!U3u%kMD_s*3oa-hr-hV61!Z;luZK#||KN!KZr4 z+`;{aZtVYQcS>LAI?mFRKG#GebfU<RqeyUPf7x!mi3b(}w7GJ4?5_9Tb=T273x`)W z{_4buyHA`z+{)pFJxA|?>tlyk`seAjyHAYRT0^c%S2v>3Upb@pRm|+GK@-4EZ3@$U zKBJKhebBSX51mmv>LmTTlnVBJaqKlw;xxWR9Ks>OuX0ut8m|Opt-S6$p`6s?? z9O9i4+T5fY(e-=D%14p;>~5k9OqMwy$I6Mls|??6vX^ze)2^3EogvK{@#)@;?Tc$` zYZommosF+5^;~PUvu}U<ly$0fRcm>DjqdO~UaMyd?&EH)r@W(B_*tb_b0069Ti)F# zb@rQstpvt~%{-zD6`Jj#qc=j2oB^fx3o{eK-}V|OA31aTCY+vm1jS!?Z=?6O!o<q$ zXC4{iuq{Y$W`HE85UJD?>uG~d{L*y+mD<n|#HX7o=9#<ye;kvPQ@X65Qlv4AHQrSb z(q;7~Rn`##O<co&<yH;(;zdQTx>zz^C(0rcb(0WNhlnh`&XDk>`!f|s?K9nao7sLV z%;Fm`RiZi6AG&9yl@;mi6`<=~u@fEIaK3lx4Hg~FRngxrQaP7dxAroN4v#6LY&N7z zep{?FTo9f7Fjpm+yczrqE8RqUpC$eLyG6-bI(gy)ObA~+68^Lb`nVz;y6VIg5+E(4 zUU~g>XjwA*pFus%ka9OLx&0Bg&)ph}zmrNhPr-!(Ry@orVri5<bX67IHE`#*{|aaT z{+V=5c2M`(A}CgcouwFX_a9lAZk(eFT03*HLY?YClG<eMmd9?HBR0kFqH8Lf{~v2_ z0w>p1-ig+^`@Y}0wXa=E@6}aZRcbA*a!ZzFEv7A5E!mds_JV9|FwJI+19lVJ5Nt5Q zfFZy@Cqn|kBna||31R6Z^AZvWn9U){@69O75QdP9^D-nPVaoG;=iaKWZi$3n-jlj+ z-MY)U_iW$!*8k@i8^~R37{8LgZ8ws!-M8iOgoHdK(ZpE{(4Ix)BSyetw)G*lX_!^W zK+;uf*Jx&yJtS!6nXy5Bf@fs;m!zc3eifE%QJ>RX?hZ#|zR~|B3UByZa#H??L?rg> zykao7ah^U0i#YSmD+kbrlxF^QgpIX_YF+V(P~kZotvG<iE`4Uu$`cXKwM|9{-v@;u zHhdv6l6e(+7O6&7lD<HQq2It+N=7re8-Oa3FHA|&OH+()d+cX<8N|IQLR5N=S@)Ap zV2CM4`MMOq-GTH)qOnR^<5cp+Nhu+{jHKa4i~St0Xv`T9sI_TAWL70}M&KlU5ZP0q z?`!A_!2%`8Lq8u6X-O3rFR@C2_q%}*pAVsUJxW?C6nB?)aEKQdMBEoQfb0zhnEJI& zcVqoR$_q@kQen-&`@NC<{`YOO5NLeTGEFPVYk_7+n#A*Dee^h|2L*F|ef@^{hMok5 z>D5&hzVF!f>qxy)N+uK`RjXWAsig!Zq1Z~?2;#e!2PdlI6L5xC6UkBtiAZw{JQTY( z@}(}(yqx7Ks_7{^Q={tEC@mG$atcAbTpH$20EV<ZV2)@Kvl2y&p*m0Clji9;^rwRX z;N|&vb3a3#v=}BJOs$Io_t-rg*W}o#xwC3fRkd3+5M153nf8I4uskn|ij&hc&SOy= z&a-eWZY7-)Ikw0nx?q(j#2#Z3St-Fb7z!gc&Qg6LLpn+-9}rTpVY1X#S+2#h-TB)z zqG~1OCXMHL55`y8n-B!0QJ&7BYLMksj$`v&_#{?VOh+lg<Ycr8Cv#+>hKfE}Y~Ukc zL7$+OZ#L4=piF%%_Gs)avA4yZihUS(q;i%ZSO<QgwK$+q&L~=n=n*VNZ~zGHgs1=! zs~(0IZSCW)cGr(&fH1COxJUDngh>iQV>JcStWiHQs+~vMXaMKCgAwVE49-&dGZKi| z)aO@_ITmUR>x9l8fI|gKGV_VRP@(liLo{Y41p%9!kyOu0!l?9;I-KKqRgz@Omqdm! ztZbrOFN~j-GQ5DIDaf>D=JYr+r-ubezzi~sCQ6E?q89r+qR+vH<z&J5lp_#@W5Xkj zIg6laJRRt!#Br+23Y?~@DHWD5Ld^a9i6lE_&eC)Rh_<A<b~^8QszR;+1_Fiw&zhg2 za&-fK-*@E512^1oAEU^cF3D^M1Q=N{Y+2<<Z0JLQeb<gHfShn8My-!srgay|&bDps z=oHL_j0v^6ehBIx3}V834E1VSBP}GSWCUi6+NTaA0UH{`A#BVKh7AVIB_|X~)LDt; z^v_k3MF;EHqjl8OUp2U>hP^>^Xeu_x?MIG$>xTQ5SXoNQ>Tg0bDzN-BCm4R)dVgfQ zJtpLD=Yj2r_!=6yE=1w@k*fuDA*l^7p!|OrXS8L^0e0TWF(fOc9K#Y-hVz|#eQs)Q zAIh8@E6uDNSzJEQaq@!3@=TBzwf%sU;8?7}K4ALEqG!mdlHw$<Y*uIYPo*3|U<?o= z-2?5@$L9~MSlYZ|a>59&xD?e0AyM{|?Qh<lr?YAF&AW@t;Cwuf>vj-9B|LmnDd+H( zS?e5FUOcigBeN`Fcyr&}RI{FU;vA!jmf<8hh9rU2-+P4CKrUE|nUw?c$4|EpxSRs7 zDhN($YX5Atd1ca3N-5d!ib)w3{=1w+I(_fKo3`2E{n!e|3cFrVf_1cnR;d!rJ&M?V zm5>EO0gL)8hTvKO+AgWidXYs$&~7I*TXnj7fa*3otx)LqFiF7tR^(^1)<pX>NmY4G z<!5qIx<no`O;$EtlT|duJrY+Cotz``ai9jG$g=Rui1V|>)P%co99>N`*RdofZkn*V z>ZWPrh_X8a)4i6l45l!tw)Rz<t%~d!F5!8}Bc75jm1hZ0WZ;peN*P%pK1OG9nccaT z%FQr>Ww}K7RAs(Z$!069`ARXuJKUtcV!(h`0&$oIts1h!KiN%zYP*Mi3dlo~T~ZI( zJcGOSvk%9|k^`>*BjJy@4EP#w9#V$-3?#?mo6>chLDfeO-_)F$nu3c=-SQL0s9%Ah zS=b0r#MIPG^QMTeN0~AQ{TU80>c{AZ-b!=G@*q0gB5ALWWzrSmn?$h`bWVmZVnNBx zYp!X!RgsA7@2eKV;alHe;aA1Gye+nCx9oCz%O1Ph+vu&MF&53RtE(Fu7cWM(<=6(i zmkFaSNo_|%{k2W?aMahlH1I}w2u(x9bUnS8%jGT0S_{T8E5igVshH@q*)-5ag$it2 z;~4phE=D(XF{vEI2=%G|RcM&6qWU*VkiB(M5OLJvDRSodpF90JHs{83xp;$f+;pl^ zaCE~Vc@GbHIp%ez3mgAac;tG`E1*~B^qbR;TTNM(?mEVsoD3c-c+Q!J1VY`7BKjVq z?{;JCme}pFJJFjHK}kY`EOjUg;{HGZxg(M~%8rB)Bxv!$HK5$yI*xXtZkUrHx>{(? zmoVve96r|b2Fr-bZc$Yj$;eJ*6S5*E^D;>FEM~peI1z+Xi6tidFc_9sYG}sAQ_l}_ zCjQk~OC>_lPSp*!l+XksS&pC0`Xp_Ns%|KjpEMH^t2ih**udVxUQYWjgeB-Z14m_s zeX9s7KtXonM4;E*3<a+iM%rdBc17%T?6%k%j0%H^ngkjJ<gWQa2<dznmN-B+X%4uE zT9dMQwXzVYDZ^w=rP)EYl5Q*R$0JaEbfcp=-l_w7^btvvHC~zKIpf4C$4^UwDoUa! zI7VI)6Q4?mQr>WcJ+%x%<S3t%84~B%%zYfM@WE1CP<V!FxqqI44rd7`5mb!R&Cj!( zq26rC9HaASOoollaFTtq3QMQRspeQ~C6i2MPB+I)m2)yeVti?QX0e_SnAGjIX2JuY zd{d086E3SMemx~gDOkn2ux>NdnU5jcu!4&bCyjQ~P(uwvBUHl%VxGi0h;vSU&12ZC z-^-}VAL_M?@imK2HPh9Ex1e<UzZF;EA35$N#<IStiOL@vnVSAPma%s}%QD`sT}uDE zam>XqqNkB#z1aOUE|!`oI!zSUeO#H*Ujj{Th?OQph{+(WhA@saH72a-u=v6Ci-eEX z&T1KX8FbD;mk2DT4da_$g8dxcB$Pvz2QDM0Ww-LuiYw2a{{#Dq+P+DJ)eURRVj01Q zMbc#A2u8_jh6)P@3z94YTuk6n1HFLoy+`nT94_RNJ|2L34V_gc_tmbjNyyBD*yaX` z>Y>=nYQVx98o46jRw`~{|BFgf%%8I@Ni;2|;IPEACTH2e@Gy+CD6xXhD1oQKy_hH) zSkjlnseqlGv^>JX4VEcNE%wiusS*P#I$Q$H3|9vVqYJE5EO5erzWp}&1=!Om9*$T8 z4nx3rzeN&|KqPPYmmB}}-7-<8Z=6<Aa{s-jUPIV_z42dEIYkc<x&Qf7h1f8MZRk(f zru=4%jG!BdEgF-Alxawvx5y1JmWxaaHv?4(Gmz_hja~zpK`ZWe97{8+^VLEDH>$-e zI$Mwgp8eSolL%SE>l=*?zBK7L=#Ak7=)*eZe#0FLcQ$y;WWk8M;Qelx66?v(iilVz z784_DF*jC;y*u`?*l)+a8T&5K{Vd}lT@CGOouJvpc*%IH6Znxk);^}<(P%FqEmg4u z;|Lc3in58WyKtyRP5%*w1^h2nOTqwC2{Rv&46H1{BD2k~kz;~xwKD`;z*|CSj0&cY zME5=Ptr@_PQM)*mRddX4ScnnUa}ftP_52AFaMA3r?P};+l_$+k6UaZX@&6mWRm4e! z6g-{n18=B%1)@xf$R+)67(n=2ObNEmG0UB68BVu_q=?tT*b~?QNIb|VjKBvVfU*e* z1S*+G3UAunRHHFBJH^>1uSf(Af=J6N0WUD<d20r&&|lG6MsIw-p)+hsH|nixT6IGU zR6Ac!!LS9E6C_oR=kf^I@VB}x8(Ox!RL*LKZ0r6nz8_YQ1P|wYK9A^?ma!lq6(bHp z7sAvcih^RTWHGEQvgDl809KbC!dJ%EpcesC-*CDz50?qR9fE8wh#Yld#z-#0rV?^W zK!gpR2q_u;;XJfViUM%<tiUK1FW;I0kpx<Vmv+e_3TmSGe#VkD#!_W0iN)l)*D$_f zqU6u<rs6Z~*)*eZItQ;IP)jGxi#ZbWT#B_~2V+;oj>cXM5_qfvv#Ho_1>J3FUdy8y zU|Gb}8BP1zy(Hsnt%c65wGeWO+UI~M4itNS2~z>&aVf;ngll3sya=U>8e+x38GINy zZ1sP1L*te0t;DfpD~asc?)2Y{<c|HoXxiA$^zTkg6s)>s!9vI;WD(kxNu@PL)+`6J z4JZO<v4swtwsYvn1s%#Ht2`^%Nkcx5E}Q@B(tNW*|1E{To9=EUoV{vWw%Pw{0&cre zOcP>*=&9Lojhc?fEymDnfrTMyNWyqYGbD}?ZNav3rWH3wb&-fe6>C>m3|DdapevHi zwY6pIi_85loZMW$@O-}q!rraqz^~@tcVR$ZUx51_iJg!AXIw=?pGGh48H^}|OH{E_ zn_(!U72+VZfXPQzazAqafe0i4(=#Cg15g7b&Os+!tEl%~m!eh8uvBBWpUhBaK!bz3 zs8y8q{49y{m?ja{X&?cepcAL%#KQy_NEXOH8CqP+$uRF_2gDl%cm%Hhycq{B4=AOp z=k0<d%?RixCRrSxFs&L8ES#4h?eoB`7#ZkghOq@T4on%a_yS`Jk{k#LAOW%*u;{fx znCUqNT|xxTtUEJl!!a`w$Bp&>LQol|sPefS5jtF+VKh+`Ei;p}WS1w$Gkbi^hMDTC zp5ZGF4jNZ59FVVoTY|T96-DA<nzC%1t0<;JIKu*B!U<E1T<~NYnJR|UWJSicS>Slx zk~CJ8G(j)HvNi!rx|+ShW2CqnM;Ly>CJm93l9&usd<5yw9-eikGkH}MZ7U-R498V7 zxiZV-j41EHpOXja__!tZMi2qIz*C$9ISJu9=Alf39aynpDZs8rMkNdkuFb=02CE+e z(RZqyYRGltrZzvYk_4U*M%YuGOq^;gI?%1y?V{jOB`3|{;e#a6qQe6D85;D9id!5& z5m#H?5(D4~r5OfsD|5IoggR?f4pIC*%seX!dBnfOvV0g*)KVX(?+-P=$H04cn_>tY zFpExR@zA`F`Z#nVt#)CQvdFP@VDv^S9}GSU{=xdq4pNnP7syZ(n#RSI3WX-vH&`TX zP%x~sIMSg-KF={c^Q!@Lp`ehwVry|#W6M*5qCs~jEv6``=<<nfjj#;pqKrO7KsYc5 zEfa7G!{pOOrVQksmnsOH1VjO;H2D@IC<?3zx?rP*z_nqRh#;LYVojAF<po}2#XyEC zqHRM;a{>=iE80~!4HZ)a7<*QdbVk5TDI~7Jq9Zcsfy!FEBys4GDFOYL1(7h;m<KF8 zLu8dW3T6o78Aq^*&JdGHA%+?9CWKKL7RV;ds6dt!Hi)}Khh~=;(UVi201FNw8casQ zoTJKNhVP>1Df?zmmKllV@jQ!xFAA?hpGZ88dnh@pFeP#$PDQ5wr@G9FFehyZSX2!r z9N}f?Sq0lf)f^DWI1wEV2@mxUTvjQFX@yCOPDLupsZu@5X5+fqP=LLH`onCCtA`!i zG&xr@SlQq#24BS&FtI5V$>@Zvq$LsB2p$96LCMLBLT&<=XqJ<+NkidO!%=O6g~gXO zc~P=NSOz#5CM%EFq6W03WLg5pLR&M6P6Tuc^DxI8B}5qK14}K#3DA7d1!!Roh{%C3 z%38Wf{2VW+IuM`nyv~`n<BDkmgf9-3B=pZ<RK>@P#xS<f2^Lmj5oT?FQ<f!yK1Z-# z!)Xq#6Zr%uDMG-=Wf_PZNyK8?V*o2#jBktd9-nv|{+`Co<0H9K-B>C_Js1I3M9;xu zGhn+^KU*u-isUIJ?e;(Crj?>%k+`M&(nHsty|zI1#ruCl&MI#IzoFKG6kVmJ>-{f0 zG&A#y!609iPgcl1=&e-oiwM~P{QOG)$FI#j{dE5RZ%^D0-?{s@V}-C0iVJGiTNEl_ z1o&|e!TPwEBdf96Yb2~h!s<VZ+eBmIaR1p0tE<lz;L!7U2&C3Tq0s-*x4t!+?<Paz z&!dFZLlZFCWkUN3xkuJC`90s#<fF2tbMkECrdiRby@vk&)_d^e_?RZo-qe_tIc<9k z6-&KhsEw<;^ToTZU?5Ta!h^4)FMb}kXA0|uC(bS{on3m#gAe}Gj(7jg5}p~xG=_Pr zb3?CMG0J4q;=|v54b|!U2stB)zjea`3oGXnlC*Hc&(=PjB<s?1^7YpX>~qq78TV?b zkA&@l31UxC%!$ySlZG3SiPye1H~1snksl*{g*kfz8XXc8F-J+0*}@y_mg7X7UR3() z%HnkC#Ol4rkKcRz#fwe#GwQv@?rL?n;gRZbJo>(JCKDUvw2kC$EVqOh4&7nd)oo=5 z6wSMZY3yqh&O1_1cPZlQ*NW3}|4-%VVs`P!%KrT;`>$=*<#)+nPnAsF_w(5U-mmJ- z!ouYK{gWmTT-8X{<-3$U<?<fIdVcZD;^LV%WaII>>$(<5mUrwkdopuyl(%Fq6OZ(# z7ikP^GK!4}J34|fh>PU_rw@6!*4Z=O|8eus;<S6!Waq?358iRd!QNjp3-$3mhnh17 z`O4IlciwTwvBBI$ove*s+k*_K#VDcMrzbycr&4zRDcq9PM#}yy?tR}*(Rs!IkM}NE z`%ym_5Ak)-C_LY;RToJ-&vc?4(rktDZV*Q;DXeKG5pcgl-jPnM=BB&jJ&o+<l(@&0 z2#GU#++&i!s>W@QX9C7iRiI%kZ`c!wUrQ(MbV`j1t`(nG<C3bLfraiDRF5;%$3BUP zem}vnZ-(m`SN(V%q_By^w%A-V=AoC~7N%<v-isHDHIb}CO`oGRov>5=A08nSt4AgW zzf<<7SJzi}#@gi(!(!;U-SW%mgIY%aQ=ow`e1L2KUl+~4FH(PfVit?y>Vb&^tKwki zA76j^^y^O(i+b*Bqi5*O-=4<vBUlrt@4W<@mTw~xJ9+m=hrJk6L#@Hjf22PZJ9Xpa zYhE+?no*x_72~0|`9ZWiA*@5Yg$jw!?HV87H9lWkUYJ=}t{uMZ@OnM_RJM+r^6t~p zi4)T4-OZ(?*a&?`%&9oMp+WKlc>EUadqg*F&9mJa*^op+`VR>1UHew{9q!G1;Ah|d zc2d9P1Nq$QcP97ko4jTQNYM9BT^G^vr%5mN?P0#j-qRBkqy34VCumEkg+fGR4ibaX zK#k(uTYQ;VZ|^yIa`&E-CGq_ycJDs1@b-I)_u4|~<bBs&x2Ij_7x3UP*CC~MKo#cN z)1=LliT-nB<K2^!@7@eC4W1_-f;#Sr9l+;?W^&YyPEuEv8s!EtxL|&0O7Bpg4b;B{ z-O#d*hMvKwAotD++$1M;lB&eWr+{-X{f@*<^5QfhGuuyzrr(x$dg_adQ&WqRPnQJg zDquBit}97h!Sp%#Dw!{_hGeim=@e(~o>-iiSd7I+<MAbm15gq~5XZ>+#*1E3AAjac z?>sZV@b%QGLA$(*(#Tj>?AG=pE@AM8Zz$gTj)jGH+*>?)^odpNO>fdxpNRBfp<l8c z*(G2ebVohef`KC&3uivsSg)h4aQTXMzIgwcGp|2$hFO2x!w<iueZ?}GAM3ed|J!)< z^=HVrMq_L3+n_$7S)|tkOjnQ>#M%H$m%51I;H!oK=M-k0o{5L2zF0~oOUaLvGv4^z z!MSlSQ@;AHtH1g22Nq`i>h!IT-8x<MXBYk~QA#9Ac5%TT3mS+J(+I}wg<|XKtKa{+ zQ@d`?jQPi=58is~!Re#%vCPf8PHkVC<FRp!;fKCA(9MuqwJ7FHH{iXX8?plUt~3HL zptv9u<}p-ph;edeb|K+)YP++|iQ~alxvP8UcF)Wl5BlG=(tIv1Nu(8IEA1O9ZL7)h zijs>PN+uws{FNzhHtxmY9{>2E1Hm=HucQ-c*^K8Em1moFXT4L&Bw9oi<9Q)%<2#cG zlL|9~-yZrhN2qCGK5+C5v}^XzeVLCE3bm+rn=h0Fs&4B>I48akmSB?h(DwmdzS<-1 z%j7&Tt%9Z)aZeVAC@*Jb_xq}%@pAtU6lCOiSusUc9nZukr#;NK!U~EbIWJ!%Pw;|e zXiuLVR|Jk;r`xwq$E9Gp#LI>%{V=XNiYf^5!wg2<vi)zR$T`k%HBr%2=eI!8WoVvC zPMhF}Au8z2z#)=qW!7V0UlO@JjhunF)tKb6FlR6XWD{PFa2jGqp{?36B{m7;?+|8M ziVb+XRx=!M2x&qU8$-&Jr|~hZE@I{Tp=TT)dc1bg31<;zRW&FHWy}SSLS!w>FGVi; zmKlf7)b9Ft<^YrR+zj_$R1-7LI<Ti3&{UI$ymY3TPWR7Q@wmmamMU|6pt{OG6M?Zb zh35iIk(C6TjlGb=(&B~jOm@8Cr4#lwVtyhYI4_dOV#Z0kUOHV*$?-xQB#l5-6;AZl zh`=Q@D28V}I58UAivE*T$~6f-YIOrNj|#je&eu@>M%#U*Dt4MdsC=bSo|pkC3f;M- zIenZBW;Crz7N(m{O;IOW?D78p7|-u|Vpn!jPm5COjgv03^oL8to$}^QYvD^*AKG{1 z+yNq$biH`s$i72Yr)CtT>5v0gyK=22fnX^J@!y}{#UDAscRI;gRjphi8^C%(^Otl9 z7fJ?C4<!R>WQ|9RfF#ZEGLA?EJA5qSZcy&<Wu$I3>YOUJL}-Jc))Js_==f1binYY9 zcczJd?r?F}+%=ZC_fKH&J8<YC{k7e3VvVe<EPn8f6J7i98y;lVapxl|iyZ84^QW~b zDrCq&i|rsxV@@_dd)Ka&m0fpz_P1WPcV%Vo%P#hmj}<OlD11!mi66lo;K9`)oi=FX zPa!rHn~v>@T^YL}c4zF>h?_VtSkSO84DO}|DZ~f^o-SUaBz>05p_W9PqZ$_KFdsxd z^a7Fs*Fzo94A)&`5e7VR=Ae1RFoc)XFc*%&e9a_o$|WYJ8I{v8`+R{gbG#w<2<tBD zny`Qvh=03VP_?}RLnb9j<mU+Elx&vytEM!S$Ow$&f?UtmCv#l#DsOMfHVc}@mvrSD z3PTDcZSnzU>9<}Fe5B(TJable%YrX~^v^CyhA_)@b>avT<8Zvhm<}U~4q+IHmw*&V zON6yc4k}pYOMKcX`-HQ+vKKVRI@w(x?WG)75V#<f-!J&`q|Ig2fWw4rGOn*cCst|x zgBxP!Vt2>xjXfB9bL{ajgF?4D-z@{B@S$l&4ArRHF1K@}6%ShTl&GRuJeqkWRB^Zb z(0*GUfG+#3b`vdFZRoZ#^cV16h-gxPPc8BiGno=Xp5rRy<02@6Sj)uvvEMEhZ>^@h z%%5@u{g{BL3KZQJfh{>!lQ`C4FnpE;YRmGhfM;pstH*JIBnpfJq*?l0s(Nd&_=-&b z)jbmHeS)Jgyb>DxgfSv9y!3r+ju&Eu>Z_}%>T<^0!z)l2!=aWN$Ogm7*y0R>s3R=T zqm_$C1Uf>>s4fxUArwRf&kO7_6!Pk-m$A@m%7+UCEQo`GCK)b8;HCc`%wo+A@fKN- z#1ElW99zE<x_>bv0N>Q-P6XC>3kP^$xT3Hz<v|(~>O9b{{nS@t6O(5-p*?m^6wi&d z1&(8P)xS~S#d2rct~2S{h6==06jTIFt$6Odr3PpUH`Vkf2N$T^;DV|<dI9F#*qj>c zK%qisY|2;)_m&K<4$=*$YkrW)CgQ5j@xC`fOed#08Qsc~f9HH`hfmWq&1lvPogPI$ z%KW{b?I0GcV6sAKmV*84XF9DwjMN>oq#fl4&okuLdCB+$15-?AKh7|U#4*e>j9>`N zGr0R{Rj_At3A+0ehQz~&c$y?c{ux~+X9*Gc-!vrVdP3${0gZFFqQPmE7jZzI;Q5P^ z@teHJoF%gU3=a~<_1j{wry`Wdxj|<MK@}aXy7=md;yg>5RMCv6@Le(<q~=cLtU$4N z$-a__r-~vl&hT7qj)>}2=Tw&0m~Yf3XU7kVikZk1G7~4cbR#pSB@$XXtGS2w5>~tO zD#wl|(-|r^gnk(oYJ$4ePFKjWKC%ZhOn~lcp|wIF(&|;BQ79(JEd{kSSvuh<%DAs6 z_4VT)Y}Xej#`o8cpEU9ZiC0&Yu_?N})Mq@3dJ)igOM3{1=D-ghecRZAUxpX0&R5^9 zzVEGf-~HCR$;NC^Q`mZHs#r-&+(|o;uuqqMLsyH}W~<q3b#%QK;VI40TxTH*7^Rd9 zJ=6H`n=(LAejJ<zox%B$Tf!CcDo&7j(GwAh*-)%(%27xI8l9DSeQ%|@S3^amDO$&7 zXO0x33-qmfqQ&zD7SlztvK|E5K|^GuR4$j4ftf1RYiH?Eg<i2uhRDVyFzU67kiRwR z;t>eYHzJ+PG*-f+jIM}wiE20Aig(cso_f#FeBwa4p)Q~1n4d3|awqewFfOY~QiO4- z1Kqn(&faBn=p;S!hEnOEH7S@WB#AaGZMoAMCliYQq4JB%c_tT6a7jfJQ8f=NucWcs zF4udhBPNB(+ll;Pxag3vSF}wrC5RrUrQO2N{{YwVF&O3ZG?#s(mV!V3GEN6H2WV%f z!@)41pcgs|C^sz?20jOIBWUy#_p77s24SG&MZDz5s|Fqhk*h(@Eu`9ojZq(idk68# zTRuumED_7Wcs+!k)ihac=+GRJ6>8G$vS>*15&NA*2Q>7U^aYW6NmBPCOx#&3%_C~) ze5bok_}2nOY>Q&5+&&5{{@&N`-3Qz&j3Y(t%^wC5!xVvUunVHXw2EjOJ<=u{zd$bR zE^;i<ub90+f}sCDIgm4mgqu$=y_o<y(%_X9%Q__i_dp02%v?cYmv8%!GH$hcZN%9l z7<9r|)b>u)=7VptURbA%9&T4x@vHyUkvNzq!^U47b8qUk2d&=j-89^7G{VEeXycQa zu=Tg*uo)}H8e7zyM&(i>9YUd%M4%lZf?PmlW^{|&!!!|uZu@C+Vy4%d`77KMH7Rfy z*hty~AT(=|?|XM@QUZ@9B#mq=&HmTfCA#^ubCT{cFD960{(RO>Che@GIqw`fO6Ac4 zd4cLCG8oI(jq)Q_2a9YxpyP!uy?i`Efuq3+0wz%l&4yvdTRK-etBZ#Z?V4QZofQdZ z<Zy>m2`8!h_n#u%^^#CM`L35dCW)1DmC-73f$)r--FM5<VrPu*C-~o}=5tp0^dkbF zOO{XXSMnKwC!CWWo9?FV-prk;IM3^>D}lsidy^Ac+r&NF7}W_BB0taAT!gfP#uDuJ z^-Vb0zqr0WiUWvw$IG$ZkuNk3qHPm;=K$ij&Z3Jjq7EXg%@9js;6qesjs!cC{Y5yI zSM}QJYOj!=4iB#5aQf6>T;Wdtm&3ti(62vrs(7m6d?2oB2w=$MGxPs29A^=2MJ&Vu z$jC7l8KN+qVI@lVHA&ho;=WN#-e!?v@*)h8*Jz9-4;<9Ue6rlo4=gvz$%6;A{#Onj zNRBng!Gj0kaCofI|NH?sI5!8^AJ8trV8rY^=t>L2y1TWzzPPlpnk!ulzsUO1;tMd; zO1a)(XMoXxv27gi@ED6(h}AJGstAiTjILU@h2UZ>VMn5)ff|Zf%e~6t%T6v<dY?bg zPN&<;?Yoa2z5D1H3ed6VNUL?EMK)I7G%I}alfvwqR@c@xkKzR(9>;nMFNj@&2Z?dI zBl_l@S(d2U$RxFLB`CuicHU1PQyzJ+KDp$YrAA|wOrKnB)TayNe)^~zM;_j3a!2l7 ze)7rXGq>qG*8CPy>fxGCeKA744%Gv}PxR*~g-}Six>JQm$P>(vP*pTY<q)p<uizzF z5oCc?jAT>hEmoAitjml!yL;ATWS!?E-fj3LLEt5>VexV^VZ!n)3yLi9tRzHh{u?!x z6?owLb=h<>CUA}H30db%&oeo+^d>by6tCsXjAO!KblPB9O=Owapr5gQv45vx-Pozv zO;mGjGNHrDFg!WWpx4NLHXa-H^?V6wPZwohAG6pEp?+)oNvj)yL?P5ow=?J?a!S~p zP8IU5WOE#!bAn<qa7~WkWzONN_W4Zzx8t@Qx8GGL6whcu=1r{4KaCeTd0uz5L>6t{ z9N}FMlVBY(C3-bEX0DXS3VKc-Q&leolNsvCTVh4o6Kp2?ucJ|sZ!5_6XZIvO#RY_a z8C;U`#&eDhA^;;3xguFup1w*irQ_}|$RZv8Ns4QJ4Ymp+x=q?DxLnYPGHQAVI#fC6 z+a8ska9Kb*PgiV)SHjwX=FTv~G2Vx^Lo&nbKqu!kqOoZyf0$)orP`(+|65*+|E@0y zscS$MTyzy~H>;6T3L`P{QAz4?A`t{uT2#aiQAs9oXq+X+g4nX(Qf433MQGvIo5@}v zOJ4tvtNH5*qk1p1TcW5=$-1CR+?XRv`w97LmC7|?9pgY__u)#24jvQ-eXDNnBGVOz z^^2-UgHNi_l8L`ba!%uXn=rg%3~TZ|V*6YR2L2ZXnK>lMMo(j9LL}jYq&TZOLpB!d zm!05cP2YO+{{PFLc$qE12p9U_VVLU_Rb!?(;8-Qy)&^@xjOOF)AP4@_X5;)flW~5r za@ho&#nQsv#e<x5x%`{=<|~+ZQ_*%L-c*#In0Pap-#xMp7HH1RU5M5AAIP|Q*@T;z zWb^11yY@_EcMXzk?tXMflFeMwQKKB2sbmFnY>p(?w0T4SH<D|nJKJ(=ZpRi5v)}E4 zU-ow6q7boqU5ff2P6Y(MEysru6x}jbfUIY{{zU{pCj~F_A!;mKwlH|kGR=9eP@J7v z;@gTymizzB&176sgln&(HpBh&s^_f>x;tAaF3p(s1ySDqe&{1Gj&V2WB~Sx4ng(4{ zeEkqdHyGfn(ySVoOhfG8;w)lqXqGS9`fD2>^2Jkz<&uJ%xlZ)qt-dPpRUpu;P!(8i zxv*^LSP#RzwosgzUE6>gQft0$WW2SMU*u}MB=I#KJy(9CFnivy48wHK!)wQe^teZL z$^lU1ZtM-QZ^0<<`djLipgp1mi(+!o#y}UAVSrxfa5X%S7R^#9uC=IpXgkWuH1tY_ zx<>3`nHGTA5vbeQR*tw@d6sF1*R+Od<Jx6^1luJ%JC|cxfj_(};zAMpuN^+^4Q@Qp zT@{wN0G2gL)RiYqUNAIQR2)xnY=Ki`gAD}9(B-RPRL0YR>hzdY&X1?am4;#1>108b zc}~;(AP}rxBIEg*O0ML6Q{*hgWi8tRDx*r00PQQ<g!6S-ag?}J<v7)L6PBnK3_}PU zS5{b7;vFpsREO0hEzoV5<Hk5ax9zN{8U<5ylb%DaXCD?M)k?dVf%e>4p5YbA^cDGL zGi|B5Dx<6LJ9t(Qua;Ff%oFh*)aD5XZ7mnXb&F@1a#;{9tC{msaQ=Ql@N~t}tTfDU z1MV&sp}uC^OBD=>xtk!~5wEDKe%ejyaaC4iRP71uTM!aU&l!@BiJb_O&!ZQ!rkhqm z)nrZ7Kz;@R`aJ|V1>F`LUrnewx@8wZ-s1#K9qP1joLw1PM)ab}{|_UjHZm}`k3+KO zKi-GWL<8h)BSYdH|6iN*MO)qXf$hB&(&rFIUZm1TYyikPisUrpXQn91Km)M{H*piv zt>-Daz)LAxdGy&3k&qjft5Sa@;A9DfdqI8yrr2od1K5ZGJKftvpftJ}KFOm`zBY8K zC{W&YS0Q}jGJX8s@VQ(1%L$4bgc5qx(_W4Rfuz_*+`qwW#dL;y*tpo@qx9yO!?lcY zvcPd{#^dAVi69`VGoI03i0L;<K`>Puk9*AW+X;DsVXp1JD%DDxglRG49-C<q)=am_ z^~a~Db4ev3B3h=d778<CVnR*irYE|p-^-R?)lSZ>NY3oo*eq{zD|4x#&kEX*CG@6n z17Pj_TD!&vXis5l-QeQIvyW^P3gn!^PL9v0>dg2gE5DhnzkKhhbH8VO*<U`v<a59g zj^*;qi8HatU-xqP%VPUUfT<8fl*iB{hCXvHd}^4VyU}Pof1z>VLg9(&VCJ8v<I{gR z6HFVuXW{sHI8N4kJqeB;fKUJL;gb7N<sRjfM1K$*M_XPpBhWGreEb3UBYRdRR#qm+ zdHVAn++SG<WuNbpkCUh9yJF^$9F5aK5vLpATee4hv)bWs{CMWJ%pcvFxpn=N_2NAn zuXx4AD;^FV2M!cZ6bmPdCm()!GrjMjQ)?ewTl?T&onG8`=F9`JQQws)0&^(kM6r|M zn|=>!9KGfj>h&`ysYf;*>i@ViCtNuev#~vCPNbG!i=sKZEguD5dR&Cha(($r%geB> zFE8JZn`ICmm!F4k_zC~M6z;&^cKfAkQ|o15Z-!<|a!>!q_vc~nwS?Qz{>n&=y5+Dk z&#rDpb$M!aU>jX0p%XyNE{X(ytzS}3ERsFNpiMTS+ev&-;vl~T+}p!DUAwjpyDvaN zJIdiA30CaZNR{6H{OYPj3shEDca~!ZB9^oMliw$(iP8JO?a>Q8j|FY3SGyam<G-D@ z;BMKbZlbl#$Oh~WjKWd;@85*^iZB<0FybvGL>h~Dlfp%YdNLS|UoKpE+rj3cR(>W| z&>S7U;0Njb&D_C*bN^UwHp~AQ&*y?Ke;NHc=`KAuqQ3~^fNSldk2zI=M6s=I@#&|@ z`qTHk5WDB-=4Ai-Pk(H3@?#Iz>x7-y%Ei1n#7UcoH4%{~HqaF8&=$-h4p6yG;XtT$ zx8-v?E+GpU&&#;xv2OR+t^=KFwNo>5leNM=S3V3&t6JLA|Knr3b{*?3b!xRvmF#oz z`giZb>+h`Mu@6p97uHs)dPcrdw)Pe(Bd1Wm_rmwc7s-2LC1}|_Sleodk`%hFQfEY5 zS4|RSf)L8C-woO<a98*X{wArY8E?+FSdLMvDZ6K_08K!$zgj&zRaF^|ZIRhpZDzJw zZA`AOPm1vc-ydt%Z>TrN{CL~4YG=!jOR~V}x7n$7J7wRdgPbKkJ~=rtLHz5+$FJ)@ zFZyFC-%k}RD?RXmDp1`LqNVwEO++65M^@te`GiH*6ITDDy&gGZB}VA174u?=SSHF2 z2E9RrHHr^HgHSNUJr7h3UD)EGf{*&%&GYbG#2k;(@~(!}v*M|v6Hn)=x&FUYbJg{` zj`h~FWwP4qZ}v!hSAADnajv?`QM9Ra{dao34qRA;zxc8FBb7VvwD*+f^Ai&j6I(LD zDwQE;X|{tH4BbVhnZqz)kbwPxHn=?8n_=TS(44yPa_KfKx$QJB=&UCDvi>n0wi>Go z{1R0meuHjd@~?g+UB=`R<@8qs6}ZeA4*Pf<w>4JbRe1z@@g;ZP{gc-YgnX@uh#MC~ zYsapmN3(;!h@Abx$f03;J^HvMqbzMP5)5lr9PUxcp4(B)TCr9pC#T_UW$lF+{hAgM z-%s@a9`z*d|EAmTlZnFj$<g~ZutKVe+l~ADizAh~{#3Ze`~%eKZBQq)77TsX*j9i} zs2)|8Apb~}q|}+BR*pp%y#$@mlFJ8OGB4@OQ8oE~pW*-RAG{==KQcku=*X5hl)x`? z%Y-Hg+#BNsVD{>9Pm@~j>Hj4?HR6wMUg|+gPEp^{&;@pzGwcXmVzEC+(JtDT+}(dJ zbd-(m!{4X2l`^WI<tdUcI;+%pssr9~S@+BKOO~F=eS4KClY{%e{q6rj4{dzxV}s%* z`_FCj>%ELmtV@T>Xua;<%>ClA+zwaYZ^Oakx!ATflc$();rq3Qj*DUlP}uDJOz+pT z&)!556FA~l>eWI#apkSIK6dN(dY^*h$_kE6t02IUTess9BF1;+k~iH$V^)I+5{^9A zrePHJ=$oJB%Tr~(?P!{#JzT$7r;fe9N9(ZLPWkDy59^HX^gm2`hY$BRx6h%}$Q;6v zJxM~Ch7fKsno2VW$e_-ZGSecPtX5Ldbo!OtRIc18r>o7%HXroF<$ch@Cg16T{_Ahc zy?iRS-39&k;MjC-Tbb3%mKlVv+#Y@BOP;_b%jIOQH&flM7zk^z{aN2EH_OUQZ@LUJ z!O-tDeCFkzcuDEoOB>0r8}{ckdcV0*e!)TV*wE`w*a3gHlaOw{=oR~?s=6!5j<LM9 z)}$2WB;CGYWS^|xan;nKs~eK68P3|q+9o9|2dKU_{JSf(y|6oc*M@Xvz%BE@K|kl2 zre_}b%p;F{<`H6_dgj!hn0Vy5NASqoo;mf*sO|`3KWW4TvO48`46?Jxz?OZRa<=QO z7P5-RkFU3mx7Lq;7ry&{1p5Sz59a&><N+vAqa2u6Mm8Q@p?|RagJtpnaK47wGGPA) zWCDK}Eps$iEyiWUaKQ;lHI>+aK`4+|$_8>k3jNLH^xf&nAN~-g1383XOWS-R5FKSO z<0c6O&nge77RK~YpZUioJ~r_folbZ6pCTJDxxQ<s8ihgwj--G{T>Rk=2Xm@NecUaS z$^2pVtqyQ3wM}3GXdunct*w#s>p!9~HOs&ttc7y*G!r8yVNb^F8Q2J|0EHPEp!CRF z^KX59zW<{Ka%X>3cpy*aAJ0FY@Bj19<Zs-Y|CxL^W@n&3PT=SRc@1uS;JbzXzdTTQ z>38$}e|;doO=dLc$o7Z99B>1jn`AQ#5AeS774PEHPe1*SU&cCrIjOz)#p?RnsZ*mg znqsx?ClOYwyG62a9KaGlEqbl@biewwUAcSi*%;8ONpzV9%KfTc6L_2qiTJ5gWa88* zTnH{RwklLga#2t!SE#(i(!oV=Na2Y3Zus4T4@qqu8;Mc!>Do?_t{4y!XV@sg3fqZv z#wHmi8Ot+WGSgV{_sq=aa`Q8L{H4Z1rINTMQ*V?eGKoZHqSUBoZsBB^tS`-F+Xtr_ z>2zc2U^_dvG&R+K=1i$MQEn8o*<zzS(JY<eBxzgx0IWu>tv3kaw;1u+tw$|{58o;? zdJ4s22*>^Q+*C1wpg`piz|4-of!Lprb&4eF_4-DgZoY(H_2=mp9mOW$AHnSlvB}Am ziHTE_lTQzJqA@gx2}%$B0|qfcdk7{`D#KiC6`P~cCXY>Ss{O|?OE4LU6KeeT&#M17 zwY5ZfSR>mvD$#)VDh4qBF0A&SC!77=GAW>ZU1+?n+1w$M*JE$kTEW~!W}YhOsPS=z zp=ulWHD3#n!8+X#fqRCcKfv<QX;o`}AkMOa=wtY8U=WdpVECODMucO4uP9(aWyAyu zGrUAPqE5ItewGnA-Vzy!@GNVIhRr)@Hse@kVt(@LWzF>wvnF6zog+L^xWW`?$cke4 z3D)8mgLp(FK9N%lQR18-FbdD0@1#&L$F(uOXvlG1Cz7U1ooLnV|1$@qo-;(oWn@!R zIL+X6A;sufOLQ6skIYX_mS>rSFIN@0z>66Xo*xL3th0*7vx<mOp$f5Cf-$YE&-fy% zI-D%=9*16(L@cN|bXgTxU-Vd8Qe1V|=Bv==3iN(rkher^N2-vP*y@H~cRqRNi;rG? z=Pxhj{rsJad5~$&zxb+yZymep+!H7E?W@<}GsN```!K}ru59(=&}cql%f|0Gf=~-# zyFdOIa#cT0IZn#?Fx_5rctQV`9<|bsk->WG20LR9{@z<F7DwkH$ZD-}n9&lxHf~#d z_SwbTRxwBNdTcbuctHIuVwG0J3A9GS!+`1$V0eefET2AlMZUk8zv5`PT)?*fD7pI! zlr<}uwrz&NR$<^3X~XEY`k&G9^iG>mq<y=DZylY<XSSkEzqD}?{!vMj{w578(SNql zI79!U{`)(i9ZwE5tlPbN_6!oB2}3b1R9X-k(@K{vZ_kN6uP!7Kg~YkB`7t8EW9hT4 z1aLrm#_PY4z>^=Wr^d!o^=&+TR2Qg<iI8?Bw4Kw?Ui1}U+clrOMipPT{t_0m2jSkG zy!fhhOfUWgi5Z_BCk#=^67JR+w*Pd0sz0z70yQMP0qsDctpaqT0`vpv+2GTgoV;gZ z;@y)&zpVGd+Fu09IfwaGDnSk9?2*_u47vzi&1&5|Tl2(P6s3q+lG{Oz?A^V4cPVj8 zF-s%g=JKh6u4TsGoOt<LdD$Xw8Q(R2Hk~$4lx~9SiiulX?!*b{%tG^kQRM5{?3)tz z!ga?b?k!0SmpeaG&15ovP^9&FFVyCH(VQ6aXJb3~G}_JyBGIo^y8T{wY~(M>{To{b zdL5PLL^EmdJ;<rMe96t^Fx~0@Xyg&m-06ieaB0klTie($-|-F;+W75euV-$f6Uehq zq5mGH;DA-PHH)a4NRM%tq03$X>{>U(gLA2G(kGcjX-bx!m*lCE9naX)z-e!c@0mWF zC?&{YUR)S^rLIVlqQ7!%LF5lRx~X10`^pL5pLpf$)vBrYKY;#X(L219%4!aBDsh~) z9!o%EqfhMCy1ZY*=XSz(`TbJj#4nSYmKf_lH*W1ukjk@xYvT)8N!upJ`hNna{P9;6 zbG^iSZvL9VnYu%t9`Svv1GzAKQg@_g(G&dNhDY2SR%cl79b2y+7B{;selZ>LK072} z7nvVm5X<D$kbipg(NAwo{&DV)PftGj=!g_dPHmiqqmeFpM86+WmoTs8o^ak!M5>WY z9TlpRF8ch)F;qJ4ypC9_%OR|`)8ANL1%ei-H#SDjgn2B7xiyym&7YJGhCG2x?Mx{9 zMPX9jFks3v=r}62=Lb$>)mn$lCCA2+Kz}}mGzj(&-Ec?$BAIL6v~D=!cR<t|{!LX2 zolYU0$#*(FEc;vj2NxqfDcZNTG^F%N?X3h{EpnLJl|FF)BS2p;8D3$NTAJ=^Pc|Bp zkK%#eHX4X!#yUGn{N7d}qqm3mg>673waQ5BHH}Lywu@vlVfUXzcWiR6o#>xO7s2cC z=T~v_&F@5VPJ#M#x{+pbL@IIZvi(mZ*OQG)%NvOYHqh1-uKFgK;kMkyZ+_(F<$7K8 zyA$P~YZQx(BH1{5#r%`AGh*`a!Ik0_uPe?Ji!+hW{qxWk=V_!hFkXI5glQtS2h$`V z>l=;b<;KPah^-rIjaTOLmX*)HvQfY56*xm)ao31%whnxVAFX3$m~T|%!1d9E9|RNO zz7Sikrk>xt_(BX*<34`s)Z?k@3$gWevKr<_Ww!AkmvA4We8x7eBDRAE4QcC7@V)z` zm3{kG_Bo?v)%W4CU)ok8p)uU6WQ}USnw^pK7c}{Fs9w4-aln|dZrXeGop)Y+cz*tU zhpL_K@#A}Es=E#Y+l2?}$L~G9vu^4(8=F6{tvxris}19(KRDFCp|^WJ!e8iMRKj8i z)b#2blgXc7DL$2Z>Z#m+ZfJHYf4rgOlf92#pS&{pu6X_(xhJ2@eW;OGOy<<a(Hv0Y zQC^Ry);g-^>R?)r&cDa;ePXF&e#Im|f#cgKXS2lp3H)9--hKe%?On04p{*K;zc6gr z(C0der}e~uz*-Be4f9?%nW|P&N%uVrth!aY!~FbRaB3_iNM~#~XrEU2R5jdDlrvj- zzQb5(9N}V6qXE%@7|fFWWR~^GyY4N%Aq<VK@3nZdeaMy4f4BNX6eRu5v4gHQBQQ?y z^E=DSUamZo%@Y&$E?aC`au2ml-r8$l?g2fA5oR>^;FvP#A6&!2sBDa9#1TWKJGzun z%Hs?<!?GVA*+2Wyvy+AN3$b)zGSu#`tws9%HFCbxdM-biwygAI{<&8F8+18%aCP<k zU<a$HjOe98E9q$7WweZhc^0-CM8feL*+O^_;&6EnBD)CC((Oi(V|N{kY$Er<fj*r1 zgNevD;4{76)X*w|S5kw>qwq5ae@d9AWRwnOBaL1dPmZqCHs*7ugDXInvyG*jlUd`c zIkeG+yX5xO1C3fPm2V#2cjDUqFT-Zv>Vam39@)<OYmsGWOTHE{$utUA(I;a3zt=0A ztG){UlTf$RBWLQLqOyEFq)&fCK1SY6>65=j0fxOu?c{H`@CNvM;)&aDf8zE}uUc#5 z-SkMmf5%(zxZ|xCUcQhz@X!cP7e(!F894{TqcdXs85s{7lyUs%3$YhJ*D7rd1%~pN z>)89uP%as0zjsO{7?xk&E}M+VB)<W3vO1JYw#g*O0*uHdv7ZJfrBxFVpJ=C&_pZy} zq`aKsq=eWT1%jEGwOGt<b?sWYf`W05oVw?pQ>2hhB(fy7*56p`WgF@zwYiYi$2RFb z(H-<sdeOGApu%XQp4}DTZrU{GajjGHYc7SnZg;w{58MdyvnZtG2wB-X+dGvg7*Dmn zlStIZX7c_m_nbN<-<Tjg(@JDFTPKWZ^QBjICJMQ4+|}y;2reor(~5J;d)L;L8xx;5 z#nxVU#Su&$tXE=3&1yN~QLtEet*u(Nd#6tIX7}uw-B#TXn=gIrrRKD8;@k;iFpn%c z*K;r`2e$rNXmb|JE{b8@$nN|Z+N*WXTc|b{>er6fU(U&{Hhq|c63hAO;_CY9!4H$3 zwY*j(&Xx6OtYW?(CMF<d@zbOh3CtHSeyP!Dz_a_Sy+&i15+8h@XJPzZpn39QF%VG8 z)bia52AX)%+vje$`*8DThweCZ=nkU4ukor^HE?qje;<l?#}FsA7@NnKluDSnZkC9H zjNBCT1FA*SjmJ&W9f<a|>MTQDE?IjXeqvG%RH6MRmh~BlId%*-KFc0EE(r0#@3<fw z|3y9R_MdZ2T_N}0>sQEx%NzaYJZ*JVcgckDYF1$540HTA!^C0t*fG2v@5Y;t{i5!@ z5c9IKsFNq(mFa(-#7t{_-3rGut%n2k*h1nOz9Z`Ap*~b&ir&ze-UU;7Hc^j^@X+(* zA1-;Z!<W4Lv2B$jw{3f!AMbeCW811SqBFEXeqRA@g+?5h#9%^Lfi9-V7KfM%@jSvo zqQ@}$-G`X8-C<S(5YiBpAoTI-Qjbw|-drS`l2(;HmS=>dVR@Lcp<bPKm6Jt3U+_|= zY{pJ&KF>Kd(cuU&|Jp0${lqbig9jOg@5UvDxzh9`(_lqnpZEdKh*qf;Cm56}v8<Li z6^<`0pI+E?W+`8gc^19wF(I-<6khn)nOzH~_glOzvm%42Zfrs>F(S(gioucm()OHA z)b@(jQUpS^seEF$P)@-V5-6YaHZMG1Xf)O_^cq&d&E8I*uWi0bNX5HbxxlC`B<Qw8 zHz;@AR!~NNr3P6oSXO`4vdH=Vx|PjmK4kaohx6IOMqzDp^Lguq7@Ug1*TswL%gbc5 z(deIFE}$}s9nxVoHi1zU7>HhJd4Un?R*f*rb~t@PU2Uk#?X-Br)AB=b#Yu*GAI}F7 z4x~ttqjF3u-t0CP34%>@YGif2|Mw4>tjSrTA#nyPV88$`r6i7zt42px0~KKdIhnBP z;bfkHz7d$;{7qSuWF{e&)tYgVWmxt$!4L@CMd153gsi=|zTQjuL}nyTLKJdVAUyOf z$1<8AW+g!rh{y@tE5y0r{X}3T!ibXaM+#3YJ|U*$n=ljTNlr%0TbVnF2~?mpphwAr zKyzoJXw7(3OZ0tdHM3+0D~3J+tth)L1zdxZuz10ku0|A<Jjijp^vO?&JjdN<n4+v& zmMV)(`EV-f_y#e|nRcEnqGee3X~Gui_n$J1W!{RLe4gR<C}}(CGVJ>d<Ebk<qLTig zHqcXU#UABg{w>9pV>gF>vN&8Y@h|Fm+Et2VCwigZcn4FQg`OiO3DYAKqf}_2LqjV- zNR$0!2p5l323`1Rpb&YjyuaVyFVD^S77?@uHJ+I6euH~)&`aLV2?)r*v6Aq=c$vNS z&J(98G7C#!2F?jw05g|_U-P;<Kkpb<A1_qTs(I)Z=(VhN(|Gm|4XFQ9mFC)7qxO`9 z32Z6?Bglv`@cP#uLOcQJFOK2%vC<eva5HR&Fi+wH#rHl=`z#7=9;S|_A&K2E46#}Y zzwnTF>7nWl3=wj>Av#B9W{+8-$?yuN?X6b!>QKv^V(|PhELvBbRQB0R4=JM%BOerv zQmtMxL?S11xs<e^%VA8kq6NXo{)KH|BT+s71>}%7L2o0v)zR3sgA9Z;_Xg(iM))F> ztwhR9p+iJ~NlSss#)B?!Q>X&-D%~mtWaT0|w;O~m^kQhwTkpsVlVe(W{?MWMvNkrk zAa}f(5}!?W)QN_o$#WBGCz<6-GyR{vQFk*Ha>LD-BrUj6sASx8*4iqG&CB!GTroGT zOwP?sD${dI$KgPbEjEZVujVmYM&R=5yh9qrEV&+NZ9Qdt?vb-+A2~~IzuquXbwbXZ zw+6IzQ0ImJSZzh>%}U<bg<4hgf4^3rwJxo|71s<a&{norAor&8uwHW`SdWp1D*E8K zcF{&Ej@oc?p}$HttbVUf*7_GngEaaV;j;-`6V1Q84KI>v3&`l*n_D;bMsC_B*So;I z&&GDe?tpu9Eavbl)n-`gJ{aZ+t3s=}ak>|IQ)8?-LIF@rt1xBv_7C;ty5v*qlB4;$ z2GcQB`{b$N-hUSahCDPemRp!TuDMSLYP>YqA=eJh-Ivj_!N@0`RS)buGB`^1<Zrz0 zXb^CxqHnv?w#0|{{?}$*mV2U@+g%#$ydpgFa8}C%+dl_XEb%f&Lp#Kv?E;unS6!y% zU?{m^y)V~3wH<8(jAc!{Y~%a|`-F4&-+rNONBxJ`CoZY~JDn%k{tqwLXqRuw;4Ke1 zPmE%Opxx;fl;-K;?a?*6NkN@M9Gig`a+ItBF`yWl1OPofDK1c}nd8DVyVVFn0#j7c zn-Nr~BoK9_T3$3P%UCQ|w|0MxQo&<^D~P;cyGn-Pc;YAQoT&PN#}E=^1znLv%vvQ% z7(-$>9$}NkoFyg{%Tx*u!;$klN)2}llvw^Jm&c-6rjF=0Nsh@mX@)7lDl|zEa9BoS zp=ePrLqX##Q?cU=vCV0gZ0F+~ig*yEm<*Q@ni`77sFAIN1vJZ0%OAE;d}k9~yy;<< zA<hHW-1soVC=Zef8F_iZ<Tzq^gJu|WR6pr#YXzBXJbaVuX#A1Y^&5G~x$c!elB~(C znor6$7BQ?YKMl3b!wNYS)m97rsAA|VAV7_faL#o%A9|>;v4OtY@D=$)tb*)Cv(pgj zu}-GljScs0q~JgOwExt=A8SyK-3{j8D!9Aw5b5F9dTiS@eDtjD=2K5W3FP?O-saLr zZNDaTkEf3y$LRwRvot#IA)Y{(GcUxmqKWIfoi8xVX#%|C8DQ;>SVx2hVgE&hVV2?d z0g{!Z{$CythIPu(a%h$o>PHRINwEnGQV_rSa`)Y~qwpQ&00USo&9{oRF!2SIEdN3f z4)p(0l1TOd+(b)cq}v2~yC#ICG283q3bVxafTa%sxTqZJePPEfgt=V7v7P-@sfGPT zTX>Z=_dsX45PN}K6?;wWebk#{5CeBPD5TLqJv<$Kp_elzW2SJ3ag;oeYY0O;yPYjG ztnv=rtHF815u*`0BNur)FZ+SZil%Dou44tMz>8~&s<>7<o=?OBOVcC}01Vkmi5w$K zdP-76K>;RNE%}xyi-J={ZwXG+MNI+zQ;`kVNo2gZX)21OIJWPlY#pQDtQC>-IdrTb z9Ivp3VM-!PcotYnkTEz#;>3rDpc@pfUlMIE6_hjSz_m14k_<Irrvuy3OhFb=bm0)@ zDWRA?<49&)=2iQgBEf`XL{8T=+wsk~q>G{~n?{ff3U<P_M3LhKNwEr&wxF;)&5R=} znhFAsVM!7%@yOe<eAIU&27Py5>;uquKTX#mIVwk8w{=+v<JKAU9_^ymPuYEg&YL9d z;WZ}ld|}&Ff0bcXO~tHNqrC^~S3D6|I`p0p*B#9O34l{<MTN!$K}aAnr&+ddTR^Up zH3qYYa*`^_5-&g#8Mf~xUEeTeSyD~Y^8yvbqr@Rj@Cb+Lx<R6YE-|1af>`Lhz{wIK z->(answgst{pVzYaxOXOKP}-V1KY|-vP3Yu3C~HQCc~H`ao&boSW&x+moW9W$Z4u( z+HuX5L4bs@XL^1j?IsOf5<#>vXL+LwHNaGxM1(#DnU#2!fWY=JWmzti=VLwKDSDBA z=TM$+qc^7C@~NL#t6k>9d?_@>2>t2M=W4mvBe7-J_Mb<wec9Tux)vO=F2YZc<u6{q z=$Hcf$5=p8h2gVCW1B+cx)G1F!8hvMmZ8wo*7dN(u%8|+42rTgHw$6B)D}-v0vY2~ zu}`3%A`Gx{NtonH)qUJNNS44b%tcVXHR|?T_K^Rfyk#J6Z7AP>KU(vh3WgF^+Z1AT zkU(&-p&^|3&6F_%Lv{Pv(GBKl+Ww4@4f&9C_tluq2L7a#2Z(s*)sh9@*4m3uZuEGd z0W5FJu3{OQX~EFcSWFZrnu4d0{?D$xh-2e?z+g%OPxckdR&6bA7zU%Tx+0k(C#&o? zmu``CUp6JrH+3U0T-7x-UyjRSl237D=_WBQ!=-_%8@g{o2^NedPZk3{!Tbuj`c9EN zup));$XtE51iuWyd(j$EJ;4+WQIa%Ww=GjM4b_otMEGYt-o-ouFIr0y(Gn$#ky#zs zBO6~2Ud4lpcs9WYFdBbHylIJWX+9~af$SUjcD8Hirk#*1DXB=eEHO;L$3@wd9Ub4! z_TW9;Kr|&~#GY!$PR5=ba6xmF2|^)juH!bL6Hw;5>_+gLIkb#*sWymy4>qB8DCl}! z48M)8hkoBtLiAM<<J)f^Zk~nyl<!+!dEoAABv0iT2I?(B`??zTmgx^_BgYA=${f~9 zhfao0jBD5#3bq%J4s3<@`8x3wY<7vkjA@z^w!16aK#w_}_ZUWn4oLAy5jxn{OlVH% za^3Vj$t33=Sh1vQ?tWlp`97KSUjao8`rX5>F?9!8S;PUw@GA5Ti~tsT3Wt`C?_xWK zuCp>@Nzkk0ogCp+hH-h1MJGjDc2oo3#)UOSl0+P&sz;P0^kV|bHlSbOWei^qR3XVz z-;ym`c<A-s1)1g=)Xfep&+|2!rUghk&edkT1rl?U9_w_gLG)eg(xn9UYaUesQIAcU z`==FR^L1#Rx_D&7e*2=I_p-TKYYEyg52Uf^l1GoWZ$9d1SCpOH6gxX!yjoJOygn<O z-S2*aOzxf%^W`yT*R`1A%21rSZ|o5cc0F}>WDH+9xzL=pbp2iRYPy`~W@kuU*fV~O zXYYNTm*^fAvPYJnxZ3zEcgUQCiE*HvDv5c+eCuvfEhd6$sdb#2N@+_wZSdEQv;@r* z5X^UIWHHvqL*%j$-cu-3j4G@mYS!t%rU(H7QnU_5y25#Ydyxk!IiBCGdfkJhoXdK7 zU*d>c<nlmY7>yCG(43<;6Z!fp70Gw^pC#q7a$cO;&4|qWoTC^p#@MNx(<y3E{l9y7 zNlQ&}a4XDnYq}``wV0XZ^5t}uoZf4D*NhXbhJ~4jI2c)`krzuTMrML)kSJEk;cmiP zJR*<UkMb}Y(96!t2|;mDrT|pbninU<>M%Pbtk=}JlPt2V$~sJv^w(L7*LmQs80MVe z8Rz<cOD5`-%$ZEZmfly-F?TWl6|o9cmjz)><8{f@{dm@Xoy}l^RmSZ9Q~lhPg&@cu zI$E}GNjgq!n?DZqIK9kUG5_9s-2Kx$`y<iwxNSI1z1VBf=CwVBJ&5AlQPt@Oag1X@ zBwY*_F&Q{9L-vz)w-Y8Cqp8S15@>q#j$kg&cu}_CC}TBcn6e~H%!is|Ae}JjLa4ZT z8XEr{Ov8AGhDp8)jH>W5u-ClC@Cw8DtjjAZQvkL`(C)zNKoD4#q;sx{d}{$%4Mv2k zSzcBdRpwd2XMhp{4^rSnkf%v#*)P#J`|F^&Oug!pk1IA&<@@udB;D^3TlqNgtGWqi z3zn7e>n{6o9#cf#&jE9+s=(gx<o^G|+?$6<a#Z)C8M$wjm6erC?Ul7=^;TU=S5?o_ z-8G9wqZvt4l178pQA--36{#gK8b%-rgb`o?gN(6Q)olLk2R4I^jqC@wZF~jz8Z*!4 zV)#C=+w$^!{cJNV_QPB0#fi*Xx@Sg=uK&1irYqOTh!ZCwBTvLR=XbDF%i?s?(b#y7 z>|@98#5`PRm;vATfNy>*sd;1#+0gQ@_&k7>Cg1Gi^y*2d)*Tuai`fi~Wi2cKA`4=6 zakR=?ND>qPt<7K-u-YAv7IjxwbxbWQs})=sNROYBP9h15@Huo6&j%n@yn@NC;OPKP z>Gw101!B7qhFK|K?Q~{vQwmL?Q+VRUo+uN6O*ON+o>@h^pNii2RP@8^o9ls%GI^HF zXCeK%pQ=ypkKe64)xdp<XwB(}HADMuP!Micn4wz{A6wOFGfOlH!7Er12o>E~f|YfE zY=^rjHM__wT&$g`@+M!+?65e6U!1+%G7@OMSeU0#Vn_R1Y_Bw*Y43`o{!|&UgMW`q zmy*fSw1h+nm8WKB2cH~-=xjEdL4$uQepf@STow)fWv00GoipH_i#D9db{e<PA8DW1 z6{km}{PmbV{5tltgJ;JDkBLFIXUBFFAH!v3s97JEY~<gQPb2UZ8ydht3_mPNG7$oA zgOdQ>MAU)+2CZmh0ixGHJR9DM5a25GCM_D(-W?ak_`BigeYz~`d0l$9E(xb2M;u9V zy1HAdg(aOgPU9}pH?+YEnu$N6QBy-1%}~|BCs9iX>w^~r1$9qoJg=P?{0YkFPq^+A zVPWv!6=lpXr~?o7F9^i+dDOXhHSi6m<J*UJoEEA$T}SF|qn5{Ca+SAhHIxj$<~3pd zw(Zo(+~D&(kFMaQr(O5yVf>pKp6~Z4kus?i<$@g*?!$RNDq5I?<>*+x1s)0(jW^JW zu6K1E%sIQT+0X}g9^t-7fqm#%*VTQy(6!##v%SH&jg7NIy`WznLwtXT9@6tmD|k7p zkSpLk&XAm8AsS~{+t^rl-F|NZSI{QNp;h7)lOqs{O&^O3_c44XGzsf0pVUHNKZIu} zYqh~@&8?;H)Qp<D*^k_=AqvdLT}-v>4%fajv}<T|1|Jy4;MX@d&((DNuNL_It&i5w z^VBr%>ENq`^M_a#b$`l*DHu~@HN61)spj_3de5CCVHGIAB@Q;uor8V1>$*Yd_`onS zTVhlRz%PPajW-CUdBh6~)dpvgJ2(d+U}0j1Pj%b`_?#Tnx?A5*@INEDL_v#OfaE<? z>z*Uo^ap3pQR>Lo9m)h`tC^8j=sN0Vhz<d@_5jf6JbTjx|2@OC_rR37)l8$Ud#e-d zonS9)yFa|{Zl2vBy=xOT=kO#I|82UsXAFP6t((ySa=Tq{-oxF01D-{=e-74tM(Z0m z!CLU^2Tu*pUH$Ybu~iG|AKvDLH4jn_+E!;Lu-X#F)>~VSJ-kKKs3PBn7@oaaZDLnD zdzOqOBVxbZKU-U?_3?jyyIR|h=LM8y0ar8E@<#7K%a2kvbQ8lr9j*3O2mMt%)9+yp ztiqJPhk9N7V&OB_bqA+$&!f6voZY=p8F;>5kL2QL*s(2QazKv2>jE;y6MV9K04BFk z8RCJ-llQ!j-}7Y9bB^G?bG|<r<h6|8T>;Os8JesN&ZFUyP=HAWwld{yW~8v7!DA5t z-4TjJLYQ}^sfF^PgeBe}T8S&QWr1S^KEen$(41gMc(WVi4$R&^J<x0(XztiKHMMi< zmm=@!A~&L)(V}MPOvoTFedZfy!VDI5@KlNAEi5KW{24+1{l<Yt<G?*r5EAKlBytBa z8ssMGSqLx{UaFQ3KVen5y-F9Z%9DiLuSDKJ2wwE@S<fT+tAx6{A`ylVxZ8(v3~)hw z+jNDrXBEp6)YyU<qT7#;qXGx`Z&tyN^bo|nb+}H+Ic92D=)nWwpAQcX>VqF}LiF6Z zh$1sH3@fH{8lIU{l)+iIra>x9Td+rNzn01Cnil<gl@)YF(4M|CduCG30ol1crfj&s z2t__M|3tPoT#yc*0{;(XwwJ!uzFYGB-J(`A_*Mux@B;7(@S$ruEq!$j;jsa^wNUrt zNPm%fe+Tt9^v$)^wN3mkZESQp+wcQI!#LnhkQ4r>t@VQpPOq(P_BXrTk-sJ2Q=~!4 zBM2c5*jnM~5@1sJMsh>o!@!`)E5Mp*vycxnGpI}!Tk8(2$s+0LyOUUM4S9G@CyK0$ zXt#W@)p+qE4?onKacQ2#Uw?>f*`OIlq9Y7qGpKjXj&gxUw50G;5f)4Na>eWHxc#Q? z$}1qAByA&F+<^e<xLoaSjT<#Yn|~>q9)78^S1(oyl<^4l4HPE$JfNllIEF*4%q|-9 zZ-~5>h5h5kL>r0(sTXuierkG~F)S(?Z}lIaBU9=(0SMF@3L8(7yr>s_&&&UZfJ1GW z*Xxt`Nd$t#ZurykGjBECFmEhkKKnE4^(T$T;ru0h2aIiC!KWsOc>|a_93T3C`jmX1 z*gss%kHOgD#}HI$%k$^?F<i(_n5+>`=JC6chqq>Pr2n4C_Vtd?R-~+<*TG*#R)c5n zeosF#)G1MbeXW4k{5as_=hUM|hkwYOIN45f66X*M3&tq&&Nv@bhH_8+(t{7KKltD$ zCNuTvI5l_#?yNtEGLwaD!<iYD5S_r833C3e@l)eGzdLa;uyNi%Pvd^LAFx9}&;bpk zFG06_n7bj2Mc|4ara|Xr4-sDiWf-wiw#@oRJ9<YweCRv*`C9(2+u2mvONMt%r|KbI z!?Th&gCr+8lfC)oQY)WibGD{xJMy*5_O*Zb!?t?G6@OFPU(>yI#hhBqBs4sT>JlRs zoy@GhP)g59R))_M_SHtZ=^^cvAYL0LeFX)y7x1j@0`z^Gkf;1H(DzooU>(>>Na+6i zfe!UMn2;x*++OI|_bCCmsU?3D$(>&eFI=2)%^Z3NN+0~gsOaz_E*hbvS594kSxEo0 zS|Q(PmoYImCZ=>*4bjg`Eqd1U4i~s&M=+O4vFseR4TBHblt6@m<#GV^5j1MSyVOQa zqmL?w4yzsg7cbtXb_&|GyfDeiFDQo(E4W?lMj>C<y~Sx{0=*%g&?{78S=_4S%si=6 zaes}Tq@95_1$k|VP||XUUC9L+HI2TlKS`RCv}~u4-My8N)m0<{4NtcTMNe-n6iu}0 zOSR}l8tnp2Gn_Aie3ho^)b+R(Kp=!DX}-ERXaaohFRo$<t2vys2F{sWqeFc80bV%J zaKf4^i8mf-CYx_aln^5$Eh;PF51Z*Utl?`6YeekSG%qI0<>ZI0Y${qss-W{?zQM97 zJ08#5wondBl02KzMS)Wb#l~hSuHvt*rRlPgu4E9cS(>I766Lm+wM`d^ZuJgUmOWlj z`6yELLT)-{Mk@@RoRU~1s<BkF5X5w$=1IM?WM$Q_Ltz{ws<nmw3)LIlE9fGhYcfL2 zazzWz{>Nng?bd3&iw%io-q7+fn|2}!zlECH$J7h%d_dbO!ZIjn6TsPjnJse3+}3|O zH%B%LK#%VMd474@vURuSFqV;5s6O>J>OIu^sgGiwhrwP&2!3Hym`4+)S@Wp10_ZKB z;J1RBSu|m+1zt=ms5Or!jJfc<1`iSf_%Zp}hLHshcoX(r%@s7ta<q7C;@tfJksV@F z7pT_-)Xy<VH7`b-w9KU~O?0J@m1dQUV+aK`MHdQmS}h7u+f~@KtxB$>+G$S7*b%tR z<WdRVb@>G2Mk8D*#qp*q3X*FITuQPy!@!yIxg4Klaz=zpr?7~f6Gb71?<Z269(BJ( z;8u0|o|Gn5_pVL3hwqV$+?!K5(@uRx)XWU0q@9S6S8)zGCWQ%&I$4DqQj+0h*N%#X zP#OqLsRhw+GBTI3LQ>DniGrBJvVStgM~pn3@CnHqyvk*goDfjTv&l412o<tf0awJ( z@e}M<2oP*b)Kd4*dq0vqoN|m@IXhFuq~AM=`Rva*KxVuFOD9y+w{-x3QQziTAOZZm z@_)4(3@3blW1G3u;Si8i6(70husc=F87TK(Yr%geO@O8aGgqC-9)6YI6z@wNPUei+ z|56jYoA3~%Z%W6!0-x0>YJpm!4&a&mE!4du-ztL6NZzzzs2k680^A$NM`m>v2wo%T z`pQJfhd=6|6oWy+1|?SqklgtOF}MXKJb}~%vtgc?<f3Y^y0;1|I(S#4_ujJiEaGH1 zmpQc9TU<k&$st`gSe}N^XSBh~nF`I*`cav$>G+_s-pknZj%cRx?cQP~6Wu}E{~+%! zSNG=gd#mN$vc^~U?yd5;ccFY9acX68@t5&2K1#=8O9)nR8AHvWYD6_cRkV@G6nRZw z6q`9fCC)X)MP1{Ie(aDDzxHEJ-9X(=-S-l_0;6Jho8jx^<qNHHp4h_>o0z;{<?F=i z!8e~Ffabs=yFtESu%<5L@d#0XaEcA0Q*5-)XVw~Gc&I$Fg#piqfOYr~;h7gOgJ&T6 zJ7!}~ulc;Y8YXPO&7+l!&%_Hc?7z{B=(B>8At*O+5B|xV&k&J0PFR@6%sf&J0SlKA zu(O^aj3oHE;%I$y8-8vS2?)PU^C+-m=>#?{AcqkF6~BOeMCD(kI$u-1R?&66S9y`D z2x&D{Nh_%jrPMT<ev!%}%Ke)1hbJnPKdMw-18cc=;Jc?&O6q4*V5bZ5J_qP2^yc$u zAQW^aN+*FfJ3d-6c*s0ON(bzN-QE10GxtRYZ}8uaF3JsF#Jt$o?fy}>d(w69n6s;n zQ?*aw{VfEd%=ae?V%i(T`?u8rWG$f(0SDj$fTfXGWAoro=AfEB*Z^alk9<n`oclTD zQ{QG;)lyVm<lVFSIk<i9Ey1nd#~0xq%Wf%0AjtaE3L?b-A8{e$5;po!K>rWi&$<6F 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 E0LEz`i~s-t diff --git a/dashboard/lib/jquery-knob/jquery.knob.js b/dashboard/lib/jquery-knob/jquery.knob.js deleted file mode 100644 index 163847b2..00000000 --- a/dashboard/lib/jquery-knob/jquery.knob.js +++ /dev/null @@ -1,802 +0,0 @@ -/*!jQuery Knob*/ -/** - * Downward compatible, touchable dial - * - * Version: 1.2.11 - * Requires: jQuery v1.7+ - * - * Copyright (c) 2012 Anthony Terrien - * Under MIT License (http://www.opensource.org/licenses/mit-license.php) - * - * Thanks to vor, eskimoblood, spiffistan, FabrizioC - */ -(function (factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - - /** - * Kontrol library - */ - "use strict"; - - /** - * Definition of globals and core - */ - var k = {}, // kontrol - max = Math.max, - min = Math.min; - - k.c = {}; - k.c.d = $(document); - k.c.t = function (e) { - return e.originalEvent.touches.length - 1; - }; - - /** - * Kontrol Object - * - * Definition of an abstract UI control - * - * Each concrete component must call this one. - * <code> - * k.o.call(this); - * </code> - */ - k.o = function () { - var s = this; - - this.o = null; // array of options - this.$ = null; // jQuery wrapped element - this.i = null; // mixed HTMLInputElement or array of HTMLInputElement - this.g = null; // deprecated 2D graphics context for 'pre-rendering' - this.v = null; // value ; mixed array or integer - this.cv = null; // change value ; not commited value - this.x = 0; // canvas x position - this.y = 0; // canvas y position - this.w = 0; // canvas width - this.h = 0; // canvas height - this.$c = null; // jQuery canvas element - this.c = null; // rendered canvas context - this.t = 0; // touches index - this.isInit = false; - this.fgColor = null; // main color - this.pColor = null; // previous color - this.dH = null; // draw hook - this.cH = null; // change hook - this.eH = null; // cancel hook - this.rH = null; // release hook - this.scale = 1; // scale factor - this.relative = false; - this.relativeWidth = false; - this.relativeHeight = false; - this.$div = null; // component div - - this.run = function () { - var cf = function (e, conf) { - var k; - for (k in conf) { - s.o[k] = conf[k]; - } - s._carve().init(); - s._configure() - ._draw(); - }; - - if (this.$.data('kontroled')) return; - this.$.data('kontroled', true); - - this.extend(); - this.o = $.extend({ - // Config - min: this.$.data('min') !== undefined ? this.$.data('min') : 0, - max: this.$.data('max') !== undefined ? this.$.data('max') : 100, - stopper: true, - readOnly: this.$.data('readonly') || (this.$.attr('readonly') === 'readonly'), - - // UI - cursor: this.$.data('cursor') === true && 30 - || this.$.data('cursor') || 0, - thickness: this.$.data('thickness') - && Math.max(Math.min(this.$.data('thickness'), 1), 0.01) - || 0.35, - lineCap: this.$.data('linecap') || 'butt', - width: this.$.data('width') || 200, - height: this.$.data('height') || 200, - displayInput: this.$.data('displayinput') == null || this.$.data('displayinput'), - displayPrevious: this.$.data('displayprevious'), - fgColor: this.$.data('fgcolor') || '#87CEEB', - inputColor: this.$.data('inputcolor'), - font: this.$.data('font') || 'Arial', - fontWeight: this.$.data('font-weight') || 'bold', - inline: false, - step: this.$.data('step') || 1, - rotation: this.$.data('rotation'), - - // Hooks - draw: null, // function () {} - change: null, // function (value) {} - cancel: null, // function () {} - release: null, // function (value) {} - - // Output formatting, allows to add unit: %, ms ... - format: function(v) { - return v; - }, - parse: function (v) { - return parseFloat(v); - } - }, this.o - ); - - // finalize options - this.o.flip = this.o.rotation === 'anticlockwise' || this.o.rotation === 'acw'; - if (!this.o.inputColor) { - this.o.inputColor = this.o.fgColor; - } - - // routing value - if (this.$.is('fieldset')) { - - // fieldset = array of integer - this.v = {}; - this.i = this.$.find('input'); - this.i.each(function(k) { - var $this = $(this); - s.i[k] = $this; - s.v[k] = s.o.parse($this.val()); - - $this.bind( - 'change blur', - function () { - var val = {}; - val[k] = $this.val(); - s.val(s._validate(val)); - } - ); - }); - this.$.find('legend').remove(); - } else { - - // input = integer - this.i = this.$; - this.v = this.o.parse(this.$.val()); - this.v === '' && (this.v = this.o.min); - this.$.bind( - 'change blur', - function () { - s.val(s._validate(s.o.parse(s.$.val()))); - } - ); - - } - - !this.o.displayInput && this.$.hide(); - - // adds needed DOM elements (canvas, div) - this.$c = $(document.createElement('canvas')).attr({ - width: this.o.width, - height: this.o.height - }); - - // wraps all elements in a div - // add to DOM before Canvas init is triggered - this.$div = $('<div style="' - + (this.o.inline ? 'display:inline;' : '') - + 'width:' + this.o.width + 'px;height:' + this.o.height + 'px;' - + '"></div>'); - - this.$.wrap(this.$div).before(this.$c); - this.$div = this.$.parent(); - - if (typeof G_vmlCanvasManager !== 'undefined') { - G_vmlCanvasManager.initElement(this.$c[0]); - } - - this.c = this.$c[0].getContext ? this.$c[0].getContext('2d') : null; - - if (!this.c) { - throw { - name: "CanvasNotSupportedException", - message: "Canvas not supported. Please use excanvas on IE8.0.", - toString: function(){return this.name + ": " + this.message} - } - } - - // hdpi support - this.scale = (window.devicePixelRatio || 1) / ( - this.c.webkitBackingStorePixelRatio || - this.c.mozBackingStorePixelRatio || - this.c.msBackingStorePixelRatio || - this.c.oBackingStorePixelRatio || - this.c.backingStorePixelRatio || 1 - ); - - // detects relative width / height - this.relativeWidth = this.o.width % 1 !== 0 - && this.o.width.indexOf('%'); - this.relativeHeight = this.o.height % 1 !== 0 - && this.o.height.indexOf('%'); - this.relative = this.relativeWidth || this.relativeHeight; - - // computes size and carves the component - this._carve(); - - // prepares props for transaction - if (this.v instanceof Object) { - this.cv = {}; - this.copy(this.v, this.cv); - } else { - this.cv = this.v; - } - - // binds configure event - this.$ - .bind("configure", cf) - .parent() - .bind("configure", cf); - - // finalize init - this._listen() - ._configure() - ._xy() - .init(); - - this.isInit = true; - - this.$.val(this.o.format(this.v)); - this._draw(); - - return this; - }; - - this._carve = function() { - if (this.relative) { - var w = this.relativeWidth ? - this.$div.parent().width() * - parseInt(this.o.width) / 100 - : this.$div.parent().width(), - h = this.relativeHeight ? - this.$div.parent().height() * - parseInt(this.o.height) / 100 - : this.$div.parent().height(); - - // apply relative - this.w = this.h = Math.min(w, h); - } else { - this.w = this.o.width; - this.h = this.o.height; - } - - // finalize div - this.$div.css({ - 'width': this.w + 'px', - 'height': this.h + 'px' - }); - - // finalize canvas with computed width - this.$c.attr({ - width: this.w, - height: this.h - }); - - // scaling - if (this.scale !== 1) { - this.$c[0].width = this.$c[0].width * this.scale; - this.$c[0].height = this.$c[0].height * this.scale; - this.$c.width(this.w); - this.$c.height(this.h); - } - - return this; - } - - this._draw = function () { - - // canvas pre-rendering - var d = true; - - s.g = s.c; - - s.clear(); - - s.dH && (d = s.dH()); - - d !== false && s.draw(); - }; - - this._touch = function (e) { - var touchMove = function (e) { - var v = s.xy2val( - e.originalEvent.touches[s.t].pageX, - e.originalEvent.touches[s.t].pageY - ); - - if (v == s.cv) return; - - if (s.cH && s.cH(v) === false) return; - - s.change(s._validate(v)); - s._draw(); - }; - - // get touches index - this.t = k.c.t(e); - - // First touch - touchMove(e); - - // Touch events listeners - k.c.d - .bind("touchmove.k", touchMove) - .bind( - "touchend.k", - function () { - k.c.d.unbind('touchmove.k touchend.k'); - s.val(s.cv); - } - ); - - return this; - }; - - this._mouse = function (e) { - var mouseMove = function (e) { - var v = s.xy2val(e.pageX, e.pageY); - - if (v == s.cv) return; - - if (s.cH && (s.cH(v) === false)) return; - - s.change(s._validate(v)); - s._draw(); - }; - - // First click - mouseMove(e); - - // Mouse events listeners - k.c.d - .bind("mousemove.k", mouseMove) - .bind( - // Escape key cancel current change - "keyup.k", - function (e) { - if (e.keyCode === 27) { - k.c.d.unbind("mouseup.k mousemove.k keyup.k"); - - if (s.eH && s.eH() === false) - return; - - s.cancel(); - } - } - ) - .bind( - "mouseup.k", - function (e) { - k.c.d.unbind('mousemove.k mouseup.k keyup.k'); - s.val(s.cv); - } - ); - - return this; - }; - - this._xy = function () { - var o = this.$c.offset(); - this.x = o.left; - this.y = o.top; - - return this; - }; - - this._listen = function () { - if (!this.o.readOnly) { - this.$c - .bind( - "mousedown", - function (e) { - e.preventDefault(); - s._xy()._mouse(e); - } - ) - .bind( - "touchstart", - function (e) { - e.preventDefault(); - s._xy()._touch(e); - } - ); - - this.listen(); - } else { - this.$.attr('readonly', 'readonly'); - } - - if (this.relative) { - $(window).resize(function() { - s._carve().init(); - s._draw(); - }); - } - - return this; - }; - - this._configure = function () { - - // Hooks - if (this.o.draw) this.dH = this.o.draw; - if (this.o.change) this.cH = this.o.change; - if (this.o.cancel) this.eH = this.o.cancel; - if (this.o.release) this.rH = this.o.release; - - if (this.o.displayPrevious) { - this.pColor = this.h2rgba(this.o.fgColor, "0.4"); - this.fgColor = this.h2rgba(this.o.fgColor, "0.6"); - } else { - this.fgColor = this.o.fgColor; - } - - return this; - }; - - this._clear = function () { - this.$c[0].width = this.$c[0].width; - }; - - this._validate = function (v) { - var val = (~~ (((v < 0) ? -0.5 : 0.5) + (v/this.o.step))) * this.o.step; - return Math.round(val * 100) / 100; - }; - - // Abstract methods - this.listen = function () {}; // on start, one time - this.extend = function () {}; // each time configure triggered - this.init = function () {}; // each time configure triggered - this.change = function (v) {}; // on change - this.val = function (v) {}; // on release - this.xy2val = function (x, y) {}; // - this.draw = function () {}; // on change / on release - this.clear = function () { this._clear(); }; - - // Utils - this.h2rgba = function (h, a) { - var rgb; - h = h.substring(1,7) - rgb = [ - parseInt(h.substring(0,2), 16), - parseInt(h.substring(2,4), 16), - parseInt(h.substring(4,6), 16) - ]; - - return "rgba(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "," + a + ")"; - }; - - this.copy = function (f, t) { - for (var i in f) { - t[i] = f[i]; - } - }; - }; - - - /** - * k.Dial - */ - k.Dial = function () { - k.o.call(this); - - this.startAngle = null; - this.xy = null; - this.radius = null; - this.lineWidth = null; - this.cursorExt = null; - this.w2 = null; - this.PI2 = 2*Math.PI; - - this.extend = function () { - this.o = $.extend({ - bgColor: this.$.data('bgcolor') || '#EEEEEE', - angleOffset: this.$.data('angleoffset') || 0, - angleArc: this.$.data('anglearc') || 360, - inline: true - }, this.o); - }; - - this.val = function (v, triggerRelease) { - if (null != v) { - - // reverse format - v = this.o.parse(v); - - if (triggerRelease !== false - && v != this.v - && this.rH - && this.rH(v) === false) { return; } - - this.cv = this.o.stopper ? max(min(v, this.o.max), this.o.min) : v; - this.v = this.cv; - this.$.val(this.o.format(this.v)); - this._draw(); - } else { - return this.v; - } - }; - - this.xy2val = function (x, y) { - var a, ret; - - a = Math.atan2( - x - (this.x + this.w2), - - (y - this.y - this.w2) - ) - this.angleOffset; - - if (this.o.flip) { - a = this.angleArc - a - this.PI2; - } - - if (this.angleArc != this.PI2 && (a < 0) && (a > -0.5)) { - - // if isset angleArc option, set to min if .5 under min - a = 0; - } else if (a < 0) { - a += this.PI2; - } - - ret = (a * (this.o.max - this.o.min) / this.angleArc) + this.o.min; - - this.o.stopper && (ret = max(min(ret, this.o.max), this.o.min)); - - return ret; - }; - - this.listen = function () { - - // bind MouseWheel - var s = this, mwTimerStop, - mwTimerRelease, - mw = function (e) { - e.preventDefault(); - - var ori = e.originalEvent, - deltaX = ori.detail || ori.wheelDeltaX, - deltaY = ori.detail || ori.wheelDeltaY, - v = s._validate(s.o.parse(s.$.val())) - + ( - deltaX > 0 || deltaY > 0 - ? s.o.step - : deltaX < 0 || deltaY < 0 ? -s.o.step : 0 - ); - - v = max(min(v, s.o.max), s.o.min); - - s.val(v, false); - - if (s.rH) { - // Handle mousewheel stop - clearTimeout(mwTimerStop); - mwTimerStop = setTimeout(function () { - s.rH(v); - mwTimerStop = null; - }, 100); - - // Handle mousewheel releases - if (!mwTimerRelease) { - mwTimerRelease = setTimeout(function () { - if (mwTimerStop) - s.rH(v); - mwTimerRelease = null; - }, 200); - } - } - }, - kval, - to, - m = 1, - kv = { - 37: -s.o.step, - 38: s.o.step, - 39: s.o.step, - 40: -s.o.step - }; - - this.$ - .bind( - "keydown", - function (e) { - var kc = e.keyCode; - - // numpad support - if (kc >= 96 && kc <= 105) { - kc = e.keyCode = kc - 48; - } - - kval = parseInt(String.fromCharCode(kc)); - - if (isNaN(kval)) { - (kc !== 13) // enter - && kc !== 8 // bs - && kc !== 9 // tab - && kc !== 189 // - - && (kc !== 190 - || s.$.val().match(/\./)) // . allowed once - && e.preventDefault(); - - // arrows - if ($.inArray(kc,[37,38,39,40]) > -1) { - e.preventDefault(); - - var v = s.o.parse(s.$.val()) + kv[kc] * m; - s.o.stopper && (v = max(min(v, s.o.max), s.o.min)); - - s.change(s._validate(v)); - s._draw(); - - // long time keydown speed-up - to = window.setTimeout(function () { - m *= 2; - }, 30); - } - } - } - ) - .bind( - "keyup", - function (e) { - if (isNaN(kval)) { - if (to) { - window.clearTimeout(to); - to = null; - m = 1; - s.val(s.$.val()); - } - } else { - // kval postcond - (s.$.val() > s.o.max && s.$.val(s.o.max)) - || (s.$.val() < s.o.min && s.$.val(s.o.min)); - } - } - ); - - this.$c.bind("mousewheel DOMMouseScroll", mw); - this.$.bind("mousewheel DOMMouseScroll", mw) - }; - - this.init = function () { - if (this.v < this.o.min - || this.v > this.o.max) { this.v = this.o.min; } - - this.$.val(this.v); - this.w2 = this.w / 2; - this.cursorExt = this.o.cursor / 100; - this.xy = this.w2 * this.scale; - this.lineWidth = this.xy * this.o.thickness; - this.lineCap = this.o.lineCap; - this.radius = this.xy - this.lineWidth / 2; - - this.o.angleOffset - && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset); - - this.o.angleArc - && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc); - - // deg to rad - this.angleOffset = this.o.angleOffset * Math.PI / 180; - this.angleArc = this.o.angleArc * Math.PI / 180; - - // compute start and end angles - this.startAngle = 1.5 * Math.PI + this.angleOffset; - this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; - - var s = max( - String(Math.abs(this.o.max)).length, - String(Math.abs(this.o.min)).length, - 2 - ) + 2; - - this.o.displayInput - && this.i.css({ - 'width' : ((this.w / 2 + 4) >> 0) + 'px', - 'height' : ((this.w / 3) >> 0) + 'px', - 'position' : 'absolute', - 'vertical-align' : 'middle', - 'margin-top' : ((this.w / 3) >> 0) + 'px', - 'margin-left' : '-' + ((this.w * 3 / 4 + 2) >> 0) + 'px', - 'border' : 0, - 'background' : 'none', - 'font' : this.o.fontWeight + ' ' + ((this.w / s) >> 0) + 'px ' + this.o.font, - 'text-align' : 'center', - 'color' : this.o.inputColor || this.o.fgColor, - 'padding' : '0px', - '-webkit-appearance': 'none' - }) || this.i.css({ - 'width': '0px', - 'visibility': 'hidden' - }); - }; - - this.change = function (v) { - this.cv = v; - this.$.val(this.o.format(v)); - }; - - this.angle = function (v) { - return (v - this.o.min) * this.angleArc / (this.o.max - this.o.min); - }; - - this.arc = function (v) { - var sa, ea; - v = this.angle(v); - if (this.o.flip) { - sa = this.endAngle + 0.00001; - ea = sa - v - 0.00001; - } else { - sa = this.startAngle - 0.00001; - ea = sa + v + 0.00001; - } - this.o.cursor - && (sa = ea - this.cursorExt) - && (ea = ea + this.cursorExt); - - return { - s: sa, - e: ea, - d: this.o.flip && !this.o.cursor - }; - }; - - this.draw = function () { - var c = this.g, // context - a = this.arc(this.cv), // Arc - pa, // Previous arc - r = 1; - - c.lineWidth = this.lineWidth; - c.lineCap = this.lineCap; - - if (this.o.bgColor !== "none") { - c.beginPath(); - c.strokeStyle = this.o.bgColor; - c.arc(this.xy, this.xy, this.radius, this.endAngle - 0.00001, this.startAngle + 0.00001, true); - c.stroke(); - } - - if (this.o.displayPrevious) { - pa = this.arc(this.v); - c.beginPath(); - c.strokeStyle = this.pColor; - c.arc(this.xy, this.xy, this.radius, pa.s, pa.e, pa.d); - c.stroke(); - r = this.cv == this.v; - } - - c.beginPath(); - c.strokeStyle = r ? this.o.fgColor : this.fgColor ; - c.arc(this.xy, this.xy, this.radius, a.s, a.e, a.d); - c.stroke(); - }; - - this.cancel = function () { - this.val(this.v); - }; - }; - - $.fn.dial = $.fn.knob = function (o) { - return this.each( - function () { - var d = new k.Dial(); - d.o = o; - d.$ = $(this); - d.run(); - } - ).parent(); - }; - -})); diff --git a/dashboard/lib/jquery-toggles/toggles-full.css b/dashboard/lib/jquery-toggles/toggles-full.css deleted file mode 100644 index 57bc4823..00000000 --- a/dashboard/lib/jquery-toggles/toggles-full.css +++ /dev/null @@ -1,241 +0,0 @@ -.toggle-slide { - overflow: hidden; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - direction: ltr; -} -.toggle-slide .toggle-on, -.toggle-slide .toggle-off, -.toggle-slide .toggle-blob { - float: left; -} -.toggle-slide .toggle-blob { - position: relative; - z-index: 99; - cursor: hand; - cursor: -webkit-grab; - cursor: -moz-grab; - cursor: grab; -} -.toggle-dark .toggle-slide { - border-radius: 5px; - -webkit-box-shadow: 0 0 0 1px #242529, 0 1px 0 1px #666; - box-shadow: 0 0 0 1px #242529, 0 1px 0 1px #666; -} -.toggle-dark .toggle-on, -.toggle-dark .toggle-off, -.toggle-dark .toggle-blob { - color: rgba(255, 255, 255, 0.7); - font-size: 11px; -} -.toggle-dark .toggle-on, -.toggle-dark .toggle-select .toggle-inner .active { - background: -webkit-gradient(linear, left top, left bottom, from(#1a70be), to(#31a2e1)); - background: -webkit-linear-gradient(top, #1a70be 0%, #31a2e1 100%); - background: linear-gradient(top, #1a70be 0%, #31a2e1 100%); -} -.toggle-dark .toggle-off, -.toggle-dark .toggle-select .toggle-on { - background: -webkit-gradient(linear, left top, left bottom, from(#242529), to(#34363b)); - background: -webkit-linear-gradient(top, #242529 0%, #34363b 100%); - background: linear-gradient(top, #242529 0%, #34363b 100%); -} -.toggle-dark .toggle-blob { - border-radius: 4px; - background: -webkit-gradient(linear, left top, left bottom, from(#cfcfcf), to(#f5f5f5)); - background: -webkit-linear-gradient(top, #cfcfcf 0%, #f5f5f5 100%); - background: linear-gradient(top, #cfcfcf 0%, #f5f5f5 100%); - -webkit-box-shadow: inset 0 0 0 1px #888, inset 0 0 0 2px white; - box-shadow: inset 0 0 0 1px #888, inset 0 0 0 2px white; -} -.toggle-dark .toggle-blob:hover { - background: -webkit-gradient(linear, left top, left bottom, from(#c0c0c0), to(#dadada)); - background: -webkit-linear-gradient(top, #c0c0c0 0%, #dadada 100%); - background: linear-gradient(top, #c0c0c0 0%, #dadada 100%); - -webkit-box-shadow: inset 0 0 0 1px #888,inset 0 0 0 2px #ddd; - box-shadow: inset 0 0 0 1px #888,inset 0 0 0 2px #ddd; -} -.toggle-iphone .toggle-slide { - border-radius: 9999px; - -webkit-box-shadow: 0 0 0 1px #999; - box-shadow: 0 0 0 1px #999; -} -.toggle-iphone .toggle-on, -.toggle-iphone .toggle-off { - color: white; - font-size: 18px; - font-weight: bold; - text-shadow: 0 0 8px rgba(0, 0, 0, 0.5); -} -.toggle-iphone .toggle-on { - border-radius: 9999px 0 0 9999px; - background: #037bda; - -webkit-box-shadow: inset 2px 2px 5px rgba(0, 0, 0, 0.4); - box-shadow: inset 2px 2px 5px rgba(0, 0, 0, 0.4); -} -.toggle-iphone .toggle-on:after { - background: -webkit-gradient(linear, left top, left bottom, from(#1189f1), to(#3797ef)); - background: -webkit-linear-gradient(top, #1189f1 0%, #3797ef 100%); - background: linear-gradient(to bottom, #1189f1 0%, #3797ef 100%); - height: 50%; - content: ''; - margin-top: -19%; - display: block; - border-radius: 9999px; - margin-left: 10%; -} -.toggle-iphone .toggle-off { - -webkit-box-shadow: inset -2px 2px 5px rgba(0, 0, 0, 0.4); - box-shadow: inset -2px 2px 5px rgba(0, 0, 0, 0.4); - border-radius: 0 9999px 9999px 0; - color: #828282; - background: #ECECEC; - text-shadow: 0 0 1px white; -} -.toggle-iphone .toggle-off:after { - background: -webkit-gradient(linear, left top, left bottom, from(#fafafa), to(#fdfdfd)); - background: -webkit-linear-gradient(top, #fafafa 0%, #fdfdfd 100%); - background: linear-gradient(to bottom, #fafafa 0%, #fdfdfd 100%); - height: 50%; - content: ''; - margin-top: -19%; - display: block; - margin-right: 10%; - border-radius: 9999px; -} -.toggle-iphone .toggle-blob { - border-radius: 50px; - background: -webkit-gradient(linear, left top, left bottom, from(#d1d1d1), to(#fafafa)); - background: -webkit-linear-gradient(top, #d1d1d1 0%, #fafafa 100%); - background: linear-gradient(to bottom, #d1d1d1 0%, #fafafa 100%); - -webkit-box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.6), inset 0 0 0 2px #ffffff, 0 0 3px rgba(0, 0, 0, 0.6); - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.6), inset 0 0 0 2px #ffffff, 0 0 3px rgba(0, 0, 0, 0.6); -} -.toggle-light .toggle-slide { - border-radius: 9999px; - -webkit-box-shadow: 0 0 0 1px #999; - box-shadow: 0 0 0 1px #999; -} -.toggle-light .toggle-on, -.toggle-light .toggle-off { - font-size: 11px; - font-weight: 500; -} -.toggle-light .toggle-on, -.toggle-light .toggle-select .toggle-inner .active { - background: #45a31f; - -webkit-box-shadow: inset 2px 2px 6px rgba(0, 0, 0, 0.2); - box-shadow: inset 2px 2px 6px rgba(0, 0, 0, 0.2); - text-shadow: 1px 1px rgba(0, 0, 0, 0.2); - color: rgba(255, 255, 255, 0.8); -} -.toggle-light .toggle-off, -.toggle-light .toggle-select .toggle-on { - color: rgba(0, 0, 0, 0.6); - text-shadow: 0 1px rgba(255, 255, 255, 0.2); - background: -webkit-gradient(linear, left top, left bottom, from(#cfcfcf), to(#f5f5f5)); - background: -webkit-linear-gradient(#cfcfcf, #f5f5f5); - background: linear-gradient(#cfcfcf, #f5f5f5); -} -.toggle-light .toggle-blob { - border-radius: 50px; - background: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#cfcfcf)); - background: -webkit-linear-gradient(#f5f5f5, #cfcfcf); - background: linear-gradient(#f5f5f5, #cfcfcf); - -webkit-box-shadow: 1px 1px 2px #888; - box-shadow: 1px 1px 2px #888; -} -.toggle-light .toggle-blob:hover { - background: -webkit-gradient(linear, left top, left bottom, from(#e4e4e4), to(#f9f9f9)); - background: -webkit-linear-gradient(#e4e4e4, #f9f9f9); - background: linear-gradient(#e4e4e4, #f9f9f9); -} -.toggle-modern .toggle-slide { - border-radius: 4px; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25), 0 0 1px rgba(0, 0, 0, 0.2); - background: -webkit-gradient(linear, left top, left bottom, from(#c0c5c9), to(#a1a9af)); - background: -webkit-linear-gradient(#c0c5c9, #a1a9af); - background: linear-gradient(#c0c5c9, #a1a9af); - -webkit-box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255, 255, 255, 0.15); - box-shadow: inset 0 2px 1px rgba(0, 0, 0, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255, 255, 255, 0.15); -} -.toggle-modern .toggle-on, -.toggle-modern .toggle-off { - -webkit-transition: all 0.1s ease-out; - transition: all 0.1s ease-out; - color: white; - text-shadow: 1px 1px rgba(0, 0, 0, 0.1); - font-size: 11px; - -webkit-box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.2), inset 0 -1px 1px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.2), inset 0 -1px 1px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(0, 0, 0, 0.2); -} -.toggle-modern .toggle-select .toggle-off, -.toggle-modern .toggle-select .toggle-on { - background: none; -} -.toggle-modern .toggle-off, -.toggle-modern .toggle-off.active { - background: -webkit-gradient(linear, left top, left bottom, from(#737e8d), to(#3f454e)); - background: -webkit-linear-gradient(#737e8d, #3f454e); - background: linear-gradient(#737e8d, #3f454e); -} -.toggle-modern .toggle-on, -.toggle-modern .toggle-on.active { - background: -webkit-gradient(linear, left top, left bottom, from(#4894cd), to(#2852a6)); - background: -webkit-linear-gradient(#4894cd, #2852a6); - background: linear-gradient(#4894cd, #2852a6); -} -.toggle-modern .toggle-blob { - background: -webkit-gradient(linear, left top, left bottom, from(#c0c6c9), to(#81898f)); - background: -webkit-linear-gradient(#c0c6c9, #81898f); - background: linear-gradient(#c0c6c9, #81898f); - -webkit-box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.2), inset 0 -1px 1px rgba(0, 0, 0, 0.1), 1px 1px 2px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.2), inset 0 -1px 1px rgba(0, 0, 0, 0.1), 1px 1px 2px rgba(0, 0, 0, 0.2); - border-radius: 3px; -} -.toggle-modern .toggle-blob:hover { - background-image: -webkit-gradient(linear, left top, left bottom, from(#a1a9af), to(#a1a9af)); - background-image: -webkit-linear-gradient(#a1a9af, #a1a9af); - background-image: linear-gradient(#a1a9af, #a1a9af); -} -.toggle-soft .toggle-slide { - border-radius: 5px; - -webkit-box-shadow: 0 0 0 1px #999; - box-shadow: 0 0 0 1px #999; -} -.toggle-soft .toggle-on, -.toggle-soft .toggle-off { - color: rgba(0, 0, 0, 0.7); - font-size: 11px; - text-shadow: 1px 1px white; -} -.toggle-soft .toggle-on, -.toggle-soft .toggle-select .toggle-inner .active { - background: -webkit-gradient(linear, left top, left bottom, from(#d2ff52), to(#91e842)); - background: -webkit-linear-gradient(#d2ff52, #91e842); - background: linear-gradient(#d2ff52, #91e842); -} -.toggle-soft .toggle-off, -.toggle-soft .toggle-select .toggle-on { - background: -webkit-gradient(linear, left top, left bottom, from(#cfcfcf), to(#f5f5f5)); - background: -webkit-linear-gradient(#cfcfcf, #f5f5f5); - background: linear-gradient(#cfcfcf, #f5f5f5); -} -.toggle-soft .toggle-blob { - border-radius: 4px; - background: -webkit-gradient(linear, left top, left bottom, from(#cfcfcf), to(#f5f5f5)); - background: -webkit-linear-gradient(#cfcfcf, #f5f5f5); - background: linear-gradient(#cfcfcf, #f5f5f5); - -webkit-box-shadow: inset 0 0 0 1px #bbb, inset 0 0 0 2px white; - box-shadow: inset 0 0 0 1px #bbb, inset 0 0 0 2px white; -} -.toggle-soft .toggle-blob:hover { - background: -webkit-gradient(linear, left top, left bottom, from(#e4e4e4), to(#f9f9f9)); - background: -webkit-linear-gradient(#e4e4e4, #f9f9f9); - background: linear-gradient(#e4e4e4, #f9f9f9); - -webkit-box-shadow: inset 0 0 0 1px #ddd,inset 0 0 0 2px #ddd; - box-shadow: inset 0 0 0 1px #ddd,inset 0 0 0 2px #ddd; -} diff --git a/dashboard/lib/jquery-toggles/toggles.js b/dashboard/lib/jquery-toggles/toggles.js deleted file mode 100644 index bf048a89..00000000 --- a/dashboard/lib/jquery-toggles/toggles.js +++ /dev/null @@ -1,294 +0,0 @@ -/** -@license jQuery Toggles v3.1.5 -Copyright 2012 - 2015 Simon Tabor - MIT License -https://github.com/simontabor/jquery-toggles / http://simontabor.com/labs/toggles -*/ - -(function(root) { - - var factory = function($) { - -var Toggles = root['Toggles'] = function(el, opts) { - var self = this; - - if (typeof opts === 'boolean' && el.data('toggles')) { - el.data('toggles').toggle(opts); - return; - } - - var dataAttr = [ 'on', 'drag', 'click', 'width', 'height', 'animate', 'easing', 'type', 'checkbox' ]; - var dataOpts = {}; - for (var i = 0; i < dataAttr.length; i++) { - var opt = el.data('toggle-' + dataAttr[i]); - if (typeof opt !== 'undefined') dataOpts[dataAttr[i]] = opt; - } - - // extend default opts with the users options - opts = self.opts = $.extend({ - // can the toggle be dragged - 'drag': true, - // can it be clicked to toggle - 'click': true, - 'text': { - // text for the ON/OFF position - 'on': 'ENABLED', - 'off': 'DISABLED' - }, - // is the toggle ON on init - 'on': false, - // animation time (ms) - 'animate': 250, - // animation transition, - 'easing': 'swing', - // the checkbox to toggle (for use in forms) - 'checkbox': null, - // element that can be clicked on to toggle. removes binding from the toggle itself (use nesting) - 'clicker': null, - // width used if not set in css - 'width': 100, - // height if not set in css - 'height': 20, - // defaults to a compact toggle, other option is 'select' where both options are shown at once - 'type': 'compact', - // the event name to fire when we toggle - 'event': 'toggle' - }, opts || {}, dataOpts); - - self.el = el; - - el.data('toggles', self); - - self.selectType = opts['type'] === 'select'; - - // make checkbox a jquery element - self.checkbox = $(opts['checkbox']); - - // leave as undefined if not set - if (opts['clicker']) self.clicker = $(opts['clicker']); - - self.createEl(); - self.bindEvents(); - - // set active to the opposite of what we want, so toggle will run properly - self['active'] = !opts['on']; - - // toggle the toggle to the correct state with no animation and no event - self.toggle(opts['on'], true, true); -}; - -Toggles.prototype.createEl = function() { - var self = this; - - var height = self.el.height(); - var width = self.el.width(); - - // if the element doesnt have an explicit height/width in css, set them - if (!height) self.el.height(height = self.opts['height']); - if (!width) self.el.width(width = self.opts['width']); - - self.h = height; - self.w = width; - - var div = function(name) { - return $('<div class="toggle-' + name +'">'); - }; - - self.els = { - // wrapper inside toggle - slide: div('slide'), - - // inside slide, this bit moves - inner: div('inner'), - - // the on/off divs - on: div('on'), - off: div('off'), - - // the grip to drag the toggle - blob: div('blob') - }; - - var halfHeight = height / 2; - var onOffWidth = width - halfHeight; - - var isSelect = self.selectType; - - // set up the CSS for the individual elements - self.els.on - .css({ - height: height, - width: onOffWidth, - textIndent: isSelect ? '' : -halfHeight, - lineHeight: height + 'px' - }) - .html(self.opts['text']['on']); - - self.els.off - .css({ - height: height, - width: onOffWidth, - marginLeft: isSelect ? '' : -halfHeight, - textIndent: isSelect ? '' : halfHeight, - lineHeight: height + 'px' - }) - .html(self.opts['text']['off']); - - self.els.blob.css({ - height: height, - width: height, - marginLeft: -halfHeight - }); - - self.els.inner.css({ - width: width * 2 - height, - marginLeft: (isSelect || self['active']) ? 0 : -width + height - }); - - if (self.selectType) { - self.els.slide.addClass('toggle-select'); - self.el.css('width', onOffWidth * 2); - self.els.blob.hide(); - } - - // construct the toggle - self.els.inner.append(self.els.on, self.els.blob, self.els.off); - self.els.slide.html(self.els.inner); - self.el.html(self.els.slide); -}; - -Toggles.prototype.bindEvents = function() { - var self = this; - - // evt handler for click events - var clickHandler = function(e) { - - // if the target isn't the blob or dragging is disabled, toggle! - if (e['target'] !== self.els.blob[0] || !self.opts['drag']) { - self.toggle(); - } - }; - - // if click is enabled and toggle isn't within the clicker element (stops double binding) - if (self.opts['click'] && (!self.opts['clicker'] || !self.opts['clicker'].has(self.el).length)) { - self.el.on('click', clickHandler); - } - - // setup the clicker element - if (self.opts['clicker']) { - self.opts['clicker'].on('click', clickHandler); - } - - // bind up dragging stuff - if (self.opts['drag'] && !self.selectType) self.bindDrag(); -}; - -Toggles.prototype.bindDrag = function() { - var self = this; - - // time to begin the dragging parts/blob clicks - var diff; - var slideLimit = (self.w - self.h) / 4; - - // fired on mouseup and mouseleave events - var upLeave = function(e) { - self.el.off('mousemove'); - self.els.slide.off('mouseleave'); - self.els.blob.off('mouseup'); - - if (!diff && self.opts['click'] && e.type !== 'mouseleave') { - self.toggle(); - return; - } - - var overBound = self['active'] ? diff < -slideLimit : diff > slideLimit; - if (overBound) { - // dragged far enough, toggle - self.toggle(); - } else { - // reset to previous state - self.els.inner.stop().animate({ - marginLeft: self['active'] ? 0 : -self.w + self.h - }, self.opts['animate'] / 2); - } - }; - - var wh = -self.w + self.h; - - self.els.blob.on('mousedown', function(e) { - - // reset diff - diff = 0; - - self.els.blob.off('mouseup'); - self.els.slide.off('mouseleave'); - var cursor = e.pageX; - - self.el.on('mousemove', self.els.blob, function(e) { - diff = e.pageX - cursor; - var marginLeft; - - - if (self['active']) { - - marginLeft = diff; - - // keep it within the limits - if (diff > 0) marginLeft = 0; - if (diff < wh) marginLeft = wh; - } else { - - marginLeft = diff + wh; - - if (diff < 0) marginLeft = wh; - if (diff > -wh) marginLeft = 0; - - } - - self.els.inner.css('margin-left',marginLeft); - }); - - self.els.blob.on('mouseup', upLeave); - self.els.slide.on('mouseleave', upLeave); - }); -}; - -Toggles.prototype.toggle = function(state, noAnimate, noEvent) { - var self = this; - - // check we arent already in the desired state - if (self['active'] === state) return; - - var active = self['active'] = !self['active']; - - self.el.data('toggle-active', active); - - self.els.off.toggleClass('active', !active); - self.els.on.toggleClass('active', active); - self.checkbox.prop('checked', active); - - if (!noEvent) self.el.trigger(self.opts['event'], active); - - if (self.selectType) return; - - var margin = active ? 0 : -self.w + self.h; - - // move the toggle! - self.els.inner.stop().animate({ - 'marginLeft': margin - }, noAnimate ? 0 : self.opts['animate']); -}; - - $.fn['toggles'] = function(opts) { - return this.each(function() { - new Toggles($(this), opts); - }); - }; - }; - - if (typeof define === 'function' && define['amd']) { - define(['jquery'], factory); - } else { - factory(root['jQuery'] || root['Zepto'] || root['ender'] || root['$'] || $); - } - -})(this); diff --git a/dashboard/lib/jquery-ui/jquery-ui.css b/dashboard/lib/jquery-ui/jquery-ui.css deleted file mode 100644 index 975aa1bd..00000000 --- a/dashboard/lib/jquery-ui/jquery-ui.css +++ /dev/null @@ -1,1225 +0,0 @@ -/*! jQuery UI - v1.11.3 - 2015-02-12 -* http://jqueryui.com -* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.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-clearfix { - min-height: 0; /* support: IE7 */ -} -.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; -} - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - - -/* 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; - min-height: 0; /* support: IE7 */ - font-size: 100%; -} -.ui-accordion .ui-accordion-icons { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-icons .ui-accordion-icons { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-header .ui-accordion-header-icon { - position: absolute; - left: .5em; - top: 50%; - margin-top: -8px; -} -.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-button { - display: inline-block; - position: relative; - padding: 0; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - overflow: visible; /* removes extra width in IE */ -} -.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: 2.2em; -} -/* button elements seem to need a little more width */ -button.ui-button-icon-only { - width: 2.4em; -} -.ui-button-icons-only { - width: 3.4em; -} -button.ui-button-icons-only { - width: 3.7em; -} - -/* button text element */ -.ui-button .ui-button-text { - display: block; - line-height: normal; -} -.ui-button-text-only .ui-button-text { - padding: .4em 1em; -} -.ui-button-icon-only .ui-button-text, -.ui-button-icons-only .ui-button-text { - padding: .4em; - text-indent: -9999999px; -} -.ui-button-text-icon-primary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 1em .4em 2.1em; -} -.ui-button-text-icon-secondary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 2.1em .4em 1em; -} -.ui-button-text-icons .ui-button-text { - padding-left: 2.1em; - padding-right: 2.1em; -} -/* no icon support for input elements, provide padding by default */ -input.ui-button { - padding: .4em 1em; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon, -.ui-button-text-icon-primary .ui-icon, -.ui-button-text-icon-secondary .ui-icon, -.ui-button-text-icons .ui-icon, -.ui-button-icons-only .ui-icon { - position: absolute; - top: 50%; - margin-top: -8px; -} -.ui-button-icon-only .ui-icon { - left: 50%; - margin-left: -8px; -} -.ui-button-text-icon-primary .ui-button-icon-primary, -.ui-button-text-icons .ui-button-icon-primary, -.ui-button-icons-only .ui-button-icon-primary { - left: .5em; -} -.ui-button-text-icon-secondary .ui-button-icon-secondary, -.ui-button-text-icons .ui-button-icon-secondary, -.ui-button-icons-only .ui-button-icon-secondary { - right: .5em; -} - -/* button sets */ -.ui-buttonset { - margin-right: 7px; -} -.ui-buttonset .ui-button { - margin-left: 0; - margin-right: -.3em; -} - -/* workarounds */ -/* reset extra padding in Firefox, see h5bp.com/l */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} -.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; -} -.ui-dialog { - overflow: hidden; - 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-se { - width: 12px; - height: 12px; - right: -5px; - bottom: -5px; - background-position: 16px 16px; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -.ui-draggable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-menu { - list-style: none; - padding: 0; - margin: 0; - display: block; - outline: none; -} -.ui-menu .ui-menu { - position: absolute; -} -.ui-menu .ui-menu-item { - position: relative; - margin: 0; - padding: 3px 1em 3px .4em; - cursor: pointer; - min-height: 0; /* support: IE7 */ - /* support: IE10, see #8844 */ - list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); -} -.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 { - 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-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-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-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; - /* Support: IE7 */ - 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-button { - display: inline-block; - overflow: hidden; - position: relative; - text-decoration: none; - cursor: pointer; -} -.ui-selectmenu-button span.ui-icon { - right: 0.5em; - left: auto; - margin-top: -8px; - position: absolute; - top: 50%; -} -.ui-selectmenu-button span.ui-selectmenu-text { - text-align: left; - padding: 0.4em 2.1em 0.4em 1em; - display: block; - line-height: 1.4; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.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: 0; - margin: .2em 0; - vertical-align: middle; - margin-left: .4em; - margin-right: 22px; -} -.ui-spinner-button { - width: 16px; - 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: none; - border-bottom: none; - border-right: none; -} -/* vertically center icon */ -.ui-spinner .ui-icon { - position: absolute; - margin-top: -8px; - top: 50%; - left: 0; -} -.ui-spinner-up { - top: 0; -} -.ui-spinner-down { - bottom: 0; -} - -/* TR overrides */ -.ui-spinner .ui-icon-triangle-1-s { - /* need to fix icons sprite */ - background-position: -65px -16px; -} -.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; - -webkit-box-shadow: 0 0 5px #aaa; - box-shadow: 0 0 5px #aaa; -} -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-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 { - 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 { - 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 { - 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 { - color: #2b2b2b; - text-decoration: none; -} -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { - border: 1px solid #003eff; - background: #007fff; - font-weight: normal; - 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-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-default .ui-icon { - background-image: url("images/ui-icons_777777_256x240.png"); -} -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url("images/ui-icons_555555_256x240.png"); -} -.ui-state-active .ui-icon { - background-image: url("images/ui-icons_ffffff_256x240.png"); -} -.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"); -} - -/* positioning */ -.ui-icon-blank { background-position: 16px 16px; } -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-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: -64px -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: -64px -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: 0 -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 { - margin: 0px 0 0 0px; - padding: 5px; - background: #666666; - opacity: .3; - filter: Alpha(Opacity=30); /* support: IE8 */ - border-radius: 8px; -} diff --git a/dashboard/lib/jquery-ui/jquery-ui.js b/dashboard/lib/jquery-ui/jquery-ui.js deleted file mode 100644 index 70cbcbf2..00000000 --- a/dashboard/lib/jquery-ui/jquery-ui.js +++ /dev/null @@ -1,16617 +0,0 @@ -/*! jQuery UI - v1.11.4 - 2015-03-11 -* http://jqueryui.com -* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.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 { - - // Browser globals - factory( jQuery ); - } -}(function( $ ) { -/*! - * jQuery UI Core 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/category/ui-core/ - */ - - -// $.ui might exist from components with no dependencies, e.g., $.ui.position -$.ui = $.ui || {}; - -$.extend( $.ui, { - version: "1.11.4", - - 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 - } -}); - -// plugins -$.fn.extend({ - 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; - }, - - 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" ); - } - }); - } -}); - -// selectors -function focusable( element, isTabIndexNotNaN ) { - var map, mapName, img, - 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 + "']" )[ 0 ]; - return !!img && visible( img ); - } - return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ? - !element.disabled : - "a" === nodeName ? - element.href || isTabIndexNotNaN : - isTabIndexNotNaN) && - // the element and all of its ancestors must be visible - visible( element ); -} - -function visible( element ) { - return $.expr.filters.visible( element ) && - !$( element ).parents().addBack().filter(function() { - return $.css( this, "visibility" ) === "hidden"; - }).length; -} - -$.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 ] ); - }, - - focusable: function( element ) { - return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); - }, - - tabbable: function( element ) { - var tabIndex = $.attr( element, "tabindex" ), - isTabIndexNaN = isNaN( tabIndex ); - return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); - } -}); - -// support: jQuery <1.8 -if ( !$( "<a>" ).outerWidth( 1 ).jquery ) { - $.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" ); - }); - }; - }); -} - -// support: jQuery <1.8 -if ( !$.fn.addBack ) { - $.fn.addBack = function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - }; -} - -// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) -if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { - $.fn.removeData = (function( removeData ) { - return function( key ) { - if ( arguments.length ) { - return removeData.call( this, $.camelCase( key ) ); - } else { - return removeData.call( this ); - } - }; - })( $.fn.removeData ); -} - -// deprecated -$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); - -$.fn.extend({ - focus: (function( orig ) { - return function( delay, fn ) { - return typeof delay === "number" ? - this.each(function() { - var elem = this; - setTimeout(function() { - $( elem ).focus(); - if ( fn ) { - fn.call( elem ); - } - }, delay ); - }) : - orig.apply( this, arguments ); - }; - })( $.fn.focus ), - - disableSelection: (function() { - var eventType = "onselectstart" in document.createElement( "div" ) ? - "selectstart" : - "mousedown"; - - return function() { - return this.bind( eventType + ".ui-disableSelection", function( event ) { - event.preventDefault(); - }); - }; - })(), - - enableSelection: function() { - return this.unbind( ".ui-disableSelection" ); - }, - - zIndex: function( zIndex ) { - if ( zIndex !== undefined ) { - return this.css( "zIndex", zIndex ); - } - - if ( this.length ) { - var elem = $( this[ 0 ] ), 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; - } -}); - -// $.ui.plugin is deprecated. Use $.widget() extensions instead. -$.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 ); - } - } - } -}; - - -/*! - * 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: "<div>", - 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; - - -/*! - * jQuery UI Mouse 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/mouse/ - */ - - -var mouseHandled = false; -$( document ).mouseup( function() { - mouseHandled = false; -}); - -var mouse = $.widget("ui.mouse", { - version: "1.11.4", - options: { - cancel: "input,textarea,button,select,option", - distance: 1, - delay: 0 - }, - _mouseInit: function() { - var that = this; - - this.element - .bind("mousedown." + this.widgetName, function(event) { - return that._mouseDown(event); - }) - .bind("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.unbind("." + this.widgetName); - if ( this._mouseMoveDelegate ) { - this.document - .unbind("mousemove." + this.widgetName, this._mouseMoveDelegate) - .unbind("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 - .bind( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .bind( "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 ) { - 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 - .unbind( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .unbind( "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); - } - - mouseHandled = false; - return false; - }, - - _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; } -}); - - -/*! - * jQuery UI Position 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/position/ - */ - -(function() { - -$.ui = $.ui || {}; - -var cachedScrollbarWidth, supportsOffsetFractions, - max = Math.max, - abs = Math.abs, - round = Math.round, - 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; - return { - element: withinElement, - isWindow: isWindow, - isDocument: isDocument, - offset: withinElement.offset() || { left: 0, top: 0 }, - scrollLeft: withinElement.scrollLeft(), - scrollTop: withinElement.scrollTop(), - - // support: jQuery 1.6.x - // jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows - width: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(), - height: isWindow || isDocument ? withinElement.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 ]; - - // if the browser doesn't support fractions, then round for consistent results - if ( !supportsOffsetFractions ) { - position.left = round( position.left ); - position.top = round( position.top ); - } - - 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 ); - } - } -}; - -// fraction support test -(function() { - var testElement, testElementParent, testElementStyle, offsetLeft, i, - body = document.getElementsByTagName( "body" )[ 0 ], - div = document.createElement( "div" ); - - //Create a "fake body" for testing based on method used in jQuery.support - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0, - background: "none" - }; - if ( body ) { - $.extend( testElementStyle, { - position: "absolute", - left: "-1000px", - top: "-1000px" - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || document.documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - div.style.cssText = "position: absolute; left: 10.7432222px;"; - - offsetLeft = $( div ).offset().left; - supportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11; - - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); -})(); - -})(); - -var position = $.ui.position; - - -/*! - * jQuery UI Accordion 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/accordion/ - */ - - -var accordion = $.widget( "ui.accordion", { - version: "1.11.4", - options: { - active: 0, - animate: {}, - 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.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) - // ARIA - .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 icons = this.options.icons; - if ( icons ) { - $( "<span>" ) - .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) - .prependTo( this.headers ); - this.active.children( ".ui-accordion-header-icon" ) - .removeClass( icons.header ) - .addClass( icons.activeHeader ); - this.headers.addClass( "ui-accordion-icons" ); - } - }, - - _destroyIcons: function() { - this.headers - .removeClass( "ui-accordion-icons" ) - .children( ".ui-accordion-header-icon" ) - .remove(); - }, - - _destroy: function() { - var contents; - - // clean up main element - this.element - .removeClass( "ui-accordion ui-widget ui-helper-reset" ) - .removeAttr( "role" ); - - // clean up headers - this.headers - .removeClass( "ui-accordion-header ui-accordion-header-active ui-state-default " + - "ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) - .removeAttr( "role" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "aria-selected" ) - .removeAttr( "aria-controls" ) - .removeAttr( "tabIndex" ) - .removeUniqueId(); - - this._destroyIcons(); - - // clean up content panels - contents = this.headers.next() - .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom " + - "ui-accordion-content ui-accordion-content-active ui-state-disabled" ) - .css( "display", "" ) - .removeAttr( "role" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "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(); - } - } - - // #5332 - opacity doesn't cascade to positioned elements in IE - // so we need to add the disabled class to the headers and panels - if ( key === "disabled" ) { - this.element - .toggleClass( "ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - this.headers.add( this.headers.next() ) - .toggleClass( "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.focus(); - event.preventDefault(); - } - }, - - _panelKeyDown: function( event ) { - if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { - $( event.currentTarget ).prev().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 ) - .addClass( "ui-accordion-header ui-state-default ui-corner-all" ); - - this.panels = this.headers.next() - .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) - .filter( ":not(.ui-accordion-content-active)" ) - .hide(); - - // 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 ) - .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ) - .removeClass( "ui-corner-all" ); - this.active.next() - .addClass( "ui-accordion-content-active" ) - .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() { - maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); - }) - .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 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 - active.removeClass( "ui-accordion-header-active ui-state-active" ); - if ( options.icons ) { - active.children( ".ui-accordion-header-icon" ) - .removeClass( options.icons.activeHeader ) - .addClass( options.icons.header ); - } - - if ( !clickedIsActive ) { - clicked - .removeClass( "ui-corner-all" ) - .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); - if ( options.icons ) { - clicked.children( ".ui-accordion-header-icon" ) - .removeClass( options.icons.header ) - .addClass( options.icons.activeHeader ); - } - - clicked - .next() - .addClass( "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; - - toHide - .removeClass( "ui-accordion-content-active" ) - .prev() - .removeClass( "ui-corner-top" ) - .addClass( "ui-corner-all" ); - - // Work around for rendering bug in IE (#5421) - if ( toHide.length ) { - toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; - } - this._trigger( "activate", null, data ); - } -}); - - -/*! - * jQuery UI Menu 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/menu/ - */ - - -var menu = $.widget( "ui.menu", { - version: "1.11.4", - defaultElement: "<ul>", - delay: 300, - options: { - icons: { - submenu: "ui-icon-carat-1-e" - }, - items: "> *", - menus: "ul", - position: { - my: "left-1 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() - .addClass( "ui-menu ui-widget ui-widget-content" ) - .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) - .attr({ - role: this.options.role, - tabIndex: 0 - }); - - if ( this.options.disabled ) { - this.element - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } - - 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 ); - 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" ) && $( this.document[ 0 ].activeElement ).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 target = $( event.currentTarget ); - // 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 - target.siblings( ".ui-state-active" ).removeClass( "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() { - if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { - 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() { - // Destroy (sub)menus - this.element - .removeAttr( "aria-activedescendant" ) - .find( ".ui-menu" ).addBack() - .removeClass( "ui-menu ui-widget ui-widget-content ui-menu-icons ui-front" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-disabled" ) - .removeUniqueId() - .show(); - - // Destroy menu items - this.element.find( ".ui-menu-item" ) - .removeClass( "ui-menu-item" ) - .removeAttr( "role" ) - .removeAttr( "aria-disabled" ) - .removeUniqueId() - .removeClass( "ui-state-hover" ) - .removeAttr( "tabIndex" ) - .removeAttr( "role" ) - .removeAttr( "aria-haspopup" ) - .children().each( function() { - var elem = $( this ); - if ( elem.data( "ui-menu-submenu-carat" ) ) { - elem.remove(); - } - }); - - // Destroy menu dividers - this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); - }, - - _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 || ""; - character = String.fromCharCode( event.keyCode ); - skip = false; - - 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.is( ".ui-state-disabled" ) ) { - if ( this.active.is( "[aria-haspopup='true']" ) ) { - this.expand( event ); - } else { - this.select( event ); - } - } - }, - - refresh: function() { - var menus, items, - that = this, - icon = this.options.icons.submenu, - submenus = this.element.find( this.options.menus ); - - this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ); - - // Initialize nested menus - submenus.filter( ":not(.ui-menu)" ) - .addClass( "ui-menu ui-widget ui-widget-content ui-front" ) - .hide() - .attr({ - role: this.options.role, - "aria-hidden": "true", - "aria-expanded": "false" - }) - .each(function() { - var menu = $( this ), - item = menu.parent(), - submenuCarat = $( "<span>" ) - .addClass( "ui-menu-icon ui-icon " + icon ) - .data( "ui-menu-submenu-carat", true ); - - item - .attr( "aria-haspopup", "true" ) - .prepend( submenuCarat ); - menu.attr( "aria-labelledby", item.attr( "id" ) ); - }); - - 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 ) ) { - item.addClass( "ui-widget-content ui-menu-divider" ); - } - }); - - // Don't refresh list items that are already adapted - items.not( ".ui-menu-item, .ui-menu-divider" ) - .addClass( "ui-menu-item" ) - .uniqueId() - .attr({ - tabIndex: -1, - role: this._itemRole() - }); - - // 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" ) { - this.element.find( ".ui-menu-icon" ) - .removeClass( this.options.icons.submenu ) - .addClass( value.submenu ); - } - if ( key === "disabled" ) { - this.element - .toggleClass( "ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - } - this._super( key, value ); - }, - - focus: function( event, item ) { - var nested, focused; - this.blur( event, event && event.type === "focus" ); - - this._scrollIntoView( item ); - - this.active = item.first(); - focused = this.active.addClass( "ui-state-focus" ).removeClass( "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 - this.active - .parent() - .closest( ".ui-menu-item" ) - .addClass( "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.active.removeClass( "ui-state-focus" ); - this.active = null; - - this._trigger( "blur", event, { item: this.active } ); - }, - - _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 carat 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 ); - 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" ) - .end() - .find( ".ui-state-active" ).not( ".ui-state-focus" ) - .removeClass( "ui-state-active" ); - }, - - _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 ).text() ) ); - }); - } -}); - - -/*! - * jQuery UI Autocomplete 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/autocomplete/ - */ - - -$.widget( "ui.autocomplete", { - version: "1.11.4", - 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"; - - this.isMultiLine = - // Textareas are always multi-line - isTextarea ? true : - // Inputs are always single-line, even if inside a contentEditable element - // IE also treats inputs as contentEditable - isInput ? false : - // All other element types are determined by whether or not they're contentEditable - this.element.prop( "isContentEditable" ); - - this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; - this.isNewMenu = true; - - this.element - .addClass( "ui-autocomplete-input" ) - .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>" ) - .addClass( "ui-autocomplete ui-front" ) - .appendTo( this._appendTo() ) - .menu({ - // disable ARIA support, the live region takes care of that - role: null - }) - .hide() - .menu( "instance" ); - - 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; - }); - - // clicking on the scrollbar causes focus to shift to the body - // but we can't detect a mouseup or a click immediately afterward - // so we have to track the next mousedown and close the menu if - // the user clicks somewhere outside of the autocomplete - var menuElement = this.menu.element[ 0 ]; - if ( !$( event.target ).closest( ".ui-menu-item" ).length ) { - this._delay(function() { - var that = this; - this.document.one( "mousedown", function( event ) { - if ( event.target !== that.element[ 0 ] && - event.target !== menuElement && - !$.contains( menuElement, event.target ) ) { - that.close(); - } - }); - }); - } - }, - 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 ] !== this.document[ 0 ].activeElement ) { - this.element.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 = $( "<span>", { - role: "status", - "aria-live": "assertive", - "aria-relevant": "additions" - }) - .addClass( "ui-helper-hidden-accessible" ) - .appendTo( this.document[ 0 ].body ); - - // 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 - .removeClass( "ui-autocomplete-input" ) - .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(); - } - }, - - _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" ); - } - - 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.element.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.element.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 ) { - 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(); - } - }, - - _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>" ).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(); - } - } -}); - -$.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 autocomplete = $.ui.autocomplete; - - -/*! - * jQuery UI Button 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/button/ - */ - - -var lastActive, - baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", - typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only", - formResetHandler = function() { - var form = $( this ); - setTimeout(function() { - form.find( ":ui-button" ).button( "refresh" ); - }, 1 ); - }, - radioGroup = function( radio ) { - var name = radio.name, - form = radio.form, - radios = $( [] ); - if ( name ) { - name = name.replace( /'/g, "\\'" ); - if ( form ) { - radios = $( form ).find( "[name='" + name + "'][type=radio]" ); - } else { - radios = $( "[name='" + name + "'][type=radio]", radio.ownerDocument ) - .filter(function() { - return !this.form; - }); - } - } - return radios; - }; - -$.widget( "ui.button", { - version: "1.11.4", - defaultElement: "<button>", - options: { - disabled: null, - text: true, - label: null, - icons: { - primary: null, - secondary: null - } - }, - _create: function() { - this.element.closest( "form" ) - .unbind( "reset" + this.eventNamespace ) - .bind( "reset" + this.eventNamespace, formResetHandler ); - - if ( typeof this.options.disabled !== "boolean" ) { - this.options.disabled = !!this.element.prop( "disabled" ); - } else { - this.element.prop( "disabled", this.options.disabled ); - } - - this._determineButtonType(); - this.hasTitle = !!this.buttonElement.attr( "title" ); - - var that = this, - options = this.options, - toggleButton = this.type === "checkbox" || this.type === "radio", - activeClass = !toggleButton ? "ui-state-active" : ""; - - if ( options.label === null ) { - options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html()); - } - - this._hoverable( this.buttonElement ); - - this.buttonElement - .addClass( baseClasses ) - .attr( "role", "button" ) - .bind( "mouseenter" + this.eventNamespace, function() { - if ( options.disabled ) { - return; - } - if ( this === lastActive ) { - $( this ).addClass( "ui-state-active" ); - } - }) - .bind( "mouseleave" + this.eventNamespace, function() { - if ( options.disabled ) { - return; - } - $( this ).removeClass( activeClass ); - }) - .bind( "click" + this.eventNamespace, function( event ) { - if ( options.disabled ) { - event.preventDefault(); - event.stopImmediatePropagation(); - } - }); - - // Can't use _focusable() because the element that receives focus - // and the element that gets the ui-state-focus class are different - this._on({ - focus: function() { - this.buttonElement.addClass( "ui-state-focus" ); - }, - blur: function() { - this.buttonElement.removeClass( "ui-state-focus" ); - } - }); - - if ( toggleButton ) { - this.element.bind( "change" + this.eventNamespace, function() { - that.refresh(); - }); - } - - if ( this.type === "checkbox" ) { - this.buttonElement.bind( "click" + this.eventNamespace, function() { - if ( options.disabled ) { - return false; - } - }); - } else if ( this.type === "radio" ) { - this.buttonElement.bind( "click" + this.eventNamespace, function() { - if ( options.disabled ) { - return false; - } - $( this ).addClass( "ui-state-active" ); - that.buttonElement.attr( "aria-pressed", "true" ); - - var radio = that.element[ 0 ]; - radioGroup( radio ) - .not( radio ) - .map(function() { - return $( this ).button( "widget" )[ 0 ]; - }) - .removeClass( "ui-state-active" ) - .attr( "aria-pressed", "false" ); - }); - } else { - this.buttonElement - .bind( "mousedown" + this.eventNamespace, function() { - if ( options.disabled ) { - return false; - } - $( this ).addClass( "ui-state-active" ); - lastActive = this; - that.document.one( "mouseup", function() { - lastActive = null; - }); - }) - .bind( "mouseup" + this.eventNamespace, function() { - if ( options.disabled ) { - return false; - } - $( this ).removeClass( "ui-state-active" ); - }) - .bind( "keydown" + this.eventNamespace, function(event) { - if ( options.disabled ) { - return false; - } - if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) { - $( this ).addClass( "ui-state-active" ); - } - }) - // see #8559, we bind to blur here in case the button element loses - // focus between keydown and keyup, it would be left in an "active" state - .bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() { - $( this ).removeClass( "ui-state-active" ); - }); - - if ( this.buttonElement.is("a") ) { - this.buttonElement.keyup(function(event) { - if ( event.keyCode === $.ui.keyCode.SPACE ) { - // TODO pass through original event correctly (just as 2nd argument doesn't work) - $( this ).click(); - } - }); - } - } - - this._setOption( "disabled", options.disabled ); - this._resetButton(); - }, - - _determineButtonType: function() { - var ancestor, labelSelector, checked; - - if ( this.element.is("[type=checkbox]") ) { - this.type = "checkbox"; - } else if ( this.element.is("[type=radio]") ) { - this.type = "radio"; - } else if ( this.element.is("input") ) { - this.type = "input"; - } else { - this.type = "button"; - } - - if ( this.type === "checkbox" || this.type === "radio" ) { - // we don't search against the document in case the element - // is disconnected from the DOM - ancestor = this.element.parents().last(); - labelSelector = "label[for='" + this.element.attr("id") + "']"; - this.buttonElement = ancestor.find( labelSelector ); - if ( !this.buttonElement.length ) { - ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings(); - this.buttonElement = ancestor.filter( labelSelector ); - if ( !this.buttonElement.length ) { - this.buttonElement = ancestor.find( labelSelector ); - } - } - this.element.addClass( "ui-helper-hidden-accessible" ); - - checked = this.element.is( ":checked" ); - if ( checked ) { - this.buttonElement.addClass( "ui-state-active" ); - } - this.buttonElement.prop( "aria-pressed", checked ); - } else { - this.buttonElement = this.element; - } - }, - - widget: function() { - return this.buttonElement; - }, - - _destroy: function() { - this.element - .removeClass( "ui-helper-hidden-accessible" ); - this.buttonElement - .removeClass( baseClasses + " ui-state-active " + typeClasses ) - .removeAttr( "role" ) - .removeAttr( "aria-pressed" ) - .html( this.buttonElement.find(".ui-button-text").html() ); - - if ( !this.hasTitle ) { - this.buttonElement.removeAttr( "title" ); - } - }, - - _setOption: function( key, value ) { - this._super( key, value ); - if ( key === "disabled" ) { - this.widget().toggleClass( "ui-state-disabled", !!value ); - this.element.prop( "disabled", !!value ); - if ( value ) { - if ( this.type === "checkbox" || this.type === "radio" ) { - this.buttonElement.removeClass( "ui-state-focus" ); - } else { - this.buttonElement.removeClass( "ui-state-focus ui-state-active" ); - } - } - return; - } - this._resetButton(); - }, - - refresh: function() { - //See #8237 & #8828 - var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" ); - - if ( isDisabled !== this.options.disabled ) { - this._setOption( "disabled", isDisabled ); - } - if ( this.type === "radio" ) { - radioGroup( this.element[0] ).each(function() { - if ( $( this ).is( ":checked" ) ) { - $( this ).button( "widget" ) - .addClass( "ui-state-active" ) - .attr( "aria-pressed", "true" ); - } else { - $( this ).button( "widget" ) - .removeClass( "ui-state-active" ) - .attr( "aria-pressed", "false" ); - } - }); - } else if ( this.type === "checkbox" ) { - if ( this.element.is( ":checked" ) ) { - this.buttonElement - .addClass( "ui-state-active" ) - .attr( "aria-pressed", "true" ); - } else { - this.buttonElement - .removeClass( "ui-state-active" ) - .attr( "aria-pressed", "false" ); - } - } - }, - - _resetButton: function() { - if ( this.type === "input" ) { - if ( this.options.label ) { - this.element.val( this.options.label ); - } - return; - } - var buttonElement = this.buttonElement.removeClass( typeClasses ), - buttonText = $( "<span></span>", this.document[0] ) - .addClass( "ui-button-text" ) - .html( this.options.label ) - .appendTo( buttonElement.empty() ) - .text(), - icons = this.options.icons, - multipleIcons = icons.primary && icons.secondary, - buttonClasses = []; - - if ( icons.primary || icons.secondary ) { - if ( this.options.text ) { - buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) ); - } - - if ( icons.primary ) { - buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" ); - } - - if ( icons.secondary ) { - buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" ); - } - - if ( !this.options.text ) { - buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" ); - - if ( !this.hasTitle ) { - buttonElement.attr( "title", $.trim( buttonText ) ); - } - } - } else { - buttonClasses.push( "ui-button-text-only" ); - } - buttonElement.addClass( buttonClasses.join( " " ) ); - } -}); - -$.widget( "ui.buttonset", { - version: "1.11.4", - options: { - items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)" - }, - - _create: function() { - this.element.addClass( "ui-buttonset" ); - }, - - _init: function() { - this.refresh(); - }, - - _setOption: function( key, value ) { - if ( key === "disabled" ) { - this.buttons.button( "option", key, value ); - } - - this._super( key, value ); - }, - - refresh: function() { - var rtl = this.element.css( "direction" ) === "rtl", - allButtons = this.element.find( this.options.items ), - existingButtons = allButtons.filter( ":ui-button" ); - - // Initialize new buttons - allButtons.not( ":ui-button" ).button(); - - // Refresh existing buttons - existingButtons.button( "refresh" ); - - this.buttons = allButtons - .map(function() { - return $( this ).button( "widget" )[ 0 ]; - }) - .removeClass( "ui-corner-all ui-corner-left ui-corner-right" ) - .filter( ":first" ) - .addClass( rtl ? "ui-corner-right" : "ui-corner-left" ) - .end() - .filter( ":last" ) - .addClass( rtl ? "ui-corner-left" : "ui-corner-right" ) - .end() - .end(); - }, - - _destroy: function() { - this.element.removeClass( "ui-buttonset" ); - this.buttons - .map(function() { - return $( this ).button( "widget" )[ 0 ]; - }) - .removeClass( "ui-corner-left ui-corner-right" ) - .end() - .button( "destroy" ); - } -}); - -var button = $.ui.button; - - -/*! - * jQuery UI Datepicker 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/datepicker/ - */ - - -$.extend($.ui, { datepicker: { version: "1.11.4" } }); - -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).keydown(this._doKeyDown). - keypress(this._doKeyPress).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.unbind("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.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.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.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). - unbind("focus", this._showDatepicker). - unbind("keydown", this._doKeyDown). - unbind("keypress", this._doKeyPress). - unbind("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.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.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).unbind(".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.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).each(function() { $(this).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.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 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).bind(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 = ""; - dow; - 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, "'") + "'" : "") + // cell title - (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions - (otherMonth && !showOtherMonths ? " " : // 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) ? " " : ""); - } - - // 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) ? " " : "") + monthHtml; - } - html += "</div>"; // Close datepicker_header - return html; - }, - - /* Adjust one of the date sub-fields. */ - _adjustInstDate: function(inst, offset, period) { - var year = inst.drawYear + (period === "Y" ? offset : 0), - month = inst.drawMonth + (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.delegate(selector, "mouseout", 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"); - } - }) - .delegate( selector, "mouseover", 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).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.11.4"; - -var datepicker = $.datepicker; - - -/*! - * jQuery UI Draggable 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/draggable/ - */ - - -$.widget("ui.draggable", $.ui.mouse, { - version: "1.11.4", - 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.element.addClass("ui-draggable"); - } - if (this.options.disabled){ - this.element.addClass("ui-draggable-disabled"); - } - 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.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" ); - this._removeHandleClassName(); - this._mouseDestroy(); - }, - - _mouseCapture: function(event) { - var o = this.options; - - this._blurActiveElement( event ); - - // 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._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 document = this.document[ 0 ]; - - // Only need to blur if the event occurred on the draggable itself, see #10527 - if ( !this.handleElement.is( event.target ) ) { - return; - } - - // support: IE9 - // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> - try { - - // Support: IE9, IE10 - // If the <body> is blurred, IE will switch windows, see #9520 - if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) { - - // Blur any element that currently has focus, see #4261 - $( document.activeElement ).blur(); - } - } catch ( error ) {} - }, - - _mouseStart: function(event) { - - var o = this.options; - - //Create and append the visible helper - this.helper = this._createHelper(event); - - this.helper.addClass("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); - } - - // Reset helper's right/bottom css if they're set and set explicit width/height instead - // as this prevents resizing of elements with right/bottom set (see #7772) - this._normalizeRightBottom(); - - this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position - - //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({}); - 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.focus(); - } - - return $.ui.mouse.prototype._mouseUp.call(this, event); - }, - - cancel: function() { - - if (this.helper.is(".ui-draggable-dragging")) { - this._mouseUp({}); - } 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.handleElement.addClass( "ui-draggable-handle" ); - }, - - _removeHandleClassName: function() { - this.handleElement.removeClass( "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: ( - pos.top + // The absolute mouse position - this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) - ( ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod) - ), - left: ( - pos.left + // The absolute mouse position - this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) - ( ( 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: ( - pageY - // The absolute mouse position - this.offset.click.top - // Click offset (relative to the element) - this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.parent.top + // The offsetParent's offset without borders (offset + border) - ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) - ), - left: ( - pageX - // The absolute mouse position - this.offset.click.left - // Click offset (relative to the element) - this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.parent.left + // The offsetParent's offset without borders (offset + border) - ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) - ) - }; - - }, - - _clear: function() { - this.helper.removeClass("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(); - } - }, - - _normalizeRightBottom: function() { - if ( this.options.axis !== "y" && this.helper.css( "right" ) !== "auto" ) { - this.helper.width( this.helper.width() ); - this.helper.css( "right", "auto" ); - } - if ( this.options.axis !== "x" && this.helper.css( "bottom" ) !== "auto" ) { - this.helper.height( this.helper.height() ); - this.helper.css( "bottom", "auto" ); - } - }, - - // 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 draggable = $.ui.draggable; - - -/*! - * jQuery UI Resizable 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/resizable/ - */ - - -$.widget("ui.resizable", $.ui.mouse, { - version: "1.11.4", - widgetEventPrefix: "resize", - options: { - alsoResize: false, - animate: false, - animateDuration: "slow", - animateEasing: "swing", - aspectRatio: false, - autoHide: false, - 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 parseInt( value, 10 ) || 0; - }, - - _isNumber: function( value ) { - return !isNaN( parseInt( value, 10 ) ); - }, - - _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 n, i, handle, axis, hname, - that = this, - o = this.options; - this.element.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; - - this.element.css({ - marginLeft: this.originalElement.css("marginLeft"), - marginTop: this.originalElement.css("marginTop"), - marginRight: this.originalElement.css("marginRight"), - marginBottom: this.originalElement.css("marginBottom") - }); - this.originalElement.css({ - marginLeft: 0, - marginTop: 0, - marginRight: 0, - marginBottom: 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({ margin: this.originalElement.css("margin") }); - - this._proportionallyResize(); - } - - 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 class='ui-resizable-handle " + hname + "'></div>"); - - axis.css({ zIndex: o.zIndex }); - - // TODO : What's going on here? - if ("se" === handle) { - axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); - } - - 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.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.element) - .addClass("ui-resizable-autohide") - .mouseenter(function() { - if (o.disabled) { - return; - } - $(this).removeClass("ui-resizable-autohide"); - that._handles.show(); - }) - .mouseleave(function() { - if (o.disabled) { - return; - } - if (!that.resizing) { - $(this).addClass("ui-resizable-autohide"); - that._handles.hide(); - } - }); - } - - this._mouseInit(); - }, - - _destroy: function() { - - this._mouseDestroy(); - - var wrapper, - _destroy = function(exp) { - $(exp) - .removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") - .removeData("resizable") - .removeData("ui-resizable") - .unbind(".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; - }, - - _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); - - el.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 = (parseInt(that.element.css("left"), 10) + - (that.position.left - that.originalPosition.left)) || null; - top = (parseInt(that.element.css("top"), 10) + - (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.element.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.position.top + this.size.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 ] = ( parseInt( borders[ i ], 10 ) || 0 ); - widths[ i ] += ( parseInt( paddings[ i ], 10 ) || 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.helper.addClass(this._helper).css({ - width: this.element.outerWidth() - 1, - height: this.element.outerHeight() - 1, - 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 = (parseInt(that.element.css("left"), 10) + - (that.position.left - that.originalPosition.left)) || null, - top = (parseInt(that.element.css("top"), 10) + - (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: parseInt(that.element.css("width"), 10), - height: parseInt(that.element.css("height"), 10), - top: parseInt(that.element.css("top"), 10), - left: parseInt(that.element.css("left"), 10) - }; - - 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: parseInt(el.width(), 10), height: parseInt(el.height(), 10), - left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) - }); - }); - }, - - 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("resizable-alsoresize"); - } -}); - -$.ui.plugin.add("resizable", "ghost", { - - start: function() { - - var that = $(this).resizable( "instance" ), o = that.options, 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 - }) - .addClass("ui-resizable-ghost") - .addClass(typeof o.ghost === "string" ? o.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 resizable = $.ui.resizable; - - -/*! - * jQuery UI Dialog 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/dialog/ - */ - - -var dialog = $.widget( "ui.dialog", { - version: "1.11.4", - options: { - appendTo: "body", - autoOpen: true, - buttons: [], - closeOnEscape: true, - closeText: "Close", - dialogClass: "", - 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" ); - this.options.title = this.options.title || this.originalTitle; - - this._createWrapper(); - - this.element - .show() - .removeAttr( "title" ) - .addClass( "ui-dialog-content ui-widget-content" ) - .appendTo( this.uiDialog ); - - 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() - .removeClass( "ui-dialog-content ui-widget-content" ) - .css( this.originalCss ) - // Without detaching first, the following becomes really slow - .detach(); - - this.uiDialog.stop( true, true ).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 activeElement, - 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" ).focus().length ) { - - // support: IE9 - // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> - try { - activeElement = this.document[ 0 ].activeElement; - - // Support: IE9, IE10 - // If the <body> is blurred, IE will switch windows, see #4520 - if ( activeElement && activeElement.nodeName.toLowerCase() !== "body" ) { - - // 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 - $( activeElement ).blur(); - } - } catch ( error ) {} - } - - 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 = $( this.document[ 0 ].activeElement ); - - 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 ).focus(); - }, - - _keepFocus: function( event ) { - function checkFocus() { - var activeElement = this.document[0].activeElement, - 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>") - .addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " + - this.options.dialogClass ) - .hide() - .attr({ - // Setting tabIndex makes the div focusable - tabIndex: -1, - role: "dialog" - }) - .appendTo( this._appendTo() ); - - 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.focus(); - }); - event.preventDefault(); - } else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) { - this._delay(function() { - last.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>" ) - .addClass( "ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix" ) - .prependTo( this.uiDialog ); - 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.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: this.options.closeText, - icons: { - primary: "ui-icon-closethick" - }, - text: false - }) - .addClass( "ui-dialog-titlebar-close" ) - .appendTo( this.uiDialogTitlebar ); - this._on( this.uiDialogTitlebarClose, { - click: function( event ) { - event.preventDefault(); - this.close( event ); - } - }); - - uiDialogTitle = $( "<span>" ) - .uniqueId() - .addClass( "ui-dialog-title" ) - .prependTo( this.uiDialogTitlebar ); - this._title( uiDialogTitle ); - - this.uiDialog.attr({ - "aria-labelledby": uiDialogTitle.attr( "id" ) - }); - }, - - _title: function( title ) { - if ( !this.options.title ) { - title.html( " " ); - } - title.text( this.options.title ); - }, - - _createButtonPane: function() { - this.uiDialogButtonPane = $( "<div>" ) - .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ); - - this.uiButtonSet = $( "<div>" ) - .addClass( "ui-dialog-buttonset" ) - .appendTo( this.uiDialogButtonPane ); - - 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.uiDialog.removeClass( "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; - props.click = function() { - click.apply( that.element[ 0 ], arguments ); - }; - buttonOptions = { - icons: props.icons, - text: props.showText - }; - delete props.icons; - delete props.showText; - $( "<button></button>", props ) - .button( buttonOptions ) - .appendTo( that.uiButtonSet ); - }); - this.uiDialog.addClass( "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 ) { - $( this ).addClass( "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 - }; - $( this ).removeClass( "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 ) { - $( this ).addClass( "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 - }; - $( this ).removeClass( "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 === "dialogClass" ) { - uiDialog - .removeClass( this.options.dialogClass ) - .addClass( value ); - } - - 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: "" + value - }); - } - - 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>" ) - .addClass( "ui-widget-overlay ui-front" ) - .appendTo( this._appendTo() ); - 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.document - .unbind( "focusin" ) - .removeData( "ui-dialog-overlays" ); - } else { - this.document.data( "ui-dialog-overlays", overlays ); - } - - this.overlay.remove(); - this.overlay = null; - } - } -}); - - -/*! - * jQuery UI Droppable 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/droppable/ - */ - - -$.widget( "ui.droppable", { - version: "1.11.4", - widgetEventPrefix: "drop", - options: { - accept: "*", - activeClass: false, - addClasses: true, - greedy: false, - hoverClass: 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.element.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 ); - - this.element.removeClass( "ui-droppable ui-droppable-disabled" ); - }, - - _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; - if ( this.options.activeClass ) { - this.element.addClass( this.options.activeClass ); - } - if ( draggable ){ - this._trigger( "activate", event, this.ui( draggable ) ); - } - }, - - _deactivate: function( event ) { - var draggable = $.ui.ddmanager.current; - if ( this.options.activeClass ) { - this.element.removeClass( this.options.activeClass ); - } - 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 ) ) ) { - if ( this.options.hoverClass ) { - this.element.addClass( this.options.hoverClass ); - } - 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 ) ) ) { - if ( this.options.hoverClass ) { - this.element.removeClass( this.options.hoverClass ); - } - 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 ) ) && - $.ui.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 ) ) ) { - if ( this.options.activeClass ) { - this.element.removeClass( this.options.activeClass ); - } - if ( this.options.hoverClass ) { - this.element.removeClass( this.options.hoverClass ); - } - 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 - }; - } - -}); - -$.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 && $.ui.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" ).bind( "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 = $.ui.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" ).unbind( "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 ); - } - } -}; - -var droppable = $.ui.droppable; - - -/*! - * jQuery UI Effects 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/category/effects-core/ - */ - - -var dataSpace = "ui-effects-", - - // 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; - } - - // quirk (diff) == 0 means greyscale which, by definition, saturation = 0% - // otherwise, saturation is based on the ratio of quirk (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() { - -$.extend( $.effects, { - version: "1.11.4", - - // Saves a set of properties in a data storage - save: function( element, set ) { - for ( var i = 0; i < set.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; - for ( i = 0; i < set.length; i++ ) { - if ( set[ i ] !== null ) { - val = element.data( dataSpace + set[ i ] ); - // support: jQuery 1.6.2 - // http://bugs.jquery.com/ticket/9917 - // jQuery 1.6.2 incorrectly returns undefined for any falsy value. - // We can't differentiate between "" and 0 here, so we just assume - // empty string since it's likely to be a more common value... - if ( val === undefined ) { - val = ""; - } - element.css( set[ i ], val ); - } - } - }, - - setMode: function( el, mode ) { - if (mode === "toggle") { - mode = el.is( ":hidden" ) ? "show" : "hide"; - } - return mode; - }, - - // Translates a [top,left] array into a baseline value - // this should be a little more flexible in the future to handle a string & hash - 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 - }; - }, - - // 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 ).focus(); - } - - wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element - - // 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 ).focus(); - } - } - - return 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 ), - mode = args.mode, - queue = args.queue, - effectMethod = $.effects.effect[ args.effect ]; - - if ( $.fx.off || !effectMethod ) { - // delegate to the original method (e.g., .show()) if possible - if ( mode ) { - return this[ mode ]( args.duration, args.complete ); - } else { - return this.each( function() { - if ( args.complete ) { - args.complete.call( this ); - } - }); - } - } - - function run( next ) { - var elem = $( this ), - complete = args.complete, - mode = args.mode; - - function done() { - if ( $.isFunction( complete ) ) { - complete.call( elem[0] ); - } - if ( $.isFunction( next ) ) { - next(); - } - } - - // If the element already has the correct final state, delegate to - // the core methods so the internal tracking of "olddisplay" works. - if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { - elem[ mode ](); - done(); - } else { - effectMethod.call( elem[0], args, done ); - } - } - - return queue === false ? this.each( run ) : this.queue( queue || "fx", 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 ), - - // helper functions - 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; - } -}); - -})(); - -/******************************************************************************/ -/*********************************** 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.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/blind-effect/ - */ - - -var effectBlind = $.effects.effect.blind = function( o, done ) { - // Create element - var el = $( this ), - rvertical = /up|down|vertical/, - rpositivemotion = /up|left|vertical|horizontal/, - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "hide" ), - direction = o.direction || "up", - vertical = rvertical.test( direction ), - ref = vertical ? "height" : "width", - ref2 = vertical ? "top" : "left", - motion = rpositivemotion.test( direction ), - animation = {}, - show = mode === "show", - wrapper, distance, margin; - - // if already wrapped, the wrapper's properties are my property. #6245 - if ( el.parent().is( ".ui-effects-wrapper" ) ) { - $.effects.save( el.parent(), props ); - } else { - $.effects.save( el, props ); - } - el.show(); - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - - distance = wrapper[ ref ](); - margin = parseFloat( wrapper.css( ref2 ) ) || 0; - - animation[ ref ] = show ? distance : 0; - if ( !motion ) { - el - .css( vertical ? "bottom" : "right", 0 ) - .css( vertical ? "top" : "left", "auto" ) - .css({ position: "absolute" }); - - animation[ ref2 ] = show ? margin : distance + margin; - } - - // start at 0 if we are showing - if ( show ) { - wrapper.css( ref, 0 ); - if ( !motion ) { - wrapper.css( ref2, margin + distance ); - } - } - - // Animate - wrapper.animate( animation, { - duration: o.duration, - easing: o.easing, - queue: false, - complete: function() { - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - } - }); -}; - - -/*! - * jQuery UI Effects Bounce 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/bounce-effect/ - */ - - -var effectBounce = $.effects.effect.bounce = function( o, done ) { - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - - // defaults: - mode = $.effects.setMode( el, o.mode || "effect" ), - hide = mode === "hide", - show = mode === "show", - direction = o.direction || "up", - distance = o.distance, - times = o.times || 5, - - // number of internal animations - anims = times * 2 + ( show || hide ? 1 : 0 ), - speed = o.duration / anims, - easing = o.easing, - - // utility: - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - motion = ( direction === "up" || direction === "left" ), - i, - upAnim, - downAnim, - - // we will need to re-assemble the queue to stack our animations in place - queue = el.queue(), - queuelen = queue.length; - - // Avoid touching opacity to prevent clearType and PNG issues in IE - if ( show || hide ) { - props.push( "opacity" ); - } - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); // Create Wrapper - - // default distance for the BIGGEST bounce is the outer Distance / 3 - if ( !distance ) { - distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; - } - - if ( show ) { - downAnim = { opacity: 1 }; - downAnim[ ref ] = 0; - - // if we are showing, force opacity 0 and set the initial position - // then do the "first" animation - el.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 ] = 0; - // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here - for ( i = 0; i < times; i++ ) { - upAnim = {}; - upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - - el.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; - - el.animate( upAnim, speed, easing ); - } - - el.queue(function() { - if ( hide ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - - // inject all the animations we just queued to be first in line (after "inprogress") - if ( queuelen > 1) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - el.dequeue(); - -}; - - -/*! - * jQuery UI Effects Clip 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/clip-effect/ - */ - - -var effectClip = $.effects.effect.clip = function( o, done ) { - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "hide" ), - show = mode === "show", - direction = o.direction || "vertical", - vert = direction === "vertical", - size = vert ? "height" : "width", - position = vert ? "top" : "left", - animation = {}, - wrapper, animate, distance; - - // Save & Show - $.effects.save( el, props ); - el.show(); - - // Create Wrapper - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - animate = ( el[0].tagName === "IMG" ) ? wrapper : el; - distance = animate[ size ](); - - // Shift - if ( show ) { - animate.css( size, 0 ); - animate.css( position, distance / 2 ); - } - - // Create Animation Object: - animation[ size ] = show ? distance : 0; - animation[ position ] = show ? 0 : distance / 2; - - // Animate - animate.animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( !show ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - } - }); - -}; - - -/*! - * jQuery UI Effects Drop 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/drop-effect/ - */ - - -var effectDrop = $.effects.effect.drop = function( o, done ) { - - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "hide" ), - show = mode === "show", - direction = o.direction || "left", - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg", - animation = { - opacity: show ? 1 : 0 - }, - distance; - - // Adjust - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - - distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; - - if ( show ) { - el - .css( "opacity", 0 ) - .css( ref, motion === "pos" ? -distance : distance ); - } - - // Animation - animation[ ref ] = ( show ? - ( motion === "pos" ? "+=" : "-=" ) : - ( motion === "pos" ? "-=" : "+=" ) ) + - distance; - - // Animate - el.animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - } - }); -}; - - -/*! - * jQuery UI Effects Explode 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/explode-effect/ - */ - - -var effectExplode = $.effects.effect.explode = function( o, done ) { - - var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3, - cells = rows, - el = $( this ), - mode = $.effects.setMode( el, o.mode || "hide" ), - show = mode === "show", - - // show and then visibility:hidden the element before calculating offset - offset = el.show().css( "visibility", "hidden" ).offset(), - - // width and height of a piece - width = Math.ceil( el.outerWidth() / cells ), - height = Math.ceil( el.outerHeight() / rows ), - pieces = [], - - // loop - i, j, left, top, mx, my; - - // 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 - el - .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 - }, o.duration || 500, o.easing, childComplete ); - } - } - - function animComplete() { - el.css({ - visibility: "visible" - }); - $( pieces ).remove(); - if ( !show ) { - el.hide(); - } - done(); - } -}; - - -/*! - * jQuery UI Effects Fade 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/fade-effect/ - */ - - -var effectFade = $.effects.effect.fade = function( o, done ) { - var el = $( this ), - mode = $.effects.setMode( el, o.mode || "toggle" ); - - el.animate({ - opacity: mode - }, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: done - }); -}; - - -/*! - * jQuery UI Effects Fold 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/fold-effect/ - */ - - -var effectFold = $.effects.effect.fold = function( o, done ) { - - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "hide" ), - show = mode === "show", - hide = mode === "hide", - size = o.size || 15, - percent = /([0-9]+)%/.exec( size ), - horizFirst = !!o.horizFirst, - widthFirst = show !== horizFirst, - ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], - duration = o.duration / 2, - wrapper, distance, - animation1 = {}, - animation2 = {}; - - $.effects.save( el, props ); - el.show(); - - // Create Wrapper - wrapper = $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - distance = widthFirst ? - [ wrapper.width(), wrapper.height() ] : - [ wrapper.height(), wrapper.width() ]; - - if ( percent ) { - size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; - } - if ( show ) { - wrapper.css( horizFirst ? { - height: 0, - width: size - } : { - height: size, - width: 0 - }); - } - - // Animation - animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; - animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; - - // Animate - wrapper - .animate( animation1, duration, o.easing ) - .animate( animation2, duration, o.easing, function() { - if ( hide ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - -}; - - -/*! - * jQuery UI Effects Highlight 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/highlight-effect/ - */ - - -var effectHighlight = $.effects.effect.highlight = function( o, done ) { - var elem = $( this ), - props = [ "backgroundImage", "backgroundColor", "opacity" ], - mode = $.effects.setMode( elem, o.mode || "show" ), - animation = { - backgroundColor: elem.css( "backgroundColor" ) - }; - - if (mode === "hide") { - animation.opacity = 0; - } - - $.effects.save( elem, props ); - - elem - .show() - .css({ - backgroundImage: "none", - backgroundColor: o.color || "#ffff99" - }) - .animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - elem.hide(); - } - $.effects.restore( elem, props ); - done(); - } - }); -}; - - -/*! - * jQuery UI Effects Size 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/size-effect/ - */ - - -var effectSize = $.effects.effect.size = function( o, done ) { - - // Create element - var original, baseline, factor, - el = $( this ), - props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], - - // Always restore - props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], - - // Copy for children - props2 = [ "width", "height", "overflow" ], - cProps = [ "fontSize" ], - vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], - hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], - - // Set options - mode = $.effects.setMode( el, o.mode || "effect" ), - restore = o.restore || mode !== "effect", - scale = o.scale || "both", - origin = o.origin || [ "middle", "center" ], - position = el.css( "position" ), - props = restore ? props0 : props1, - zero = { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - }; - - if ( mode === "show" ) { - el.show(); - } - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }; - - if ( o.mode === "toggle" && mode === "show" ) { - el.from = o.to || zero; - el.to = o.from || original; - } else { - el.from = o.from || ( mode === "show" ? zero : original ); - el.to = o.to || ( mode === "hide" ? zero : original ); - } - - // Set scaling factor - factor = { - from: { - y: el.from.height / original.height, - x: el.from.width / original.width - }, - to: { - y: el.to.height / original.height, - x: el.to.width / original.width - } - }; - - // Scale the css box - if ( scale === "box" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( vProps ); - el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - props = props.concat( hProps ); - el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); - el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); - } - } - - // Scale the content - if ( scale === "content" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - props = props.concat( cProps ).concat( props2 ); - el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); - el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); - } - } - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - el.css( "overflow", "hidden" ).css( el.from ); - - // Adjust - if (origin) { // Calculate baseline shifts - baseline = $.effects.getBaseline( origin, original ); - el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; - el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; - el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; - el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; - } - el.css( el.from ); // set top & left - - // Animate - if ( scale === "content" || scale === "both" ) { // Scale the children - - // Add margins/font-size - vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); - hProps = hProps.concat([ "marginLeft", "marginRight" ]); - props2 = props0.concat(vProps).concat(hProps); - - el.find( "*[width]" ).each( function() { - var child = $( this ), - c_original = { - height: child.height(), - width: child.width(), - outerHeight: child.outerHeight(), - outerWidth: child.outerWidth() - }; - if (restore) { - $.effects.save(child, props2); - } - - child.from = { - height: c_original.height * factor.from.y, - width: c_original.width * factor.from.x, - outerHeight: c_original.outerHeight * factor.from.y, - outerWidth: c_original.outerWidth * factor.from.x - }; - child.to = { - height: c_original.height * factor.to.y, - width: c_original.width * factor.to.x, - outerHeight: c_original.height * factor.to.y, - outerWidth: c_original.width * factor.to.x - }; - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); - child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); - child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); - } - - // Animate children - child.css( child.from ); - child.animate( child.to, o.duration, o.easing, function() { - - // Restore children - if ( restore ) { - $.effects.restore( child, props2 ); - } - }); - }); - } - - // Animate - el.animate( el.to, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( el.to.opacity === 0 ) { - el.css( "opacity", el.from.opacity ); - } - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - if ( !restore ) { - - // we need to calculate our new positioning based on the scaling - if ( position === "static" ) { - el.css({ - position: "relative", - top: el.to.top, - left: el.to.left - }); - } else { - $.each([ "top", "left" ], function( idx, pos ) { - el.css( pos, function( _, str ) { - var val = parseInt( str, 10 ), - toRef = idx ? el.to.left : el.to.top; - - // if original was "auto", recalculate the new value from wrapper - if ( str === "auto" ) { - return toRef + "px"; - } - - return val + toRef + "px"; - }); - }); - } - } - - $.effects.removeWrapper( el ); - done(); - } - }); - -}; - - -/*! - * jQuery UI Effects Scale 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/scale-effect/ - */ - - -var effectScale = $.effects.effect.scale = function( o, done ) { - - // Create element - var el = $( this ), - options = $.extend( true, {}, o ), - mode = $.effects.setMode( el, o.mode || "effect" ), - percent = parseInt( o.percent, 10 ) || - ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), - direction = o.direction || "both", - origin = o.origin, - original = { - height: el.height(), - width: el.width(), - outerHeight: el.outerHeight(), - outerWidth: el.outerWidth() - }, - factor = { - y: direction !== "horizontal" ? (percent / 100) : 1, - x: direction !== "vertical" ? (percent / 100) : 1 - }; - - // We are going to pass this effect to the size effect: - options.effect = "size"; - options.queue = false; - options.complete = done; - - // Set default origin and restore for show/hide - if ( mode !== "effect" ) { - options.origin = origin || [ "middle", "center" ]; - options.restore = true; - } - - options.from = o.from || ( mode === "show" ? { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - } : original ); - options.to = { - height: original.height * factor.y, - width: original.width * factor.x, - outerHeight: original.outerHeight * factor.y, - outerWidth: original.outerWidth * factor.x - }; - - // Fade option to support puff - if ( options.fade ) { - if ( mode === "show" ) { - options.from.opacity = 0; - options.to.opacity = 1; - } - if ( mode === "hide" ) { - options.from.opacity = 1; - options.to.opacity = 0; - } - } - - // Animate - el.effect( options ); - -}; - - -/*! - * jQuery UI Effects Puff 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/puff-effect/ - */ - - -var effectPuff = $.effects.effect.puff = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "hide" ), - hide = mode === "hide", - percent = parseInt( o.percent, 10 ) || 150, - factor = percent / 100, - original = { - height: elem.height(), - width: elem.width(), - outerHeight: elem.outerHeight(), - outerWidth: elem.outerWidth() - }; - - $.extend( o, { - effect: "scale", - queue: false, - fade: true, - mode: mode, - complete: done, - percent: hide ? percent : 100, - from: hide ? - original : - { - height: original.height * factor, - width: original.width * factor, - outerHeight: original.outerHeight * factor, - outerWidth: original.outerWidth * factor - } - }); - - elem.effect( o ); -}; - - -/*! - * jQuery UI Effects Pulsate 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/pulsate-effect/ - */ - - -var effectPulsate = $.effects.effect.pulsate = function( o, done ) { - var elem = $( this ), - mode = $.effects.setMode( elem, o.mode || "show" ), - show = mode === "show", - hide = mode === "hide", - showhide = ( show || mode === "hide" ), - - // showing or hiding leaves of the "last" animation - anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), - duration = o.duration / anims, - animateTo = 0, - queue = elem.queue(), - queuelen = queue.length, - i; - - if ( show || !elem.is(":visible")) { - elem.css( "opacity", 0 ).show(); - animateTo = 1; - } - - // anims - 1 opacity "toggles" - for ( i = 1; i < anims; i++ ) { - elem.animate({ - opacity: animateTo - }, duration, o.easing ); - animateTo = 1 - animateTo; - } - - elem.animate({ - opacity: animateTo - }, duration, o.easing); - - elem.queue(function() { - if ( hide ) { - elem.hide(); - } - done(); - }); - - // We just queued up "anims" animations, we need to put them next in the queue - if ( queuelen > 1 ) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - elem.dequeue(); -}; - - -/*! - * jQuery UI Effects Shake 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/shake-effect/ - */ - - -var effectShake = $.effects.effect.shake = function( o, done ) { - - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "height", "width" ], - mode = $.effects.setMode( el, o.mode || "effect" ), - direction = o.direction || "left", - distance = o.distance || 20, - times = o.times || 3, - anims = times * 2 + 1, - speed = Math.round( o.duration / anims ), - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - animation = {}, - animation1 = {}, - animation2 = {}, - i, - - // we will need to re-assemble the queue to stack our animations in place - queue = el.queue(), - queuelen = queue.length; - - $.effects.save( el, props ); - el.show(); - $.effects.createWrapper( el ); - - // Animation - animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; - animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; - animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; - - // Animate - el.animate( animation, speed, o.easing ); - - // Shakes - for ( i = 1; i < times; i++ ) { - el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing ); - } - el - .animate( animation1, speed, o.easing ) - .animate( animation, speed / 2, o.easing ) - .queue(function() { - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - }); - - // inject all the animations we just queued to be first in line (after "inprogress") - if ( queuelen > 1) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); - } - el.dequeue(); - -}; - - -/*! - * jQuery UI Effects Slide 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/slide-effect/ - */ - - -var effectSlide = $.effects.effect.slide = function( o, done ) { - - // Create element - var el = $( this ), - props = [ "position", "top", "bottom", "left", "right", "width", "height" ], - mode = $.effects.setMode( el, o.mode || "show" ), - show = mode === "show", - direction = o.direction || "left", - ref = (direction === "up" || direction === "down") ? "top" : "left", - positiveMotion = (direction === "up" || direction === "left"), - distance, - animation = {}; - - // Adjust - $.effects.save( el, props ); - el.show(); - distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); - - $.effects.createWrapper( el ).css({ - overflow: "hidden" - }); - - if ( show ) { - el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); - } - - // Animation - animation[ ref ] = ( show ? - ( positiveMotion ? "+=" : "-=") : - ( positiveMotion ? "-=" : "+=")) + - distance; - - // Animate - el.animate( animation, { - queue: false, - duration: o.duration, - easing: o.easing, - complete: function() { - if ( mode === "hide" ) { - el.hide(); - } - $.effects.restore( el, props ); - $.effects.removeWrapper( el ); - done(); - } - }); -}; - - -/*! - * jQuery UI Effects Transfer 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/transfer-effect/ - */ - - -var effectTransfer = $.effects.effect.transfer = function( o, done ) { - var elem = $( this ), - target = $( o.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 = elem.offset(), - transfer = $( "<div class='ui-effects-transfer'></div>" ) - .appendTo( document.body ) - .addClass( o.className ) - .css({ - top: startPosition.top - fixTop, - left: startPosition.left - fixLeft, - height: elem.innerHeight(), - width: elem.innerWidth(), - position: targetFixed ? "fixed" : "absolute" - }) - .animate( animation, o.duration, o.easing, function() { - transfer.remove(); - done(); - }); -}; - - -/*! - * jQuery UI Progressbar 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/progressbar/ - */ - - -var progressbar = $.widget( "ui.progressbar", { - version: "1.11.4", - options: { - max: 100, - value: 0, - - change: null, - complete: null - }, - - min: 0, - - _create: function() { - // Constrain initial value - this.oldValue = this.options.value = this._constrainedValue(); - - this.element - .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) - .attr({ - // Only set static values, aria-valuenow and aria-valuemax are - // set inside _refreshValue() - role: "progressbar", - "aria-valuemin": this.min - }); - - this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" ) - .appendTo( this.element ); - - this._refreshValue(); - }, - - _destroy: function() { - this.element - .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) - .removeAttr( "role" ) - .removeAttr( "aria-valuemin" ) - .removeAttr( "aria-valuemax" ) - .removeAttr( "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 ); - } - if ( key === "disabled" ) { - this.element - .toggleClass( "ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - } - this._super( key, 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 ) - .toggleClass( "ui-corner-right", value === this.options.max ) - .width( percentage.toFixed(0) + "%" ); - - this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate ); - - if ( this.indeterminate ) { - this.element.removeAttr( "aria-valuenow" ); - if ( !this.overlayDiv ) { - this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv ); - } - } 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.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/selectable/ - */ - - -var selectable = $.widget("ui.selectable", $.ui.mouse, { - version: "1.11.4", - 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 selectees, - that = this; - - this.element.addClass("ui-selectable"); - - this.dragged = false; - - // cache selectee children based on filter - this.refresh = function() { - selectees = $(that.options.filter, that.element[0]); - selectees.addClass("ui-selectee"); - selectees.each(function() { - var $this = $(this), - pos = $this.offset(); - $.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.selectees = selectees.addClass("ui-selectee"); - - this._mouseInit(); - - this.helper = $("<div class='ui-selectable-helper'></div>"); - }, - - _destroy: function() { - this.selectees - .removeClass("ui-selectee") - .removeData("selectable-item"); - this.element - .removeClass("ui-selectable ui-selectable-disabled"); - this._mouseDestroy(); - }, - - _mouseStart: function(event) { - var that = this, - options = this.options; - - this.opos = [ event.pageX, event.pageY ]; - - 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) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - selectee.$element.addClass("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"); - selectee.$element - .removeClass(doSelect ? "ui-unselecting" : "ui-selected") - .addClass(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; - - //prevent helper from being selected if appendTo: selectable - if (!selectee || selectee.element === that.element[0]) { - return; - } - - if (options.tolerance === "touch") { - hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); - } else if (options.tolerance === "fit") { - hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); - } - - if (hit) { - // SELECT - if (selectee.selected) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - } - if (selectee.unselecting) { - selectee.$element.removeClass("ui-unselecting"); - selectee.unselecting = false; - } - if (!selectee.selecting) { - selectee.$element.addClass("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) { - selectee.$element.removeClass("ui-selecting"); - selectee.selecting = false; - selectee.$element.addClass("ui-selected"); - selectee.selected = true; - } else { - selectee.$element.removeClass("ui-selecting"); - selectee.selecting = false; - if (selectee.startselected) { - selectee.$element.addClass("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) { - selectee.$element.removeClass("ui-selected"); - selectee.selected = false; - - selectee.$element.addClass("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"); - selectee.$element.removeClass("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"); - selectee.$element.removeClass("ui-selecting").addClass("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.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/selectmenu - */ - - -var selectmenu = $.widget( "ui.selectmenu", { - version: "1.11.4", - defaultElement: "<select>", - options: { - appendTo: null, - disabled: null, - icons: { - button: "ui-icon-triangle-1-s" - }, - position: { - my: "left top", - at: "left bottom", - collision: "none" - }, - width: null, - - // 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(); - - if ( this.options.disabled ) { - this.disable(); - } - }, - - _drawButton: function() { - var that = this; - - // Associate existing label with the new button - this.label = $( "label[for='" + this.ids.element + "']" ).attr( "for", this.ids.button ); - this._on( this.label, { - click: function( event ) { - this.button.focus(); - event.preventDefault(); - } - }); - - // Hide original select element - this.element.hide(); - - // Create button - this.button = $( "<span>", { - "class": "ui-selectmenu-button ui-widget ui-state-default ui-corner-all", - 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" - }) - .insertAfter( this.element ); - - $( "<span>", { - "class": "ui-icon " + this.options.icons.button - }) - .prependTo( this.button ); - - this.buttonText = $( "<span>", { - "class": "ui-selectmenu-text" - }) - .appendTo( this.button ); - - this._setText( this.buttonText, this.element.find( "option:selected" ).text() ); - 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.menuItems ) { - that._refreshMenu(); - } - }); - this._hoverable( this.button ); - this._focusable( this.button ); - }, - - _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>", { - "class": "ui-selectmenu-menu ui-front" - }) - .append( this.menu ) - .appendTo( this._appendTo() ); - - // Initialize menu widget - this.menuInstance = this.menu - .menu({ - 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" ); - - // Adjust menu styles to dropdown - this.menu - .addClass( "ui-corner-bottom" ) - .removeClass( "ui-corner-all" ); - - // 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._setText( this.buttonText, this._getSelectedItem().text() ); - if ( !this.options.width ) { - this._resizeButton(); - } - }, - - _refreshMenu: function() { - this.menu.empty(); - - var item, - options = this.element.find( "option" ); - - if ( !options.length ) { - return; - } - - this._parseOptions( options ); - this._renderMenu( this.menu, this.items ); - - this.menuInstance.refresh(); - this.menuItems = this.menu.find( "li" ).not( ".ui-selectmenu-optgroup" ); - - 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.menuItems ) { - this._refreshMenu(); - } else { - - // Menu clears focus on close, reset focus to selected item - this.menu.find( ".ui-state-focus" ).removeClass( "ui-state-focus" ); - this.menuInstance.focus( null, this._getSelectedItem() ); - } - - 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; - }, - - _renderMenu: function( ul, items ) { - var that = this, - currentOptgroup = ""; - - $.each( items, function( index, item ) { - if ( item.optgroup !== currentOptgroup ) { - $( "<li>", { - "class": "ui-selectmenu-optgroup ui-menu-divider" + - ( item.element.parent( "optgroup" ).prop( "disabled" ) ? - " ui-state-disabled" : - "" ), - text: item.optgroup - }) - .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>" ); - - if ( item.disabled ) { - li.addClass( "ui-state-disabled" ); - } - this._setText( li, item.label ); - - return li.appendTo( ul ); - }, - - _setText: function( element, value ) { - if ( value ) { - element.text( value ); - } else { - element.html( " " ); - } - }, - - _move: function( direction, event ) { - var item, next, - filter = ".ui-menu-item"; - - if ( this.isOpen ) { - item = this.menuItems.eq( this.focusIndex ); - } else { - item = this.menuItems.eq( this.element[ 0 ].selectedIndex ); - 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 ); - }, - - _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, #" + 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 ); - 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._setText( this.buttonText, item.label ); - 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" ) { - this.button.find( "span.ui-icon" ) - .removeClass( this.options.icons.button ) - .addClass( value.button ); - } - - this._super( key, value ); - - if ( key === "appendTo" ) { - this.menuWrap.appendTo( this._appendTo() ); - } - - if ( key === "disabled" ) { - this.menuInstance.option( "disabled", value ); - this.button - .toggleClass( "ui-state-disabled", value ) - .attr( "aria-disabled", value ); - - this.element.prop( "disabled", value ); - if ( value ) { - this.button.attr( "tabindex", -1 ); - this.close(); - } else { - this.button.attr( "tabindex", 0 ); - } - } - - if ( key === "width" ) { - this._resizeButton(); - } - }, - - _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" ); - } - - if ( !element.length ) { - element = this.document[ 0 ].body; - } - - return element; - }, - - _toggleAttr: function() { - this.button - .toggleClass( "ui-corner-top", this.isOpen ) - .toggleClass( "ui-corner-all", !this.isOpen ) - .attr( "aria-expanded", this.isOpen ); - this.menuWrap.toggleClass( "ui-selectmenu-open", this.isOpen ); - this.menu.attr( "aria-hidden", !this.isOpen ); - }, - - _resizeButton: function() { - var width = this.options.width; - - if ( !width ) { - 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() { - return { disabled: this.element.prop( "disabled" ) }; - }, - - _parseOptions: function( options ) { - var data = []; - options.each(function( index, item ) { - var option = $( item ), - optgroup = option.parent( "optgroup" ); - data.push({ - element: option, - index: index, - value: option.val(), - label: option.text(), - optgroup: optgroup.attr( "label" ) || "", - disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" ) - }); - }); - this.items = data; - }, - - _destroy: function() { - this.menuWrap.remove(); - this.button.remove(); - this.element.show(); - this.element.removeUniqueId(); - this.label.attr( "for", this.ids.element ); - } -}); - - -/*! - * jQuery UI Slider 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/slider/ - */ - - -var slider = $.widget( "ui.slider", $.ui.mouse, { - version: "1.11.4", - widgetEventPrefix: "slide", - - options: { - animate: false, - 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.element - .addClass( "ui-slider" + - " ui-slider-" + this.orientation + - " ui-widget" + - " ui-widget-content" + - " ui-corner-all"); - - this._refresh(); - this._setOption( "disabled", this.options.disabled ); - - 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" ).addClass( "ui-state-default ui-corner-all" ), - handle = "<span class='ui-slider-handle ui-state-default ui-corner-all' 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.handle = this.handles.eq( 0 ); - - this.handles.each(function( i ) { - $( this ).data( "ui-slider-handle-index", i ); - }); - }, - - _createRange: function() { - var options = this.options, - classes = ""; - - 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></div>" ) - .appendTo( this.element ); - - classes = "ui-slider-range" + - // note: this isn't the most fittingly semantic framework class for this element, - // but worked best visually with a variety of themes - " ui-widget-header ui-corner-all"; - } else { - this.range.removeClass( "ui-slider-range-min ui-slider-range-max" ) - // Handle range switching from true to min/max - .css({ - "left": "", - "bottom": "" - }); - } - - this.range.addClass( classes + - ( ( options.range === "min" || options.range === "max" ) ? " 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.element - .removeClass( "ui-slider" + - " ui-slider-horizontal" + - " ui-slider-vertical" + - " ui-widget" + - " ui-widget-content" + - " ui-corner-all" ); - - 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; - - closestHandle - .addClass( "ui-state-active" ) - .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.handles.removeClass( "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 ); - }, - - _start: function( event, index ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - return this._trigger( "start", event, uiHash ); - }, - - _slide: function( event, index, newVal ) { - var otherVal, - newValues, - allowed; - - if ( this.options.values && this.options.values.length ) { - otherVal = this.values( index ? 0 : 1 ); - - if ( ( this.options.values.length === 2 && this.options.range === true ) && - ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) - ) { - newVal = otherVal; - } - - if ( newVal !== this.values( index ) ) { - newValues = this.values(); - newValues[ index ] = newVal; - // A slide can be canceled by returning false from the slide callback - allowed = this._trigger( "slide", event, { - handle: this.handles[ index ], - value: newVal, - values: newValues - } ); - otherVal = this.values( index ? 0 : 1 ); - if ( allowed !== false ) { - this.values( index, newVal ); - } - } - } else { - if ( newVal !== this.value() ) { - // A slide can be canceled by returning false from the slide callback - allowed = this._trigger( "slide", event, { - handle: this.handles[ index ], - value: newVal - } ); - if ( allowed !== false ) { - this.value( newVal ); - } - } - } - }, - - _stop: function( event, index ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - - this._trigger( "stop", event, uiHash ); - }, - - _change: function( event, index ) { - if ( !this._keySliding && !this._mouseSliding ) { - var uiHash = { - handle: this.handles[ index ], - value: this.value() - }; - if ( this.options.values && this.options.values.length ) { - uiHash.value = this.values( index ); - uiHash.values = this.values(); - } - - //store the last changed value index for reference when handles overlap - this._lastChangedValue = index; - - this._trigger( "change", event, uiHash ); - } - }, - - 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.options.values && this.options.values.length ) { - 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; - } - - if ( key === "disabled" ) { - this.element.toggleClass( "ui-state-disabled", !!value ); - } - - this._super( key, value ); - - switch ( key ) { - case "orientation": - this._detectOrientation(); - this.element - .removeClass( "ui-slider-horizontal ui-slider-vertical" ) - .addClass( "ui-slider-" + this.orientation ); - this._refreshValue(); - - // 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(); - for ( i = 0; i < valsLength; i += 1 ) { - 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; - } - }, - - //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.options.values && this.options.values.length ) { - // .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.floor( ( +( max - min ).toFixed( this._precision() ) ) / step ) * step; - max = aboveMin + min; - 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; - }, - - _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.options.values && this.options.values.length ) { - 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[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: 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[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: 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; - $( event.target ).addClass( "ui-state-active" ); - allowed = this._start( event, index ); - if ( allowed === false ) { - return; - } - } - break; - } - - step = this.options.step; - if ( this.options.values && this.options.values.length ) { - 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 ); - $( event.target ).removeClass( "ui-state-active" ); - } - } - } -}); - - -/*! - * jQuery UI Sortable 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/sortable/ - */ - - -var sortable = $.widget("ui.sortable", $.ui.mouse, { - version: "1.11.4", - 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.element.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() { - this.element.find( ".ui-sortable-handle" ).removeClass( "ui-sortable-handle" ); - $.each( this.items, function() { - ( this.instance.options.handle ? - this.item.find( this.instance.options.handle ) : this.item ) - .addClass( "ui-sortable-handle" ); - }); - }, - - _destroy: function() { - this.element - .removeClass( "ui-sortable ui-sortable-disabled" ) - .find( ".ui-sortable-handle" ) - .removeClass( "ui-sortable-handle" ); - 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(), - relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper - }); - - // 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.helper.addClass("ui-sortable-helper"); - this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position - 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({ target: null }); - - if(this.options.helper === "original") { - this.currentItem.css(this._storedCSS).removeClass("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 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, - verticalDirection = this._getDragVerticalDirection(), - horizontalDirection = this._getDragHorizontalDirection(); - - if (!isOverElement) { - return false; - } - - return this.floating ? - ( ((horizontalDirection && 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(); - - if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down - 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]); - - item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) - - 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] ) - .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") - .removeClass("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> </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 ? "clientX" : "clientY"; - - 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.width() : 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: ( - pos.top + // The absolute mouse position - this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) - ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) - ), - left: ( - pos.left + // The absolute mouse position - this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) - ( ( 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: ( - pageY - // The absolute mouse position - this.offset.click.top - // Click offset (relative to the element) - this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.parent.top + // The offsetParent's offset without borders (offset + border) - ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) - ), - left: ( - pageX - // The absolute mouse position - this.offset.click.left - // Click offset (relative to the element) - this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent - this.offset.parent.left + // The offsetParent's offset without borders (offset + border) - ( ( 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) { - this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove - } - }); - - }, - - _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).removeClass("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) { - delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed - } - - // 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++) { - delayedTriggers[i].call(this, event); - } //Trigger all delayed events - 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.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/spinner/ - */ - - -function spinner_modifier( fn ) { - return function() { - var previous = this.element.val(); - fn.apply( this, arguments ); - this._refresh(); - if ( previous !== this.element.val() ) { - this._trigger( "change" ); - } - }; -} - -var spinner = $.widget( "ui.spinner", { - version: "1.11.4", - defaultElement: "<input>", - widgetEventPrefix: "spin", - options: { - 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 = {}, - element = this.element; - - $.each( [ "min", "max", "step" ], function( i, option ) { - var value = element.attr( option ); - if ( value !== undefined && 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] === this.document[0].activeElement ? - this.previous : this.element.val(); - function checkFocus() { - var isActive = this.element[0] === this.document[0].activeElement; - if ( !isActive ) { - this.element.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" - }, - - _draw: function() { - var uiSpinner = this.uiSpinner = this.element - .addClass( "ui-spinner-input" ) - .attr( "autocomplete", "off" ) - .wrap( this._uiSpinnerHtml() ) - .parent() - // add buttons - .append( this._buttonHtml() ); - - this.element.attr( "role", "spinbutton" ); - - // button bindings - this.buttons = uiSpinner.find( ".ui-spinner-button" ) - .attr( "tabIndex", -1 ) - .button() - .removeClass( "ui-corner-all" ); - - // IE 6 doesn't understand height: 50% for the buttons - // unless the wrapper has an explicit height - if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) && - uiSpinner.height() > 0 ) { - uiSpinner.height( uiSpinner.height() ); - } - - // disable spinner if element was already disabled - if ( this.options.disabled ) { - this.disable(); - } - }, - - _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; - }, - - _uiSpinnerHtml: function() { - return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"; - }, - - _buttonHtml: function() { - return "" + - "<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" + - "<span class='ui-icon " + this.options.icons.up + "'>▲</span>" + - "</a>" + - "<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" + - "<span class='ui-icon " + this.options.icons.down + "'>▼</span>" + - "</a>"; - }, - - _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 ) { - if ( key === "culture" || key === "numberFormat" ) { - var 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" ) { - this.buttons.first().find( ".ui-icon" ) - .removeClass( this.options.icons.up ) - .addClass( value.up ); - this.buttons.last().find( ".ui-icon" ) - .removeClass( this.options.icons.down ) - .addClass( value.down ); - } - - this._super( key, value ); - - if ( key === "disabled" ) { - this.widget().toggleClass( "ui-state-disabled", !!value ); - this.element.prop( "disabled", !!value ); - this.buttons.button( value ? "disable" : "enable" ); - } - }, - - _setOptions: spinner_modifier(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 - .removeClass( "ui-spinner-input" ) - .prop( "disabled", false ) - .removeAttr( "autocomplete" ) - .removeAttr( "role" ) - .removeAttr( "aria-valuemin" ) - .removeAttr( "aria-valuemax" ) - .removeAttr( "aria-valuenow" ); - this.uiSpinner.replaceWith( this.element ); - }, - - stepUp: spinner_modifier(function( steps ) { - this._stepUp( steps ); - }), - _stepUp: function( steps ) { - if ( this._start() ) { - this._spin( (steps || 1) * this.options.step ); - this._stop(); - } - }, - - stepDown: spinner_modifier(function( steps ) { - this._stepDown( steps ); - }), - _stepDown: function( steps ) { - if ( this._start() ) { - this._spin( (steps || 1) * -this.options.step ); - this._stop(); - } - }, - - pageUp: spinner_modifier(function( pages ) { - this._stepUp( (pages || 1) * this.options.page ); - }), - - pageDown: spinner_modifier(function( pages ) { - this._stepDown( (pages || 1) * this.options.page ); - }), - - value: function( newVal ) { - if ( !arguments.length ) { - return this._parse( this.element.val() ); - } - spinner_modifier( this._value ).call( this, newVal ); - }, - - widget: function() { - return this.uiSpinner; - } -}); - - -/*! - * jQuery UI Tabs 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/tabs/ - */ - - -var tabs = $.widget( "ui.tabs", { - version: "1.11.4", - delay: 300, - options: { - active: null, - 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; - - // support: IE7 - // IE7 doesn't normalize the href property when set via script (#9317) - anchor = anchor.cloneNode( false ); - - 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.element - .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ) - .toggleClass( "ui-tabs-collapsible", 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 = $( this.document[0].activeElement ).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.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 ).focus(); - return index; - }, - - _setOption: function( key, value ) { - if ( key === "active" ) { - // _activate() will handle invalid values and update this.options - this._activate( value ); - return; - } - - if ( key === "disabled" ) { - // don't use the widget factory's disabled handling - this._setupDisabled( value ); - return; - } - - this._super( key, value); - - if ( key === "collapsible" ) { - this.element.toggleClass( "ui-tabs-collapsible", 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._setupDisabled( 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 - .addClass( "ui-tabs-active ui-state-active" ) - .attr({ - "aria-selected": "true", - "aria-expanded": "true", - tabIndex: 0 - }); - 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() - .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) - .attr( "role", "tablist" ) - - // Prevent users from focusing disabled tabs via click - .delegate( "> li", "mousedown" + this.eventNamespace, 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. - .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() { - if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { - this.blur(); - } - }); - - this.tabs = this.tablist.find( "> li:has(a[href])" ) - .addClass( "ui-state-default ui-corner-top" ) - .attr({ - role: "tab", - tabIndex: -1 - }); - - this.anchors = this.tabs.map(function() { - return $( "a", this )[ 0 ]; - }) - .addClass( "ui-tabs-anchor" ) - .attr({ - role: "presentation", - tabIndex: -1 - }); - - 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 - .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) - .attr( "role", "tabpanel" ); - - // 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 ) - .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) - .data( "ui-tabs-destroy", true ); - }, - - _setupDisabled: function( disabled ) { - if ( $.isArray( disabled ) ) { - if ( !disabled.length ) { - disabled = false; - } else if ( disabled.length === this.anchors.length ) { - disabled = true; - } - } - - // disable tabs - for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) { - if ( disabled === true || $.inArray( i, disabled ) !== -1 ) { - $( li ) - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } else { - $( li ) - .removeClass( "ui-state-disabled" ) - .removeAttr( "aria-disabled" ); - } - } - - this.options.disabled = disabled; - }, - - _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() { - eventData.newTab.closest( "li" ).addClass( "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() { - eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); - show(); - }); - } else { - eventData.oldTab.closest( "li" ).removeClass( "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$='" + index + "']" ) ); - } - - return index; - }, - - _destroy: function() { - if ( this.xhr ) { - this.xhr.abort(); - } - - this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" ); - - this.tablist - .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) - .removeAttr( "role" ); - - this.anchors - .removeClass( "ui-tabs-anchor" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeUniqueId(); - - this.tablist.unbind( this.eventNamespace ); - - this.tabs.add( this.panels ).each(function() { - if ( $.data( this, "ui-tabs-destroy" ) ) { - $( this ).remove(); - } else { - $( this ) - .removeClass( "ui-state-default ui-state-active ui-state-disabled " + - "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-live" ) - .removeAttr( "aria-busy" ) - .removeAttr( "aria-selected" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "role" ); - } - }); - - 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._setupDisabled( 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._setupDisabled( 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 ); - } - - tab.removeClass( "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" ) { - tab.addClass( "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 { - url: anchor.attr( "href" ), - 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 ) ); - } -}); - - -/*! - * jQuery UI Tooltip 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/tooltip/ - */ - - -var tooltip = $.widget( "ui.tooltip", { - version: "1.11.4", - options: { - 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, - tooltipClass: null, - 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 = {}; - - if ( this.options.disabled ) { - this._disable(); - } - - // Append the aria-live region so tooltips announce correctly - this.liveRegion = $( "<div>" ) - .attr({ - role: "log", - "aria-live": "assertive", - "aria-relevant": "additions" - }) - .addClass( "ui-helper-hidden-accessible" ) - .appendTo( this.document[ 0 ].body ); - }, - - _setOption: function( key, value ) { - var that = this; - - if ( key === "disabled" ) { - this[ value ? "_disable" : "_enable" ](); - this.options[ key ] = value; - // disable element style changes - return; - } - - this._super( key, value ); - - if ( key === "content" ) { - $.each( this.tooltips, function( id, tooltipData ) { - that._updateContent( tooltipData.element ); - }); - } - }, - - _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.element.find( this.options.items ).addBack().each(function() { - var element = $( this ); - if ( element.is( "[title]" ) ) { - element - .data( "ui-tooltip-title", element.attr( "title" ) ) - .removeAttr( "title" ); - } - }); - }, - - _enable: function() { - // restore title attributes - this.element.find( this.options.items ).addBack().each(function() { - var element = $( this ); - if ( element.data( "ui-tooltip-title" ) ) { - element.attr( "title", element.data( "ui-tooltip-title" ) ); - } - }); - }, - - 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" ) { - 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(); - if ( content.clone ) { - a11yContent = content.clone(); - a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" ); - } else { - a11yContent = content; - } - $( "<div>" ).html( 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. - if ( 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" ) - .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " + - ( this.options.tooltipClass || "" ) ), - id = tooltip.uniqueId().attr( "id" ); - - $( "<div>" ) - .addClass( "ui-tooltip-content" ) - .appendTo( tooltip ); - - tooltip.appendTo( this.document[0].body ); - - 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" ) ]; - }, - - _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(); - } -}); - - - -})); \ No newline at end of file diff --git a/dashboard/lib/jquery.gritter/jquery.gritter.css b/dashboard/lib/jquery.gritter/jquery.gritter.css deleted file mode 100644 index 26fd5b0b..00000000 --- a/dashboard/lib/jquery.gritter/jquery.gritter.css +++ /dev/null @@ -1,102 +0,0 @@ -/* the norm */ -#gritter-notice-wrapper { - position:fixed; - top:20px; - right:20px; - width:301px; - z-index:9999; -} -#gritter-notice-wrapper.top-left { - left: 20px; - right: auto; -} -#gritter-notice-wrapper.bottom-right { - top: auto; - left: auto; - bottom: 20px; - right: 20px; -} -#gritter-notice-wrapper.bottom-left { - top: auto; - right: auto; - bottom: 20px; - left: 20px; -} -.gritter-item-wrapper { - position:relative; - margin:0 0 10px 0; - background:url('../images/ie-spacer.gif'); /* ie7/8 fix */ -} -.gritter-top { - background:url(../images/gritter.png) no-repeat left -30px; - height:10px; -} -.hover .gritter-top { - background-position:right -30px; -} -.gritter-bottom { - background:url(../images/gritter.png) no-repeat left bottom; - height:8px; - margin:0; -} -.hover .gritter-bottom { - background-position: bottom right; -} -.gritter-item { - display:block; - background:url(../images/gritter.png) no-repeat left -40px; - color:#eee; - padding:2px 11px 8px 11px; - font-size: 11px; - font-family:verdana; -} -.hover .gritter-item { - background-position:right -40px; -} -.gritter-item p { - padding:0; - margin:0; - word-wrap:break-word; -} -.gritter-close { - display:none; - position:absolute; - top:5px; - left:3px; - background:url(../images/gritter.png) no-repeat left top; - cursor:pointer; - width:30px; - height:30px; - text-indent:-9999em; -} -.gritter-title { - font-size:14px; - font-weight:bold; - padding:0 0 7px 0; - display:block; - text-shadow:1px 1px 0 #000; /* Not supported by IE :( */ -} -.gritter-image { - width:48px; - height:48px; - float:left; -} -.gritter-with-image, -.gritter-without-image { - padding:0; -} -.gritter-with-image { - width:220px; - float:right; -} -/* for the light (white) version of the gritter notice */ -.gritter-light .gritter-item, -.gritter-light .gritter-bottom, -.gritter-light .gritter-top, -.gritter-light .gritter-close { - background-image: url(../images/gritter-light.png); - color: #222; -} -.gritter-light .gritter-title { - text-shadow: none; -} diff --git a/dashboard/lib/jquery.gritter/jquery.gritter.js b/dashboard/lib/jquery.gritter/jquery.gritter.js deleted file mode 100644 index 3587ac5a..00000000 --- a/dashboard/lib/jquery.gritter/jquery.gritter.js +++ /dev/null @@ -1,419 +0,0 @@ -/* - * Gritter for jQuery - * http://www.boedesign.com/ - * - * Copyright (c) 2012 Jordan Boesch - * Dual licensed under the MIT and GPL licenses. - * - * Date: February 24, 2012 - * Version: 1.7.4 - */ - -(function($){ - - /** - * Set it up as an object under the jQuery namespace - */ - $.gritter = {}; - - /** - * Set up global options that the user can over-ride - */ - $.gritter.options = { - position: '', - class_name: '', // could be set to 'gritter-light' to use white notifications - fade_in_speed: 'medium', // how fast notifications fade in - fade_out_speed: 1000, // how fast the notices fade out - time: 6000 // hang on the screen for... - } - - /** - * Add a gritter notification to the screen - * @see Gritter#add(); - */ - $.gritter.add = function(params){ - - try { - return Gritter.add(params || {}); - } catch(e) { - - var err = 'Gritter Error: ' + e; - (typeof(console) != 'undefined' && console.error) ? - console.error(err, params) : - alert(err); - - } - - } - - /** - * Remove a gritter notification from the screen - * @see Gritter#removeSpecific(); - */ - $.gritter.remove = function(id, params){ - Gritter.removeSpecific(id, params || {}); - } - - /** - * Remove all notifications - * @see Gritter#stop(); - */ - $.gritter.removeAll = function(params){ - Gritter.stop(params || {}); - } - - /** - * Big fat Gritter object - * @constructor (not really since its object literal) - */ - var Gritter = { - - // Public - options to over-ride with $.gritter.options in "add" - position: '', - fade_in_speed: '', - fade_out_speed: '', - time: '', - - // Private - no touchy the private parts - _custom_timer: 0, - _item_count: 0, - _is_setup: 0, - _tpl_close: '<a class="gritter-close" href="#" tabindex="1">Close Notification</a>', - _tpl_title: '<span class="gritter-title">[[title]]</span>', - _tpl_item: '<div id="gritter-item-[[number]]" class="gritter-item-wrapper [[item_class]]" style="display:none" role="alert"><div class="gritter-top"></div><div class="gritter-item">[[close]][[image]]<div class="[[class_name]]">[[title]]<p>[[text]]</p></div><div style="clear:both"></div></div><div class="gritter-bottom"></div></div>', - _tpl_wrap: '<div id="gritter-notice-wrapper"></div>', - - /** - * Add a gritter notification to the screen - * @param {Object} params The object that contains all the options for drawing the notification - * @return {Integer} The specific numeric id to that gritter notification - */ - add: function(params){ - // Handle straight text - if(typeof(params) == 'string'){ - params = {text:params}; - } - - // We might have some issues if we don't have a title or text! - if(params.text === null){ - throw 'You must supply "text" parameter.'; - } - - // Check the options and set them once - if(!this._is_setup){ - this._runSetup(); - } - - // Basics - var title = params.title, - text = params.text, - image = params.image || '', - sticky = params.sticky || false, - item_class = params.class_name || $.gritter.options.class_name, - position = $.gritter.options.position, - time_alive = params.time || ''; - - this._verifyWrapper(); - - this._item_count++; - var number = this._item_count, - tmp = this._tpl_item; - - // Assign callbacks - $(['before_open', 'after_open', 'before_close', 'after_close']).each(function(i, val){ - Gritter['_' + val + '_' + number] = ($.isFunction(params[val])) ? params[val] : function(){} - }); - - // Reset - this._custom_timer = 0; - - // A custom fade time set - if(time_alive){ - this._custom_timer = time_alive; - } - - var image_str = (image != '') ? '<img src="' + image + '" class="gritter-image" />' : '', - class_name = (image != '') ? 'gritter-with-image' : 'gritter-without-image'; - - // String replacements on the template - if(title){ - title = this._str_replace('[[title]]',title,this._tpl_title); - }else{ - title = ''; - } - - tmp = this._str_replace( - ['[[title]]', '[[text]]', '[[close]]', '[[image]]', '[[number]]', '[[class_name]]', '[[item_class]]'], - [title, text, this._tpl_close, image_str, this._item_count, class_name, item_class], tmp - ); - - // If it's false, don't show another gritter message - if(this['_before_open_' + number]() === false){ - return false; - } - - $('#gritter-notice-wrapper').addClass(position).append(tmp); - - var item = $('#gritter-item-' + this._item_count); - - item.fadeIn(this.fade_in_speed, function(){ - Gritter['_after_open_' + number]($(this)); - }); - - if(!sticky){ - this._setFadeTimer(item, number); - } - - // Bind the hover/unhover states - $(item).bind('mouseenter mouseleave', function(event){ - if(event.type == 'mouseenter'){ - if(!sticky){ - Gritter._restoreItemIfFading($(this), number); - } - } - else { - if(!sticky){ - Gritter._setFadeTimer($(this), number); - } - } - Gritter._hoverState($(this), event.type); - }); - - // Clicking (X) makes the perdy thing close - $(item).find('.gritter-close').click(function(){ - Gritter.removeSpecific(number, {}, null, true); - return false; - }); - - return number; - - }, - - /** - * If we don't have any more gritter notifications, get rid of the wrapper using this check - * @private - * @param {Integer} unique_id The ID of the element that was just deleted, use it for a callback - * @param {Object} e The jQuery element that we're going to perform the remove() action on - * @param {Boolean} manual_close Did we close the gritter dialog with the (X) button - */ - _countRemoveWrapper: function(unique_id, e, manual_close){ - - // Remove it then run the callback function - e.remove(); - this['_after_close_' + unique_id](e, manual_close); - - // Check if the wrapper is empty, if it is.. remove the wrapper - if($('.gritter-item-wrapper').length == 0){ - $('#gritter-notice-wrapper').remove(); - } - - }, - - /** - * Fade out an element after it's been on the screen for x amount of time - * @private - * @param {Object} e The jQuery element to get rid of - * @param {Integer} unique_id The id of the element to remove - * @param {Object} params An optional list of params to set fade speeds etc. - * @param {Boolean} unbind_events Unbind the mouseenter/mouseleave events if they click (X) - */ - _fade: function(e, unique_id, params, unbind_events){ - - var params = params || {}, - fade = (typeof(params.fade) != 'undefined') ? params.fade : true, - fade_out_speed = params.speed || this.fade_out_speed, - manual_close = unbind_events; - - this['_before_close_' + unique_id](e, manual_close); - - // If this is true, then we are coming from clicking the (X) - if(unbind_events){ - e.unbind('mouseenter mouseleave'); - } - - // Fade it out or remove it - if(fade){ - - e.animate({ - opacity: 0 - }, fade_out_speed, function(){ - e.animate({ height: 0 }, 300, function(){ - Gritter._countRemoveWrapper(unique_id, e, manual_close); - }) - }) - - } - else { - - this._countRemoveWrapper(unique_id, e); - - } - - }, - - /** - * Perform actions based on the type of bind (mouseenter, mouseleave) - * @private - * @param {Object} e The jQuery element - * @param {String} type The type of action we're performing: mouseenter or mouseleave - */ - _hoverState: function(e, type){ - - // Change the border styles and add the (X) close button when you hover - if(type == 'mouseenter'){ - - e.addClass('hover'); - - // Show close button - e.find('.gritter-close').show(); - - } - // Remove the border styles and hide (X) close button when you mouse out - else { - - e.removeClass('hover'); - - // Hide close button - e.find('.gritter-close').hide(); - - } - - }, - - /** - * Remove a specific notification based on an ID - * @param {Integer} unique_id The ID used to delete a specific notification - * @param {Object} params A set of options passed in to determine how to get rid of it - * @param {Object} e The jQuery element that we're "fading" then removing - * @param {Boolean} unbind_events If we clicked on the (X) we set this to true to unbind mouseenter/mouseleave - */ - removeSpecific: function(unique_id, params, e, unbind_events){ - - if(!e){ - var e = $('#gritter-item-' + unique_id); - } - - // We set the fourth param to let the _fade function know to - // unbind the "mouseleave" event. Once you click (X) there's no going back! - this._fade(e, unique_id, params || {}, unbind_events); - - }, - - /** - * If the item is fading out and we hover over it, restore it! - * @private - * @param {Object} e The HTML element to remove - * @param {Integer} unique_id The ID of the element - */ - _restoreItemIfFading: function(e, unique_id){ - - clearTimeout(this['_int_id_' + unique_id]); - e.stop().css({ opacity: '', height: '' }); - - }, - - /** - * Setup the global options - only once - * @private - */ - _runSetup: function(){ - - for(opt in $.gritter.options){ - this[opt] = $.gritter.options[opt]; - } - this._is_setup = 1; - - }, - - /** - * Set the notification to fade out after a certain amount of time - * @private - * @param {Object} item The HTML element we're dealing with - * @param {Integer} unique_id The ID of the element - */ - _setFadeTimer: function(e, unique_id){ - - var timer_str = (this._custom_timer) ? this._custom_timer : this.time; - this['_int_id_' + unique_id] = setTimeout(function(){ - Gritter._fade(e, unique_id); - }, timer_str); - - }, - - /** - * Bring everything to a halt - * @param {Object} params A list of callback functions to pass when all notifications are removed - */ - stop: function(params){ - - // callbacks (if passed) - var before_close = ($.isFunction(params.before_close)) ? params.before_close : function(){}; - var after_close = ($.isFunction(params.after_close)) ? params.after_close : function(){}; - - var wrap = $('#gritter-notice-wrapper'); - before_close(wrap); - wrap.fadeOut(function(){ - $(this).remove(); - after_close(); - }); - - }, - - /** - * An extremely handy PHP function ported to JS, works well for templating - * @private - * @param {String/Array} search A list of things to search for - * @param {String/Array} replace A list of things to replace the searches with - * @return {String} sa The output - */ - _str_replace: function(search, replace, subject, count){ - - var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0, - f = [].concat(search), - r = [].concat(replace), - s = subject, - ra = r instanceof Array, sa = s instanceof Array; - s = [].concat(s); - - if(count){ - this.window[count] = 0; - } - - for(i = 0, sl = s.length; i < sl; i++){ - - if(s[i] === ''){ - continue; - } - - for (j = 0, fl = f.length; j < fl; j++){ - - temp = s[i] + ''; - repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0]; - s[i] = (temp).split(f[j]).join(repl); - - if(count && s[i] !== temp){ - this.window[count] += (temp.length-s[i].length) / f[j].length; - } - - } - } - - return sa ? s : s[0]; - - }, - - /** - * A check to make sure we have something to wrap our notices with - * @private - */ - _verifyWrapper: function(){ - - if($('#gritter-notice-wrapper').length == 0){ - $('body').append(this._tpl_wrap); - } - - } - - } - -})(jQuery); diff --git a/dashboard/lib/jquery.ui.touch-punch.min.js b/dashboard/lib/jquery.ui.touch-punch.min.js deleted file mode 100644 index 31272ce6..00000000 --- a/dashboard/lib/jquery.ui.touch-punch.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * jQuery UI Touch Punch 0.2.3 - * - * Copyright 2011–2014, Dave Furfero - * Dual licensed under the MIT or GPL Version 2 licenses. - * - * Depends: - * jquery.ui.widget.js - * jquery.ui.mouse.js - */ -!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); \ No newline at end of file diff --git a/dashboard/lib/jquery/jquery.js b/dashboard/lib/jquery/jquery.js deleted file mode 100644 index eed17778..00000000 --- a/dashboard/lib/jquery/jquery.js +++ /dev/null @@ -1,9210 +0,0 @@ -/*! - * jQuery JavaScript Library v2.1.4 - * 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:01Z - */ - -(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 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 ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// - -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 support = {}; - - - -var - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - version = "2.1.4", - - // 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 - // 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: 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 ) { - // 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; - }, - - 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; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - 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 - // Support: IE9-11+ - // 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 - 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 ); - }, - - 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 ) { - - // 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 = "<a id='" + expando + "'></a>" + - "<select id='" + expando + "-\f]' 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 - // 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: <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, 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 = "<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; - - // 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] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes 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 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.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.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).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 + Data.uid++; -} - -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-- ) { - - // 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 ] ); - } - } - } - 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 public - generate a queueHooks object, or return 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" ) ), - input = document.createElement( "input" ); - - // Support: Safari<=5.1 - // 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: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - 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|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 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 ) { - 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 || - src.defaultPrevented === undefined && - // Support: 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 && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - 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 -// Support: Chrome 15+ -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; - } - }; -}); - -// Support: Firefox, Chrome, Safari -// 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 = 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: IE9 - 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: IE9 -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; -} - -// 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; - } -} - -jQuery.extend({ - 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: 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, PhantomJS - // 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 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit, PhantomJS - // 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++ ]) ) { - - // #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, type, key, - 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 ]) ) { - 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 ); - } - } - } - 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 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 optimization) 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( "<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 ) { - // Support: IE<=11+, Firefox<=30+ (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - if ( elem.ownerDocument.defaultView.opener ) { - return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); - } - - return window.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') (#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. - 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, - docElem = document.documentElement, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - if ( !div.style ) { - return; - } - - // Support: IE9-11+ - // 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:0;height:0;top:0;left:-9999px;margin-top:1px;" + - "position:absolute"; - 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() { - div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-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"; - div.innerHTML = ""; - docElem.appendChild( container ); - - var divStyle = window.getComputedStyle( div, null ); - pixelPositionVal = divStyle.top !== "1%"; - boxSizingReliableVal = divStyle.width === "4px"; - - docElem.removeChild( container ); - } - - // Support: node.js jsdom - // Don't assume that getComputedStyle is a property of the global object - 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" ) ); - - // Reset CSS: box-sizing; display; margin; border; padding - marginDiv.style.cssText = div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - docElem.appendChild( container ); - - ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight ); - - docElem.removeChild( container ); - div.removeChild( marginDiv ); - - 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; - } - - // 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 { - hidden = isHidden( elem ); - - if ( 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, - "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( style, 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 = 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 (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Support: IE9-11+ - // 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( elem.style, 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 || 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 - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ? - 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 ) { - 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. - // 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.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 string for doubling 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(), - // break 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, - // 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 = ( 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, checkDisplay, - 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() { - // Ensure the complete handler is 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" ); - - // Test default display if display is currently "none" - checkDisplay = display === "none" ? - data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; - - if ( checkDisplay === "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 ); - - // Any non-fx value stops us from restoring the original display value - } else { - display = undefined; - } - } - - 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; - } - } - } - - // If this is a noop like .hide().hide(), restore an overwritten display value - } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) { - style.display = display; - } -} - -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 = 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 ), - // Support: Android 2.3 - // 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.2+ - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE<=11+ - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: Android<=2.3 - // Options inside disabled selects are incorrectly marked as disabled - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE<=11+ - // 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 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" ) ) { - 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; - } - } - } -}); - -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: { - option: { - get: function( elem ) { - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - // Support: IE10-11+ - // option.text throws exceptions (#14686, #14858) - jQuery.trim( jQuery.text( elem ) ); - } - }, - 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( option.value, 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 ) { - 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 - 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( "*" ), - - // Document location - ajaxLocation = window.location.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 - // 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 - 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 { - // 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; - } - - return jQuery.ajax({ - url: url, - type: method, - dataType: type, - data: data, - success: callback - }); - }; -}); - - -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) -// See https://support.microsoft.com/kb/2856746 for more info -if ( window.attachEvent ) { - window.attachEvent( "onunload", 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"); - - 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(); - } - } - }; - } -}); - - - - -// 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 = jQuery.trim( 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; -}; - - - - -// 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.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; - } - - // Support: BlackBerry 5, iOS 3 (original iPhone) - // If we don't have gBCR, just use 0,0 rather than error - 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" ) { - // 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 += 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 ); - }; -}); - -// Support: Safari<7+, Chrome<37+ -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280 -// 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 ) ) { - // 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. - -// 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 ( typeof noGlobal === strundefined ) { - window.jQuery = window.$ = jQuery; -} - - - - -return jQuery; - -})); diff --git a/dashboard/lib/modernizr/modernizr.js b/dashboard/lib/modernizr/modernizr.js deleted file mode 100644 index 33653390..00000000 --- a/dashboard/lib/modernizr/modernizr.js +++ /dev/null @@ -1,1406 +0,0 @@ -/*! - * Modernizr v2.8.3 - * www.modernizr.com - * - * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton - * Available under the BSD and MIT licenses: www.modernizr.com/license/ - */ - -/* - * Modernizr tests which native CSS3 and HTML5 features are available in - * the current UA and makes the results available to you in two ways: - * as properties on a global Modernizr object, and as classes on the - * <html> element. This information allows you to progressively enhance - * your pages with a granular level of control over the experience. - * - * Modernizr has an optional (not included) conditional resource loader - * called Modernizr.load(), based on Yepnope.js (yepnopejs.com). - * To get a build that includes Modernizr.load(), as well as choosing - * which tests to include, go to www.modernizr.com/download/ - * - * Authors Faruk Ates, Paul Irish, Alex Sexton - * Contributors Ryan Seddon, Ben Alman - */ - -window.Modernizr = (function( window, document, undefined ) { - - var version = '2.8.3', - - Modernizr = {}, - - /*>>cssclasses*/ - // option for enabling the HTML classes to be added - enableClasses = true, - /*>>cssclasses*/ - - docElement = document.documentElement, - - /** - * Create our "modernizr" element that we do most feature tests on. - */ - mod = 'modernizr', - modElem = document.createElement(mod), - mStyle = modElem.style, - - /** - * Create the input element for various Web Forms feature tests. - */ - inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ , - - /*>>smile*/ - smile = ':)', - /*>>smile*/ - - toString = {}.toString, - - // TODO :: make the prefixes more granular - /*>>prefixes*/ - // List of property values to set for css tests. See ticket #21 - prefixes = ' -webkit- -moz- -o- -ms- '.split(' '), - /*>>prefixes*/ - - /*>>domprefixes*/ - // Following spec is to expose vendor-specific style properties as: - // elem.style.WebkitBorderRadius - // and the following would be incorrect: - // elem.style.webkitBorderRadius - - // Webkit ghosts their properties in lowercase but Opera & Moz do not. - // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+ - // erik.eae.net/archives/2008/03/10/21.48.10/ - - // More here: github.com/Modernizr/Modernizr/issues/issue/21 - omPrefixes = 'Webkit Moz O ms', - - cssomPrefixes = omPrefixes.split(' '), - - domPrefixes = omPrefixes.toLowerCase().split(' '), - /*>>domprefixes*/ - - /*>>ns*/ - ns = {'svg': 'http://www.w3.org/2000/svg'}, - /*>>ns*/ - - tests = {}, - inputs = {}, - attrs = {}, - - classes = [], - - slice = classes.slice, - - featureName, // used in testing loop - - - /*>>teststyles*/ - // Inject element with style element and some CSS rules - injectElementWithStyles = function( rule, callback, nodes, testnames ) { - - var style, ret, node, docOverflow, - div = document.createElement('div'), - // After page load injecting a fake body doesn't work so check if body exists - body = document.body, - // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it. - fakeBody = body || document.createElement('body'); - - if ( parseInt(nodes, 10) ) { - // In order not to give false positives we create a node for each test - // This also allows the method to scale for unspecified uses - while ( nodes-- ) { - node = document.createElement('div'); - node.id = testnames ? testnames[nodes] : mod + (nodes + 1); - div.appendChild(node); - } - } - - // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed - // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element - // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements. - // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx - // Documents served as xml will throw if using ­ so use xml friendly encoded version. See issue #277 - style = ['­','<style id="s', mod, '">', rule, '</style>'].join(''); - div.id = mod; - // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody. - // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270 - (body ? div : fakeBody).innerHTML += style; - fakeBody.appendChild(div); - if ( !body ) { - //avoid crashing IE8, if background image is used - fakeBody.style.background = ''; - //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible - fakeBody.style.overflow = 'hidden'; - docOverflow = docElement.style.overflow; - docElement.style.overflow = 'hidden'; - docElement.appendChild(fakeBody); - } - - ret = callback(div, rule); - // If this is done after page load we don't want to remove the body so check if body exists - if ( !body ) { - fakeBody.parentNode.removeChild(fakeBody); - docElement.style.overflow = docOverflow; - } else { - div.parentNode.removeChild(div); - } - - return !!ret; - - }, - /*>>teststyles*/ - - /*>>mq*/ - // adapted from matchMedia polyfill - // by Scott Jehl and Paul Irish - // gist.github.com/786768 - testMediaQuery = function( mq ) { - - var matchMedia = window.matchMedia || window.msMatchMedia; - if ( matchMedia ) { - return matchMedia(mq) && matchMedia(mq).matches || false; - } - - var bool; - - injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) { - bool = (window.getComputedStyle ? - getComputedStyle(node, null) : - node.currentStyle)['position'] == 'absolute'; - }); - - return bool; - - }, - /*>>mq*/ - - - /*>>hasevent*/ - // - // isEventSupported determines if a given element supports the given event - // kangax.github.com/iseventsupported/ - // - // The following results are known incorrects: - // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative - // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333 - // ... - isEventSupported = (function() { - - var TAGNAMES = { - 'select': 'input', 'change': 'input', - 'submit': 'form', 'reset': 'form', - 'error': 'img', 'load': 'img', 'abort': 'img' - }; - - function isEventSupported( eventName, element ) { - - element = element || document.createElement(TAGNAMES[eventName] || 'div'); - eventName = 'on' + eventName; - - // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those - var isSupported = eventName in element; - - if ( !isSupported ) { - // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element - if ( !element.setAttribute ) { - element = document.createElement('div'); - } - if ( element.setAttribute && element.removeAttribute ) { - element.setAttribute(eventName, ''); - isSupported = is(element[eventName], 'function'); - - // If property was created, "remove it" (by setting value to `undefined`) - if ( !is(element[eventName], 'undefined') ) { - element[eventName] = undefined; - } - element.removeAttribute(eventName); - } - } - - element = null; - return isSupported; - } - return isEventSupported; - })(), - /*>>hasevent*/ - - // TODO :: Add flag for hasownprop ? didn't last time - - // hasOwnProperty shim by kangax needed for Safari 2.0 support - _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp; - - if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) { - hasOwnProp = function (object, property) { - return _hasOwnProperty.call(object, property); - }; - } - else { - hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */ - return ((property in object) && is(object.constructor.prototype[property], 'undefined')); - }; - } - - // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js - // es5.github.com/#x15.3.4.5 - - if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { - - var target = this; - - if (typeof target != "function") { - throw new TypeError(); - } - - var args = slice.call(arguments, 1), - bound = function () { - - if (this instanceof bound) { - - var F = function(){}; - F.prototype = target.prototype; - var self = new F(); - - var result = target.apply( - self, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return self; - - } else { - - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - - } - - }; - - return bound; - }; - } - - /** - * setCss applies given styles to the Modernizr DOM node. - */ - function setCss( str ) { - mStyle.cssText = str; - } - - /** - * setCssAll extrapolates all vendor-specific css strings. - */ - function setCssAll( str1, str2 ) { - return setCss(prefixes.join(str1 + ';') + ( str2 || '' )); - } - - /** - * is returns a boolean for if typeof obj is exactly type. - */ - function is( obj, type ) { - return typeof obj === type; - } - - /** - * contains returns a boolean for if substr is found within str. - */ - function contains( str, substr ) { - return !!~('' + str).indexOf(substr); - } - - /*>>testprop*/ - - // testProps is a generic CSS / DOM property test. - - // In testing support for a given CSS property, it's legit to test: - // `elem.style[styleName] !== undefined` - // If the property is supported it will return an empty string, - // if unsupported it will return undefined. - - // We'll take advantage of this quick test and skip setting a style - // on our modernizr element, but instead just testing undefined vs - // empty string. - - // Because the testing of the CSS property names (with "-", as - // opposed to the camelCase DOM properties) is non-portable and - // non-standard but works in WebKit and IE (but not Gecko or Opera), - // we explicitly reject properties with dashes so that authors - // developing in WebKit or IE first don't end up with - // browser-specific content by accident. - - function testProps( props, prefixed ) { - for ( var i in props ) { - var prop = props[i]; - if ( !contains(prop, "-") && mStyle[prop] !== undefined ) { - return prefixed == 'pfx' ? prop : true; - } - } - return false; - } - /*>>testprop*/ - - // TODO :: add testDOMProps - /** - * testDOMProps is a generic DOM property test; if a browser supports - * a certain property, it won't return undefined for it. - */ - function testDOMProps( props, obj, elem ) { - for ( var i in props ) { - var item = obj[props[i]]; - if ( item !== undefined) { - - // return the property name as a string - if (elem === false) return props[i]; - - // let's bind a function - if (is(item, 'function')){ - // default to autobind unless override - return item.bind(elem || obj); - } - - // return the unbound function or obj or value - return item; - } - } - return false; - } - - /*>>testallprops*/ - /** - * testPropsAll tests a list of DOM properties we want to check against. - * We specify literally ALL possible (known and/or likely) properties on - * the element including the non-vendor prefixed one, for forward- - * compatibility. - */ - function testPropsAll( prop, prefixed, elem ) { - - var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), - props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); - - // did they call .prefixed('boxSizing') or are we just testing a prop? - if(is(prefixed, "string") || is(prefixed, "undefined")) { - return testProps(props, prefixed); - - // otherwise, they called .prefixed('requestAnimationFrame', window[, elem]) - } else { - props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); - return testDOMProps(props, prefixed, elem); - } - } - /*>>testallprops*/ - - - /** - * Tests - * ----- - */ - - // The *new* flexbox - // dev.w3.org/csswg/css3-flexbox - - tests['flexbox'] = function() { - return testPropsAll('flexWrap'); - }; - - // The *old* flexbox - // www.w3.org/TR/2009/WD-css3-flexbox-20090723/ - - tests['flexboxlegacy'] = function() { - return testPropsAll('boxDirection'); - }; - - // On the S60 and BB Storm, getContext exists, but always returns undefined - // so we actually have to call getContext() to verify - // github.com/Modernizr/Modernizr/issues/issue/97/ - - tests['canvas'] = function() { - var elem = document.createElement('canvas'); - return !!(elem.getContext && elem.getContext('2d')); - }; - - tests['canvastext'] = function() { - return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function')); - }; - - // webk.it/70117 is tracking a legit WebGL feature detect proposal - - // We do a soft detect which may false positive in order to avoid - // an expensive context creation: bugzil.la/732441 - - tests['webgl'] = function() { - return !!window.WebGLRenderingContext; - }; - - /* - * The Modernizr.touch test only indicates if the browser supports - * touch events, which does not necessarily reflect a touchscreen - * device, as evidenced by tablets running Windows 7 or, alas, - * the Palm Pre / WebOS (touch) phones. - * - * Additionally, Chrome (desktop) used to lie about its support on this, - * but that has since been rectified: crbug.com/36415 - * - * We also test for Firefox 4 Multitouch Support. - * - * For more info, see: modernizr.github.com/Modernizr/touch.html - */ - - tests['touch'] = function() { - var bool; - - if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) { - bool = true; - } else { - injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) { - bool = node.offsetTop === 9; - }); - } - - return bool; - }; - - - // geolocation is often considered a trivial feature detect... - // Turns out, it's quite tricky to get right: - // - // Using !!navigator.geolocation does two things we don't want. It: - // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513 - // 2. Disables page caching in WebKit: webk.it/43956 - // - // Meanwhile, in Firefox < 8, an about:config setting could expose - // a false positive that would throw an exception: bugzil.la/688158 - - tests['geolocation'] = function() { - return 'geolocation' in navigator; - }; - - - tests['postmessage'] = function() { - return !!window.postMessage; - }; - - - // Chrome incognito mode used to throw an exception when using openDatabase - // It doesn't anymore. - tests['websqldatabase'] = function() { - return !!window.openDatabase; - }; - - // Vendors had inconsistent prefixing with the experimental Indexed DB: - // - Webkit's implementation is accessible through webkitIndexedDB - // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB - // For speed, we don't test the legacy (and beta-only) indexedDB - tests['indexedDB'] = function() { - return !!testPropsAll("indexedDB", window); - }; - - // documentMode logic from YUI to filter out IE8 Compat Mode - // which false positives. - tests['hashchange'] = function() { - return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7); - }; - - // Per 1.6: - // This used to be Modernizr.historymanagement but the longer - // name has been deprecated in favor of a shorter and property-matching one. - // The old API is still available in 1.6, but as of 2.0 will throw a warning, - // and in the first release thereafter disappear entirely. - tests['history'] = function() { - return !!(window.history && history.pushState); - }; - - tests['draganddrop'] = function() { - var div = document.createElement('div'); - return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div); - }; - - // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10 - // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17. - // FF10 still uses prefixes, so check for it until then. - // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/ - tests['websockets'] = function() { - return 'WebSocket' in window || 'MozWebSocket' in window; - }; - - - // css-tricks.com/rgba-browser-support/ - tests['rgba'] = function() { - // Set an rgba() color and check the returned value - - setCss('background-color:rgba(150,255,150,.5)'); - - return contains(mStyle.backgroundColor, 'rgba'); - }; - - tests['hsla'] = function() { - // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally, - // except IE9 who retains it as hsla - - setCss('background-color:hsla(120,40%,100%,.5)'); - - return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla'); - }; - - tests['multiplebgs'] = function() { - // Setting multiple images AND a color on the background shorthand property - // and then querying the style.background property value for the number of - // occurrences of "url(" is a reliable method for detecting ACTUAL support for this! - - setCss('background:url(https://),url(https://),red url(https://)'); - - // If the UA supports multiple backgrounds, there should be three occurrences - // of the string "url(" in the return value for elemStyle.background - - return (/(url\s*\(.*?){3}/).test(mStyle.background); - }; - - - - // this will false positive in Opera Mini - // github.com/Modernizr/Modernizr/issues/396 - - tests['backgroundsize'] = function() { - return testPropsAll('backgroundSize'); - }; - - tests['borderimage'] = function() { - return testPropsAll('borderImage'); - }; - - - // Super comprehensive table about all the unique implementations of - // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance - - tests['borderradius'] = function() { - return testPropsAll('borderRadius'); - }; - - // WebOS unfortunately false positives on this test. - tests['boxshadow'] = function() { - return testPropsAll('boxShadow'); - }; - - // FF3.0 will false positive on this test - tests['textshadow'] = function() { - return document.createElement('div').style.textShadow === ''; - }; - - - tests['opacity'] = function() { - // Browsers that actually have CSS Opacity implemented have done so - // according to spec, which means their return values are within the - // range of [0.0,1.0] - including the leading zero. - - setCssAll('opacity:.55'); - - // The non-literal . in this regex is intentional: - // German Chrome returns this value as 0,55 - // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632 - return (/^0.55$/).test(mStyle.opacity); - }; - - - // Note, Android < 4 will pass this test, but can only animate - // a single property at a time - // goo.gl/v3V4Gp - tests['cssanimations'] = function() { - return testPropsAll('animationName'); - }; - - - tests['csscolumns'] = function() { - return testPropsAll('columnCount'); - }; - - - tests['cssgradients'] = function() { - /** - * For CSS Gradients syntax, please see: - * webkit.org/blog/175/introducing-css-gradients/ - * developer.mozilla.org/en/CSS/-moz-linear-gradient - * developer.mozilla.org/en/CSS/-moz-radial-gradient - * dev.w3.org/csswg/css3-images/#gradients- - */ - - var str1 = 'background-image:', - str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));', - str3 = 'linear-gradient(left top,#9f9, white);'; - - setCss( - // legacy webkit syntax (FIXME: remove when syntax not in use anymore) - (str1 + '-webkit- '.split(' ').join(str2 + str1) + - // standard syntax // trailing 'background-image:' - prefixes.join(str3 + str1)).slice(0, -str1.length) - ); - - return contains(mStyle.backgroundImage, 'gradient'); - }; - - - tests['cssreflections'] = function() { - return testPropsAll('boxReflect'); - }; - - - tests['csstransforms'] = function() { - return !!testPropsAll('transform'); - }; - - - tests['csstransforms3d'] = function() { - - var ret = !!testPropsAll('perspective'); - - // Webkit's 3D transforms are passed off to the browser's own graphics renderer. - // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in - // some conditions. As a result, Webkit typically recognizes the syntax but - // will sometimes throw a false positive, thus we must do a more thorough check: - if ( ret && 'webkitPerspective' in docElement.style ) { - - // Webkit allows this media query to succeed only if the feature is enabled. - // `@media (transform-3d),(-webkit-transform-3d){ ... }` - injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) { - ret = node.offsetLeft === 9 && node.offsetHeight === 3; - }); - } - return ret; - }; - - - tests['csstransitions'] = function() { - return testPropsAll('transition'); - }; - - - /*>>fontface*/ - // @font-face detection routine by Diego Perini - // javascript.nwbox.com/CSSSupport/ - - // false positives: - // WebOS github.com/Modernizr/Modernizr/issues/342 - // WP7 github.com/Modernizr/Modernizr/issues/538 - tests['fontface'] = function() { - var bool; - - injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) { - var style = document.getElementById('smodernizr'), - sheet = style.sheet || style.styleSheet, - cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; - - bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0; - }); - - return bool; - }; - /*>>fontface*/ - - // CSS generated content detection - tests['generatedcontent'] = function() { - var bool; - - injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) { - bool = node.offsetHeight >= 3; - }); - - return bool; - }; - - - - // These tests evaluate support of the video/audio elements, as well as - // testing what types of content they support. - // - // We're using the Boolean constructor here, so that we can extend the value - // e.g. Modernizr.video // true - // Modernizr.video.ogg // 'probably' - // - // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845 - // thx to NielsLeenheer and zcorpan - - // Note: in some older browsers, "no" was a return value instead of empty string. - // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2 - // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5 - - tests['video'] = function() { - var elem = document.createElement('video'), - bool = false; - - // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224 - try { - if ( bool = !!elem.canPlayType ) { - bool = new Boolean(bool); - bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,''); - - // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546 - bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,''); - - bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,''); - } - - } catch(e) { } - - return bool; - }; - - tests['audio'] = function() { - var elem = document.createElement('audio'), - bool = false; - - try { - if ( bool = !!elem.canPlayType ) { - bool = new Boolean(bool); - bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,''); - bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,''); - - // Mimetypes accepted: - // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements - // bit.ly/iphoneoscodecs - bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,''); - bool.m4a = ( elem.canPlayType('audio/x-m4a;') || - elem.canPlayType('audio/aac;')) .replace(/^no$/,''); - } - } catch(e) { } - - return bool; - }; - - - // In FF4, if disabled, window.localStorage should === null. - - // Normally, we could not test that directly and need to do a - // `('localStorage' in window) && ` test first because otherwise Firefox will - // throw bugzil.la/365772 if cookies are disabled - - // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem - // will throw the exception: - // QUOTA_EXCEEDED_ERRROR DOM Exception 22. - // Peculiarly, getItem and removeItem calls do not throw. - - // Because we are forced to try/catch this, we'll go aggressive. - - // Just FWIW: IE8 Compat mode supports these features completely: - // www.quirksmode.org/dom/html5.html - // But IE8 doesn't support either with local files - - tests['localstorage'] = function() { - try { - localStorage.setItem(mod, mod); - localStorage.removeItem(mod); - return true; - } catch(e) { - return false; - } - }; - - tests['sessionstorage'] = function() { - try { - sessionStorage.setItem(mod, mod); - sessionStorage.removeItem(mod); - return true; - } catch(e) { - return false; - } - }; - - - tests['webworkers'] = function() { - return !!window.Worker; - }; - - - tests['applicationcache'] = function() { - return !!window.applicationCache; - }; - - - // Thanks to Erik Dahlstrom - tests['svg'] = function() { - return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect; - }; - - // specifically for SVG inline in HTML, not within XHTML - // test page: paulirish.com/demo/inline-svg - tests['inlinesvg'] = function() { - var div = document.createElement('div'); - div.innerHTML = '<svg/>'; - return (div.firstChild && div.firstChild.namespaceURI) == ns.svg; - }; - - // SVG SMIL animation - tests['smil'] = function() { - return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate'))); - }; - - // This test is only for clip paths in SVG proper, not clip paths on HTML content - // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg - - // However read the comments to dig into applying SVG clippaths to HTML content here: - // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491 - tests['svgclippaths'] = function() { - return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath'))); - }; - - /*>>webforms*/ - // input features and input types go directly onto the ret object, bypassing the tests loop. - // Hold this guy to execute in a moment. - function webforms() { - /*>>input*/ - // Run through HTML5's new input attributes to see if the UA understands any. - // We're using f which is the <input> element created early on - // Mike Taylr has created a comprehensive resource for testing these attributes - // when applied to all input types: - // miketaylr.com/code/input-type-attr.html - // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary - - // Only input placeholder is tested while textarea's placeholder is not. - // Currently Safari 4 and Opera 11 have support only for the input placeholder - // Both tests are available in feature-detects/forms-placeholder.js - Modernizr['input'] = (function( props ) { - for ( var i = 0, len = props.length; i < len; i++ ) { - attrs[ props[i] ] = !!(props[i] in inputElem); - } - if (attrs.list){ - // safari false positive's on datalist: webk.it/74252 - // see also github.com/Modernizr/Modernizr/issues/146 - attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement); - } - return attrs; - })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' ')); - /*>>input*/ - - /*>>inputtypes*/ - // Run through HTML5's new input types to see if the UA understands any. - // This is put behind the tests runloop because it doesn't return a - // true/false like all the other tests; instead, it returns an object - // containing each input type with its corresponding true/false value - - // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/ - Modernizr['inputtypes'] = (function(props) { - - for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) { - - inputElem.setAttribute('type', inputElemType = props[i]); - bool = inputElem.type !== 'text'; - - // We first check to see if the type we give it sticks.. - // If the type does, we feed it a textual value, which shouldn't be valid. - // If the value doesn't stick, we know there's input sanitization which infers a custom UI - if ( bool ) { - - inputElem.value = smile; - inputElem.style.cssText = 'position:absolute;visibility:hidden;'; - - if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) { - - docElement.appendChild(inputElem); - defaultView = document.defaultView; - - // Safari 2-4 allows the smiley as a value, despite making a slider - bool = defaultView.getComputedStyle && - defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' && - // Mobile android web browser has false positive, so must - // check the height to see if the widget is actually there. - (inputElem.offsetHeight !== 0); - - docElement.removeChild(inputElem); - - } else if ( /^(search|tel)$/.test(inputElemType) ){ - // Spec doesn't define any special parsing or detectable UI - // behaviors so we pass these through as true - - // Interestingly, opera fails the earlier test, so it doesn't - // even make it here. - - } else if ( /^(url|email)$/.test(inputElemType) ) { - // Real url and email support comes with prebaked validation. - bool = inputElem.checkValidity && inputElem.checkValidity() === false; - - } else { - // If the upgraded input compontent rejects the :) text, we got a winner - bool = inputElem.value != smile; - } - } - - inputs[ props[i] ] = !!bool; - } - return inputs; - })('search tel url email datetime date month week time datetime-local number range color'.split(' ')); - /*>>inputtypes*/ - } - /*>>webforms*/ - - - // End of test definitions - // ----------------------- - - - - // Run through all tests and detect their support in the current UA. - // todo: hypothetically we could be doing an array of tests and use a basic loop here. - for ( var feature in tests ) { - if ( hasOwnProp(tests, feature) ) { - // run the test, throw the return value into the Modernizr, - // then based on that boolean, define an appropriate className - // and push it into an array of classes we'll join later. - featureName = feature.toLowerCase(); - Modernizr[featureName] = tests[feature](); - - classes.push((Modernizr[featureName] ? '' : 'no-') + featureName); - } - } - - /*>>webforms*/ - // input tests need to run. - Modernizr.input || webforms(); - /*>>webforms*/ - - - /** - * addTest allows the user to define their own feature tests - * the result will be added onto the Modernizr object, - * as well as an appropriate className set on the html element - * - * @param feature - String naming the feature - * @param test - Function returning true if feature is supported, false if not - */ - Modernizr.addTest = function ( feature, test ) { - if ( typeof feature == 'object' ) { - for ( var key in feature ) { - if ( hasOwnProp( feature, key ) ) { - Modernizr.addTest( key, feature[ key ] ); - } - } - } else { - - feature = feature.toLowerCase(); - - if ( Modernizr[feature] !== undefined ) { - // we're going to quit if you're trying to overwrite an existing test - // if we were to allow it, we'd do this: - // var re = new RegExp("\\b(no-)?" + feature + "\\b"); - // docElement.className = docElement.className.replace( re, '' ); - // but, no rly, stuff 'em. - return Modernizr; - } - - test = typeof test == 'function' ? test() : test; - - if (typeof enableClasses !== "undefined" && enableClasses) { - docElement.className += ' ' + (test ? '' : 'no-') + feature; - } - Modernizr[feature] = test; - - } - - return Modernizr; // allow chaining. - }; - - - // Reset modElem.cssText to nothing to reduce memory footprint. - setCss(''); - modElem = inputElem = null; - - /*>>shiv*/ - /** - * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed - */ - ;(function(window, document) { - /*jshint evil:true */ - /** version */ - var version = '3.7.0'; - - /** Preset options */ - var options = window.html5 || {}; - - /** Used to skip problem elements */ - var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; - - /** Not all elements can be cloned in IE **/ - var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; - - /** Detect whether the browser supports default html5 styles */ - var supportsHtml5Styles; - - /** Name of the expando, to work with multiple documents or to re-shiv one document */ - var expando = '_html5shiv'; - - /** The id for the the documents expando */ - var expanID = 0; - - /** Cached data for each document */ - var expandoData = {}; - - /** Detect whether the browser supports unknown elements */ - var supportsUnknownElements; - - (function() { - try { - var a = document.createElement('a'); - a.innerHTML = '<xyz></xyz>'; - //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles - supportsHtml5Styles = ('hidden' in a); - - supportsUnknownElements = a.childNodes.length == 1 || (function() { - // assign a false positive if unable to shiv - (document.createElement)('a'); - var frag = document.createDocumentFragment(); - return ( - typeof frag.cloneNode == 'undefined' || - typeof frag.createDocumentFragment == 'undefined' || - typeof frag.createElement == 'undefined' - ); - }()); - } catch(e) { - // assign a false positive if detection fails => unable to shiv - supportsHtml5Styles = true; - supportsUnknownElements = true; - } - - }()); - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a style sheet with the given CSS text and adds it to the document. - * @private - * @param {Document} ownerDocument The document. - * @param {String} cssText The CSS text. - * @returns {StyleSheet} The style element. - */ - function addStyleSheet(ownerDocument, cssText) { - var p = ownerDocument.createElement('p'), - parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; - - p.innerHTML = 'x<style>' + cssText + '</style>'; - return parent.insertBefore(p.lastChild, parent.firstChild); - } - - /** - * Returns the value of `html5.elements` as an array. - * @private - * @returns {Array} An array of shived element node names. - */ - function getElements() { - var elements = html5.elements; - return typeof elements == 'string' ? elements.split(' ') : elements; - } - - /** - * Returns the data associated to the given document - * @private - * @param {Document} ownerDocument The document. - * @returns {Object} An object of data. - */ - function getExpandoData(ownerDocument) { - var data = expandoData[ownerDocument[expando]]; - if (!data) { - data = {}; - expanID++; - ownerDocument[expando] = expanID; - expandoData[expanID] = data; - } - return data; - } - - /** - * returns a shived element for the given nodeName and document - * @memberOf html5 - * @param {String} nodeName name of the element - * @param {Document} ownerDocument The context document. - * @returns {Object} The shived element. - */ - function createElement(nodeName, ownerDocument, data){ - if (!ownerDocument) { - ownerDocument = document; - } - if(supportsUnknownElements){ - return ownerDocument.createElement(nodeName); - } - if (!data) { - data = getExpandoData(ownerDocument); - } - var node; - - if (data.cache[nodeName]) { - node = data.cache[nodeName].cloneNode(); - } else if (saveClones.test(nodeName)) { - node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); - } else { - node = data.createElem(nodeName); - } - - // Avoid adding some elements to fragments in IE < 9 because - // * Attributes like `name` or `type` cannot be set/changed once an element - // is inserted into a document/fragment - // * Link elements with `src` attributes that are inaccessible, as with - // a 403 response, will cause the tab/window to crash - // * Script elements appended to fragments will execute when their `src` - // or `text` property is set - return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; - } - - /** - * returns a shived DocumentFragment for the given document - * @memberOf html5 - * @param {Document} ownerDocument The context document. - * @returns {Object} The shived DocumentFragment. - */ - function createDocumentFragment(ownerDocument, data){ - if (!ownerDocument) { - ownerDocument = document; - } - if(supportsUnknownElements){ - return ownerDocument.createDocumentFragment(); - } - data = data || getExpandoData(ownerDocument); - var clone = data.frag.cloneNode(), - i = 0, - elems = getElements(), - l = elems.length; - for(;i<l;i++){ - clone.createElement(elems[i]); - } - return clone; - } - - /** - * Shivs the `createElement` and `createDocumentFragment` methods of the document. - * @private - * @param {Document|DocumentFragment} ownerDocument The document. - * @param {Object} data of the document. - */ - function shivMethods(ownerDocument, data) { - if (!data.cache) { - data.cache = {}; - data.createElem = ownerDocument.createElement; - data.createFrag = ownerDocument.createDocumentFragment; - data.frag = data.createFrag(); - } - - - ownerDocument.createElement = function(nodeName) { - //abort shiv - if (!html5.shivMethods) { - return data.createElem(nodeName); - } - return createElement(nodeName, ownerDocument, data); - }; - - ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' + - 'var n=f.cloneNode(),c=n.createElement;' + - 'h.shivMethods&&(' + - // unroll the `createElement` calls - getElements().join().replace(/[\w\-]+/g, function(nodeName) { - data.createElem(nodeName); - data.frag.createElement(nodeName); - return 'c("' + nodeName + '")'; - }) + - ');return n}' - )(html5, data.frag); - } - - /*--------------------------------------------------------------------------*/ - - /** - * Shivs the given document. - * @memberOf html5 - * @param {Document} ownerDocument The document to shiv. - * @returns {Document} The shived document. - */ - function shivDocument(ownerDocument) { - if (!ownerDocument) { - ownerDocument = document; - } - var data = getExpandoData(ownerDocument); - - if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) { - data.hasCSS = !!addStyleSheet(ownerDocument, - // corrects block display not defined in IE6/7/8/9 - 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' + - // adds styling not present in IE6/7/8/9 - 'mark{background:#FF0;color:#000}' + - // hides non-rendered elements - 'template{display:none}' - ); - } - if (!supportsUnknownElements) { - shivMethods(ownerDocument, data); - } - return ownerDocument; - } - - /*--------------------------------------------------------------------------*/ - - /** - * The `html5` object is exposed so that more elements can be shived and - * existing shiving can be detected on iframes. - * @type Object - * @example - * - * // options can be changed before the script is included - * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false }; - */ - var html5 = { - - /** - * An array or space separated string of node names of the elements to shiv. - * @memberOf html5 - * @type Array|String - */ - 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video', - - /** - * current version of html5shiv - */ - 'version': version, - - /** - * A flag to indicate that the HTML5 style sheet should be inserted. - * @memberOf html5 - * @type Boolean - */ - 'shivCSS': (options.shivCSS !== false), - - /** - * Is equal to true if a browser supports creating unknown/HTML5 elements - * @memberOf html5 - * @type boolean - */ - 'supportsUnknownElements': supportsUnknownElements, - - /** - * A flag to indicate that the document's `createElement` and `createDocumentFragment` - * methods should be overwritten. - * @memberOf html5 - * @type Boolean - */ - 'shivMethods': (options.shivMethods !== false), - - /** - * A string to describe the type of `html5` object ("default" or "default print"). - * @memberOf html5 - * @type String - */ - 'type': 'default', - - // shivs the document according to the specified `html5` object options - 'shivDocument': shivDocument, - - //creates a shived element - createElement: createElement, - - //creates a shived documentFragment - createDocumentFragment: createDocumentFragment - }; - - /*--------------------------------------------------------------------------*/ - - // expose html5 - window.html5 = html5; - - // shiv the document - shivDocument(document); - - }(this, document)); - /*>>shiv*/ - - // Assign private properties to the return object with prefix - Modernizr._version = version; - - // expose these for the plugin API. Look in the source for how to join() them against your input - /*>>prefixes*/ - Modernizr._prefixes = prefixes; - /*>>prefixes*/ - /*>>domprefixes*/ - Modernizr._domPrefixes = domPrefixes; - Modernizr._cssomPrefixes = cssomPrefixes; - /*>>domprefixes*/ - - /*>>mq*/ - // Modernizr.mq tests a given media query, live against the current state of the window - // A few important notes: - // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false - // * A max-width or orientation query will be evaluated against the current state, which may change later. - // * You must specify values. Eg. If you are testing support for the min-width media query use: - // Modernizr.mq('(min-width:0)') - // usage: - // Modernizr.mq('only screen and (max-width:768)') - Modernizr.mq = testMediaQuery; - /*>>mq*/ - - /*>>hasevent*/ - // Modernizr.hasEvent() detects support for a given event, with an optional element to test on - // Modernizr.hasEvent('gesturestart', elem) - Modernizr.hasEvent = isEventSupported; - /*>>hasevent*/ - - /*>>testprop*/ - // Modernizr.testProp() investigates whether a given style property is recognized - // Note that the property names must be provided in the camelCase variant. - // Modernizr.testProp('pointerEvents') - Modernizr.testProp = function(prop){ - return testProps([prop]); - }; - /*>>testprop*/ - - /*>>testallprops*/ - // Modernizr.testAllProps() investigates whether a given style property, - // or any of its vendor-prefixed variants, is recognized - // Note that the property names must be provided in the camelCase variant. - // Modernizr.testAllProps('boxSizing') - Modernizr.testAllProps = testPropsAll; - /*>>testallprops*/ - - - /*>>teststyles*/ - // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards - // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... }) - Modernizr.testStyles = injectElementWithStyles; - /*>>teststyles*/ - - - /*>>prefixed*/ - // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input - // Modernizr.prefixed('boxSizing') // 'MozBoxSizing' - - // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style. - // Return values will also be the camelCase variant, if you need to translate that to hypenated style use: - // - // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-'); - - // If you're trying to ascertain which transition end event to bind to, you might do something like... - // - // var transEndEventNames = { - // 'WebkitTransition' : 'webkitTransitionEnd', - // 'MozTransition' : 'transitionend', - // 'OTransition' : 'oTransitionEnd', - // 'msTransition' : 'MSTransitionEnd', - // 'transition' : 'transitionend' - // }, - // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ]; - - Modernizr.prefixed = function(prop, obj, elem){ - if(!obj) { - return testPropsAll(prop, 'pfx'); - } else { - // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame' - return testPropsAll(prop, obj, elem); - } - }; - /*>>prefixed*/ - - - /*>>cssclasses*/ - // Remove "no-js" class from <html> element, if it exists: - docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') + - - // Add the new classes to the <html> element. - (enableClasses ? ' js ' + classes.join(' ') : ''); - /*>>cssclasses*/ - - return Modernizr; - -})(this, this.document); diff --git a/dashboard/lib/select2/select2.css b/dashboard/lib/select2/select2.css deleted file mode 100644 index d365213c..00000000 --- a/dashboard/lib/select2/select2.css +++ /dev/null @@ -1,431 +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[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; } - .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; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; } - -.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__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 { - 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; } -.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: #f6f6f6; - border: 1px solid #aaa; - border-radius: 4px; - outline: 0; - background-image: -webkit-linear-gradient(top, #ffffff 50%, #eeeeee 100%); - background-image: -o-linear-gradient(top, #ffffff 50%, #eeeeee 100%); - background-image: linear-gradient(to bottom, #ffffff 50%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', 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='#eeeeee', endColorstr='#cccccc', 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, #ffffff 0%, #eeeeee 50%); - background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 50%); - background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 50%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', 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%, #ffffff 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, #ffffff 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, #ffffff 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', 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; } -.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/dashboard/lib/select2/select2.js b/dashboard/lib/select2/select2.js deleted file mode 100644 index fbaca5ed..00000000 --- a/dashboard/lib/select2/select2.js +++ /dev/null @@ -1,5403 +0,0 @@ -/*! - * Select2 4.0.0 - * 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.2.9 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) { - //Convert baseName to array, and lop off the last part, - //so that . matches that "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. - baseParts = baseParts.slice(0, baseParts.length - 1); - name = name.split('/'); - lastIndex = name.length - 1; - - // Node .js allowance: - if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { - name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); - } - - name = baseParts.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 - return req.apply(undef, aps.call(arguments, 0).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) { - - //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; - - this.listeners = this.listeners || {}; - - 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 = { - '\\': '\', - '&': '&', - '<': '<', - '>': '>', - '"': '"', - '\'': ''', - '/': '/' - }; - - // 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" class="select2-results__option"></li>' - ); - - var message = this.options.get('translations').get(params.message); - - $message.append( - escapeMarkup( - message(params.args) - ) - ); - - this.$results.append($message); - }; - - 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.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'); - } - }); - - 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'); - } - }); - }; - - 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(); - } - }); - - container.on('results:append', function (params) { - self.append(params.data); - - if (container.isOpen()) { - self.setClasses(); - } - }); - - container.on('query', function (params) { - self.showLoading(params); - }); - - container.on('select', function () { - if (!container.isOpen()) { - return; - } - - self.setClasses(); - }); - - container.on('unselect', function () { - if (!container.isOpen()) { - return; - } - - self.setClasses(); - }); - - 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 - - self.$results.scrollTop() + - 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); - - 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-autocomplete="list" 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.trigger('blur', 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._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('selection:update', function (params) { - self.update(params.data); - }); - }; - - SingleSelection.prototype.clear = function () { - this.$selection.find('.select2-selection__rendered').empty(); - }; - - SingleSelection.prototype.display = function (data) { - var template = this.options.get('templateSelection'); - var escapeMarkup = this.options.get('escapeMarkup'); - - return escapeMarkup(template(data)); - }; - - SingleSelection.prototype.selectionContainer = function () { - return $('<span></span>'); - }; - - SingleSelection.prototype.update = function (data) { - if (data.length === 0) { - this.clear(); - return; - } - - var selection = data[0]; - - var formatted = this.display(selection); - - var $rendered = this.$selection.find('.select2-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) { - 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) { - var template = this.options.get('templateSelection'); - var escapeMarkup = this.options.get('escapeMarkup'); - - return escapeMarkup(template(data)); - }; - - MultipleSelection.prototype.selectionContainer = function () { - var $container = $( - '<li class="select2-selection__choice">' + - '<span class="select2-selection__choice__remove" role="presentation">' + - '×' + - '</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 formatted = this.display(selection); - var $selection = this.selectionContainer(); - - $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">' + - '×' + - '</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" />' + - '</li>' - ); - - this.$searchContainer = $search; - this.$search = $search.find('input'); - - var $rendered = decorated.call(this); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('open', function () { - self.$search.attr('tabindex', 0); - - self.$search.focus(); - }); - - container.on('close', function () { - self.$search.attr('tabindex', -1); - - self.$search.val(''); - self.$search.focus(); - }); - - container.on('enable', function () { - self.$search.prop('disabled', false); - }); - - container.on('disable', function () { - self.$search.prop('disabled', true); - }); - - this.$selection.on('focusin', '.select2-search--inline', function (evt) { - self.trigger('focus', evt); - }); - - this.$selection.on('focusout', '.select2-search--inline', function (evt) { - self.trigger('blur', 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(); - } - } - }); - - // 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', '.select2-search--inline', function (evt) { - // Unbind the duplicated `keyup` event - self.$selection.off('keyup.search'); - }); - - this.$selection.on('keyup.search input', '.select2-search--inline', - function (evt) { - self.handleSearch(evt); - }); - }; - - Search.prototype.createPlaceholder = function (decorated, placeholder) { - this.$search.attr('placeholder', placeholder.text); - }; - - Search.prototype.update = function (decorated, data) { - this.$search.attr('placeholder', ''); - - decorated.call(this, data); - - this.$selection.find('.select2-selection__rendered') - .append(this.$searchContainer); - - this.resizeSearch(); - }; - - 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.trigger('open'); - - this.$search.val(item.text + ' '); - }; - - 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, {}, existingData, item); - - var $newOption = this.option(existingData); - - $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; - } - - ArrayAdapter.__super__.constructor.call(this, $element, options); - } - - Utils.Extend(AjaxAdapter, ArrayAdapter); - - AjaxAdapter.prototype._applyDefaults = function (options) { - var defaults = { - data: function (params) { - return { - 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(params); - } - - if (typeof options.data === 'function') { - options.data = options.data(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 () { - // TODO: Handle AJAX errors - }); - - self._request = $request; - } - - if (this.ajaxOptions.delay && params.term !== '') { - 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; - } - - 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 select (data) { - self.select(data); - } - - params.term = params.term || ''; - - var tokenData = this.tokenizer(params, this.options, select); - - 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); - - 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.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('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="option load-more" role="treeitem"></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.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 (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 (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 position = this.$container.position(); - 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 - }; - - 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 - 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 () { - this.$dropdownContainer.width(); - - var css = { - width: this.$container.outerWidth(false) + 'px' - }; - - if (this.options.get('dropdownAutoWidth')) { - css.minWidth = css.width; - 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 () { - self._handleSelectOnClose(); - }); - }; - - SelectOnClose.prototype._handleSelectOnClose = function () { - var $highlightedResults = this.getHighlightedResults(); - - if ($highlightedResults.length < 1) { - return; - } - - this.trigger('select', { - data: $highlightedResults.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'); - }; - - 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({}, 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 = '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._sync = Utils.bind(this._syncAttributes, this); - - if (this.$element[0].attachEvent) { - this.$element[0].attachEvent('onpropertychange', this._sync); - } - - var observer = window.MutationObserver || - window.WebKitMutationObserver || - window.MozMutationObserver - ; - - if (observer != null) { - this._observer = new observer(function (mutations) { - $.each(mutations, self._sync); - }); - this._observer.observe(this.$element[0], { - attributes: true, - subtree: false - }); - } else if (this.$element[0].addEventListener) { - this.$element[0].addEventListener('DOMAttrModified', self._sync, 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']; - - this.selection.on('toggle', function () { - self.toggleDropdown(); - }); - - 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('focus', function () { - self.$container.addClass('select2-container--focus'); - }); - - 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.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.ESC || key === KEYS.TAB) { - self.close(); - - evt.preventDefault(); - } - } else { - if (key === KEYS.ENTER || key === KEYS.SPACE || - ((key === KEYS.DOWN || key === KEYS.UP) && 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'); - } - }; - - /** - * 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 (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', {}); - - this.trigger('open'); - }; - - Select2.prototype.close = function () { - if (!this.isOpen()) { - return; - } - - this.trigger('close'); - }; - - Select2.prototype.isOpen = function () { - return this.$container.hasClass('select2-container--open'); - }; - - 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._sync); - } - - if (this._observer != null) { - this._observer.disconnect(); - this._observer = null; - } else if (this.$element[0].removeEventListener) { - this.$element[0] - .removeEventListener('DOMAttrModified', this._sync, false); - } - - this._sync = 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.select2',[ - 'jquery', - 'require', - - './select2/core', - './select2/defaults' -], function ($, require, Select2, Defaults) { - // Force jQuery.mousewheel to be loaded if it hasn't already - require('jquery.mousewheel'); - - 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({}, options, true); - - var instance = new Select2($(this), instanceOptions); - }); - - return this; - } else if (typeof options === 'string') { - 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.' - ); - } - - var args = Array.prototype.slice.call(arguments, 1); - - var ret = instance[options](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; -}); - -S2.define('jquery.mousewheel',[ - 'jquery' -], function ($) { - // Used to shim jQuery.mousewheel for non-full builds. - return $; -}); - - // 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/dashboard/skins/bootstrap.min.css b/dashboard/skins/bootstrap.min.css deleted file mode 100644 index d65c66b1..00000000 --- a/dashboard/skins/bootstrap.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro: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"}.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"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.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}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.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}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.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,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.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,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.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-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-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:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/dashboard/skins/css/github-activity.css b/dashboard/skins/css/github-activity.css deleted file mode 100644 index b1a119a7..00000000 --- a/dashboard/skins/css/github-activity.css +++ /dev/null @@ -1,276 +0,0 @@ -.gha-feed { - width: 100%; - height: 100%; - background: #fff; - font-weight: bold; - font-size: 14px; - font-family: Helvetica, arial, freesans, clean, sans-serif; - line-height: 1.3; - overflow-y: auto; - border: 1px solid #ddd; -} - -.gha-feed, .gha-feed h2, .gha-feed h3, .gha-feed p, .gha-feed ul, .gha-feed li { - margin: 0; - padding: 0; -} - -.gha-feed ul { - list-style-type: none; - padding: 0; - margin: 0; -} - -.gha-feed li { - list-style-type: none; - line-height: 1.4; -} - -.gha-feed small{ - color: #666; - font-weight: normal; - font-size: 13px; -} - -.gha-feed small a { - font-weight: normal; -} - -.gha-feed small a .more-commits { font-size: 11px; } - -span.gha-time { - color: #bbb; - font-weight: normal; - font-size: 12px; -} - -.gha-feed a { - color: #4183c4; - text-decoration: none; - font-weight: bold; -} - -.gha-feed a:hover { - text-decoration: underline; -} - -.gha-feed pre { - padding: 0; - border: 0; - border-radius: 0; - box-shadow: 1px 1px 4px #bbb; - color: white; -} - -.gha-header { - position: absolute; - top: 1px; - left: 1px; - width: calc(100% - 20px); - padding: 10px; - height: 67px; - border-bottom: 1px solid #ddd; - background: #ffffff; /* Old browsers */ - background: -moz-linear-gradient(top, #ffffff 0%, #f4f4f4 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f4f4f4)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #ffffff 0%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #ffffff 0%,#f4f4f4 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #ffffff 0%,#f4f4f4 100%); /* IE10+ */ - background: linear-gradient(to bottom, #ffffff 0%,#f4f4f4 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */ -} - -.gha-footer { - position: absolute; - bottom: -1px; - left: 1px; - padding: 5px; - border-top: 1px solid #ddd; - height: 16px; - width: calc(100% - 15px); - background: #ffffff; /* Old browsers */ - background: -moz-linear-gradient(top, #ffffff 0%, #f4f4f4 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f4f4f4)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #ffffff 0%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #ffffff 0%,#f4f4f4 100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #ffffff 0%,#f4f4f4 100%); /* IE10+ */ - background: linear-gradient(to bottom, #ffffff 0%,#f4f4f4 100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */ - color: #495961; - font-size: 13px; - padding-left: 10px; -} - -.gha-footer a { - float: right; - color: #495961; - padding-right: 20px; - font-size: 13px; - font-weight: bold; -} - -.gha-footer a:hover { text-decoration: none; } -.gha-header a:hover { text-decoration: none; } - -.gha-github-icon { - display: inline; - float: left; - padding: 9px 0 0; - width: 35px; - height: 35px; - color: #495961; -} - -.gha-github-icon .octicon { - font: normal normal 40px octicons; -} - -.gha-gravatar { - display: inline; - float: right; - margin-right: 10px; - padding-right: 20px; - max-width: 60px; - height: 67px; -} - -.gha-gravatar img { - padding: 3px; - width: 100%; - border: 1px solid #ddd; - box-shadow: 1px 1px 3px #ccc; -} - -.gha-activity { - clear: both; - padding: 10px 0; - width: 100%; - border-bottom: 1px solid #ddd; -} - - -.gha-activity.gha-small { - margin-top: 5px; - font-weight: normal; - font-size: 13px; -} - -.gha-activity.gha-small a { - font-weight: normal; -} - -.gha-activity.gha-small .gha-message { - float: left; - width: auto; - margin-right: 5px; - margin-top: 5px; -} - -.gha-activity.gha-small span { - font-size: 16px; -} - -.gha-activity.gha-small .gha-time { - float: left; - margin-top: 6px; -} - -.gha-activity:last-child { - padding-bottom: 100px; -} - -.gha-repo { - clear: both; - padding: 10px 0; - width: 100%; - border-bottom: 1px solid #ddd; -} - -.gha-activity-icon .octicon{ - display: inline; - float: left; - clear: both; - margin: 6px auto; - width: 50px; - color: #bbb; - text-align: center; - font: normal normal 30px octicons; -} - -.gha-activity-icon .gha-small { - font-size: 16px; -} - -.gha-message { - display: inline-block; - float: left; - width: calc(100% - 50px); -} - -.gha-message-commits { font-size: 11px; } - -.gha-message-merge { - padding: 3px 7px; - border-radius: 3px; - background: #e8f1f6; - color: rgba(0,0,0,0.5); - font-size: 12px; - line-height: 2.0; -} - -.gha-sha { - font-size: 12px; - font-family: Consolas, "Liberation Mono", Courier, monospace; -} - -.gha-gravatar-small { - float: left; - margin-right: 6px; - width: 30px; -} - -.gha-gravatar-commit { - margin-bottom: -3px; - border-radius: 2px; -} - -.gha-gravatar-user { float: left; } - -.gha-user-info { - display: inline-block; - float: left; - margin: 0 auto; - padding: 6px 10px 5px; - color: #495961; - font-size: 20px; -} - -.gha-user-info a { color: #495961; } -.gha-user-info p a { font-weight: 100; } - -.gha-without-name { - padding-top: 20px; - padding-left: 15px; -} - -.gha-info { - margin: 15px; - padding: 10px; - border: 1px solid #e4e4c6; - border-radius: 4px; - background: #ffffde; - color: #6d6d4b; - font-weight: normal; - font-size: 13px; -} - -.gha-time { - color: #bbb; - font-weight: normal; - font-size: 12px; -} - -.gha-clear { clear: both; } -.gha-muted { color: #666; } -.gha-push { height: 87px; } -.gha-push-small { height: 26px; } diff --git a/dashboard/skins/css/quick.css b/dashboard/skins/css/quick.css deleted file mode 100644 index a5acdfac..00000000 --- a/dashboard/skins/css/quick.css +++ /dev/null @@ -1,15098 +0,0 @@ -/*! - * Quick Box UI - * Last compiled on Friday, July 22nd, 2016 - */ - -@import url(//fonts.googleapis.com/css?family=Open+Sans:400,400italic,600,600italic,700,700italic,300italic,300); -/*!@import url(https://fonts.googleapis.com/css?family=Raleway:400,100,200,300,500,600,700,800);*/ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -mark { - background: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - box-sizing: content-box; - height: 0; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-appearance: textfield; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; - 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) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.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; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before, -.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"; -} -.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"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - background-color: #d8dce3; - color: #696c74; - font-family: Open Sans; - font-size: 16px; - font-weight: 400; - line-height: 1.42857; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #259dab; - text-decoration: none; -} -a:hover, -a:focus { - color: #505b72; - text-decoration: none; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 2px; -} -.img-thumbnail { - padding: 4px; - line-height: 1.42857143; - background-color: #d8dce3; - border: 1px solid #dddddd; - border-radius: 2px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 17px; - margin-bottom: 17px; - border: 0; - border-top: 1px solid #eeeeee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - 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; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: bold; - line-height: 1.1; - color: #262b36; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 17px; - margin-bottom: 8.5px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 8.5px; - margin-bottom: 8.5px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 31px; -} -h2, -.h2 { - font-size: 25px; -} -h3, -.h3 { - font-size: 21px; -} -h4, -.h4 { - font-size: 15px; -} -h5, -.h5 { - font-size: 12px; -} -h6, -.h6 { - font-size: 11px; -} -p { - margin: 0 0 8.5px; -} -.lead { - margin-bottom: 17px; - font-size: 13px; - font-weight: 300; - line-height: 1.4; -} -.fs10 { - font-size: 10px; -} -.fs12 { - font-size: 12px; -} -.fs14 { - font-size: 14px; -} -.fs16 { - font-size: 16px; -} -.fs18 { - font-size: 18px; -} -.fs21 { - font-size: 21px; -} -.fs24 { - font-size: 24px; -} -.fs26 { - font-size: 26px; -} -.fs28 { - font-size: 28px; -} -.fs32 { - font-size: 32px; -} -.fs36 { - font-size: 36px; -} -@media (min-width: 768px) { - .lead { - font-size: 18px; - } -} -small, -.small { - font-size: 70%; -} -mark, -.mark { - background-color: #fcf8e3; - padding: .2em; -} -.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; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #aaacb2; -} -.text-primary { - color: #2574ab; -} -a.text-primary:hover, -a.text-primary:focus { - color: #1c5881; -} -.text-success { - color: #4daf7c; -} -a.text-success:hover, -a.text-success:focus { - color: #137b15; -} -.text-info { - color: #3b83a6; -} -a.text-info:hover, -a.text-info:focus { - color: #2e6580; -} -.text-warning { - color: #9c732c; -} -a.text-warning:hover, -a.text-warning:focus { - color: #745621; -} -.text-danger { - color: #d9534f; -} -a.text-danger:hover, -a.text-danger:focus { - color: #c9302c; -} -.text-inverted { - color: #555; -} -a.text-inverted:hover, -a.text-inverted:focus { - color: #777; -} -.bg-primary { - color: #fff; - background-color: #2574ab; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #1c5881; -} -.bg-success { - background-color: #4daf7c; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 7.5px; - margin: 34px 0 17px; - border-bottom: 1px solid #eeeeee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 8.5px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} -.list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-top: 0; - margin-bottom: 17px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 8.5px 17px; - margin: 0 0 17px; - font-size: 15px; - border-left: 5px solid #eeeeee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; - text-align: right; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 17px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 2px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #ffffff; - background-color: #333333; - border-radius: 2px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; -} -pre { - background-color: transparent; - border: 0 solid #cccccc; - border-radius: 0; - color: #333; - display: inline-block; - font-size: 12px; - line-height: 1.42857; - margin: 0; - padding: 0; - position: relative; - word-break: break-all; - word-wrap: break-word; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - margin-right: auto; - margin-left: auto; - padding-left: 10px; - padding-right: 10px; -} -@media (min-width: 768px) { - .container { - width: 740px; - } -} -@media (min-width: 992px) { - .container { - width: 960px; - } -} -@media (min-width: 1650px) { - .container { - width: 1160px; - } -} -.container-fluid { - margin-right: auto; - margin-left: auto; - padding-left: 10px; - padding-right: 10px; -} -.row { - margin-left: -10px; - margin-right: -10px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 10px; - padding-right: 10px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0%; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 1650px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0%; - } -} -table { - background-color: #f0f1f4; -} -caption { - padding-top: 10px 15px; - padding-bottom: 10px 15px; - color: #aaacb2; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 17px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 10px 15px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ffffff; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ffffff; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ffffff; -} -.table .table { - background-color: #d8dce3; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ffffff; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ffffff; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #fcfcfd; -} -.table-hover > tbody > tr:hover { - background-color: #e7e9ee; -} -table col[class*="col-"] { - position: static; - float: none; - display: table-column; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #e7e9ee; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #d8dce3; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #4daf7c; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - overflow-x: auto; - min-height: 0.01%; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 12.75px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ffffff; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 17px; - font-size: 18px; - line-height: inherit; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 11px; - font-size: 12px; - line-height: 1.42857143; - color: #262b36; -} -.form-control { - display: block; - width: 100%; - height: 38px; - padding: 10px 12px; - font-size: 12px; - line-height: 1.42857143; - color: #262b36; - background-color: #fcfcfd; - background-image: none; - border: 1px solid #bdc3d1; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); -} -.form-control::-moz-placeholder { - color: #9fa8bc; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #9fa8bc; -} -.form-control::-webkit-input-placeholder { - color: #9fa8bc; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #e7e9ee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 38px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 32px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 42px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 17px; - 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; -} -.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; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 11px; - padding-bottom: 11px; - margin-bottom: 0; - min-height: 29px; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-left: 0; - padding-right: 0; -} -/*.input-sm { - height: 32px; - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -}*/ -.input-sm { - border-radius: 2px; - font-size: 11px !important; - height: 24px !important; - line-height: 1.1; - padding: 2px 8px !important; -} -select.input-sm { - height: 32px; - line-height: 32px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 32px; - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} -.form-group-sm select.form-control { - height: 32px; - line-height: 32px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 32px; - min-height: 28px; - padding: 6px 8px; - font-size: 11px; - line-height: 1.5; -} -.input-lg { - height: 42px; - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; - border-radius: 2px; -} -select.input-lg { - height: 42px; - line-height: 42px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 42px; - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; - border-radius: 2px; -} -.form-group-lg select.form-control { - height: 42px; - line-height: 42px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 42px; - min-height: 33px; - padding: 12px 14px; - font-size: 16px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 47.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 38px; - height: 38px; - line-height: 38px; - 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: 42px; - height: 42px; - line-height: 42px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 32px; - height: 32px; - line-height: 32px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #4daf7c; -} -.has-success .form-control { - border-color: #4daf7c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #137b15; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #45e247; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #45e247; -} -.has-success .input-group-addon { - color: #4daf7c; - border-color: #4daf7c; - background-color: #4daf7c; -} -.has-success .form-control-feedback { - color: #4daf7c; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #9c732c; -} -.has-warning .form-control { - border-color: #9c732c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #745621; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d1a75d; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d1a75d; -} -.has-warning .input-group-addon { - color: #9c732c; - border-color: #9c732c; - background-color: #fcf8e3; -} -.has-warning .form-control-feedback { - color: #9c732c; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #d9534f; -} -.has-error .form-control { - border-color: #d9534f; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #c9302c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #eba5a3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #eba5a3; -} -.has-error .input-group-addon { - color: #d9534f; - border-color: #d9534f; - background-color: #f2dede; -} -.has-error .form-control-feedback { - color: #d9534f; -} -.has-feedback label ~ .form-control-feedback { - top: 22px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #aaacb2; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 11px; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 28px; -} -.form-horizontal .form-group { - margin-left: -10px; - margin-right: -10px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 11px; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 10px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 15.6666663px; - font-size: 16px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 11px; - } -} -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 10px 12px; - font-size: 12px; - line-height: 1.42857143; - border-radius: 2px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #696c74; - text-decoration: none; -} -.btn:active, -.btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #696c74; - background-color: #ffffff; - border-color: #bdc3d1; -} -.btn-default:focus, -.btn-default.focus { - color: #696c74; - background-color: #e6e6e6; - border-color: #727f9c; -} -.btn-default:hover { - color: #696c74; - background-color: #e6e6e6; - border-color: #99a3b7; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #696c74; - background-color: #e6e6e6; - border-color: #99a3b7; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #696c74; - background-color: #d4d4d4; - border-color: #727f9c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #ffffff; - border-color: #bdc3d1; -} -.btn-default .badge { - color: #ffffff; - background-color: #696c74; -} -.btn-primary { - color: #ffffff; - background-color: #2574ab; - border-color: transparent; -} -.btn-primary:focus, -.btn-primary.focus { - color: #ffffff; - background-color: #1c5881; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:hover { - color: #ffffff; - background-color: #1c5881; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #1c5881; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #ffffff; - background-color: #164464; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #2574ab; - border-color: transparent; -} -.btn-primary .badge { - color: #2574ab; - background-color: #ffffff; -} -.btn-success { - color: #ffffff; - background-color: #4daf7c; - border-color: transparent; -} -.btn-success:focus, -.btn-success.focus { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:hover { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #259dab; - border-color: transparent; -} -.btn-success .badge { - color: #4daf7c; - background-color: #ffffff; -} -.btn-info { - color: #ffffff; - background-color: #5bc0de; - border-color: transparent; -} -.btn-info:focus, -.btn-info.focus { - color: #ffffff; - background-color: #31b0d5; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:hover { - color: #ffffff; - background-color: #31b0d5; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #31b0d5; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #ffffff; - background-color: #269abc; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: transparent; -} -.btn-info .badge { - color: #5bc0de; - background-color: #ffffff; -} -.btn-warning { - color: #ffffff; - background-color: #e6ad5c; - border-color: transparent; -} -.btn-warning:focus, -.btn-warning.focus { - color: #ffffff; - background-color: #df9730; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:hover { - color: #ffffff; - background-color: #df9730; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #df9730; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #ffffff; - background-color: #cc851f; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #e6ad5c; - border-color: transparent; -} -.btn-warning .badge { - color: #e6ad5c; - background-color: #ffffff; -} -.btn-danger { - color: #ffffff; - background-color: #d9534f; - border-color: transparent; -} -.btn-danger:focus, -.btn-danger.focus { - color: #ffffff; - background-color: #c9302c; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:hover { - color: #ffffff; - background-color: #c9302c; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #c9302c; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #ffffff; - background-color: #ac2925; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: transparent; -} -.btn-danger .badge { - color: #d9534f; - background-color: #ffffff; -} -.btn-link { - color: #259dab; - font-weight: normal; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #505b72; - text-decoration: none; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; - border-radius: 2px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 3px 5px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 12px; - text-align: left; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 2px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 7.5px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - text-decoration: none; - color: #262626; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #ffffff; - text-decoration: none; - outline: 0; - background-color: #2574ab; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - left: auto; - right: 0; -} -.dropdown-menu-left { - left: 0; - right: auto; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 11px; - line-height: 1.42857143; - color: #777777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.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, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 2px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-bottom-left-radius: 2px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.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, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - float: none; - display: table-cell; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 42px; - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; - border-radius: 2px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 42px; - line-height: 42px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 32px; - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 32px; - line-height: 32px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 10px 12px; - font-size: 12px; - font-weight: normal; - line-height: 1; - color: #262b36; - text-align: center; - background-color: #f6f7f8; - border: 1px solid #bdc3d1; - border-radius: 2px; -} -.input-group-addon.input-sm { - padding: 5px 8px; - font-size: 11px; - border-radius: 2px; -} -.input-group-addon.input-lg { - padding: 11px 14px; - font-size: 16px; - border-radius: 2px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.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 { - border-bottom-right-radius: 0; - border-top-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 { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 14px 25px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.nav > li.disabled > a { - color: #777777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777777; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eeeeee; - border-color: #259dab; -} -.nav .nav-divider { - height: 1px; - margin: 7.5px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #dddddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 2px 2px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #dddddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555555; - background-color: #d8dce3; - border: 1px solid #dddddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav.nav-tabs.nav-justified li { - padding: 0; -} -.nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 2px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 2px 2px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #d8dce3; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 2px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #2574ab; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 2px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 2px 2px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #d8dce3; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 17px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 2px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - overflow-x: visible; - padding-right: 10px; - padding-left: 10px; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -10px; - margin-left: -10px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - padding: 16.5px 10px; - font-size: 16px; - line-height: 17px; - height: 50px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -10px; - } -} -.navbar-toggle { - position: relative; - float: right; - margin-right: 10px; - padding: 9px 10px; - margin-top: 8px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 2px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 8.25px -10px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 17px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 17px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 16.5px; - padding-bottom: 16.5px; - } -} -.navbar-form { - margin-left: -10px; - margin-right: -10px; - padding: 10px 10px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 6px; - margin-bottom: 6px; -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-right-radius: 2px; - border-top-left-radius: 2px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 6px; - margin-bottom: 6px; -} -.navbar-btn.btn-sm { - margin-top: 9px; - margin-bottom: 9px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 16.5px; - margin-bottom: 16.5px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-left: 10px; - margin-right: 10px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -10px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777777; -} -.navbar-default .navbar-nav > li > a { - color: #777777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #dddddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #dddddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - background-color: #e7e7e7; - color: #555555; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777777; -} -.navbar-default .navbar-link:hover { - color: #333333; -} -.navbar-default .btn-link { - color: #777777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; -} -.navbar-inverse { - background-color: #222222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #ffffff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #ffffff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - background-color: #080808; - color: #ffffff; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #ffffff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #ffffff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 17px; - list-style: none; - background-color: #f5f5f5; - border-radius: 2px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - content: "/\00a0"; - padding: 0 5px; - color: #cccccc; -} -.breadcrumb > .active { - color: #777777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 17px 0; - border-radius: 2px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 10px 12px; - /*line-height: 1.42857143;*/ - line-height: 14px; - text-decoration: none; - color: #505b72; - background-color: #d8dce3; - border: 1px solid transparent; - margin-left: -1px; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 3; - color: #505b72; - background-color: #bac1ce; - border-color: transparent; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #ffffff; - background-color: #259dab; - border-color: transparent; - cursor: default; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #b8b9be; - background-color: #f6f7f8; - border-color: transparent; - cursor: not-allowed; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.pager { - padding-left: 0; - margin: 17px 0; - list-style: none; - text-align: center; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #d8dce3; - border: 1px solid transparent; - border-radius: 2px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #bac1ce; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #9fa8bc; - background-color: #d8dce3; - cursor: not-allowed; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #2574ab; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #1c5881; -} -.label-success { - background-color: #4daf7c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #03a678; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #e6ad5c; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #df9730; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 11px; - font-weight: normal; - color: #ffffff; - line-height: 1; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: #777777; - border-radius: 10px; -} -.badge-info { - background-color: #777777; - border-radius: 50%; - color: #ffffff; - display: inline-block; - font-size: 11px; - font-weight: normal; - height: 15px; - line-height: 5px; - min-width: 5px; - padding: 5px; - text-align: center; - vertical-align: middle; - white-space: nowrap; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #259dab; - background-color: #ffffff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eeeeee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 18px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 2px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-left: 60px; - padding-right: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 54px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 17px; - line-height: 1.42857143; - background-color: #d8dce3; - border: 1px solid #dddddd; - border-radius: 2px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-left: auto; - margin-right: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #259dab; -} -.thumbnail .caption { - padding: 9px; - color: #696c74; -} -.alert { - border: 1px solid transparent; - border-radius: 0; - font-size: 12px; - margin-bottom: 0; - padding: 7px; - text-align: left; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-default { - background-color: #e4e7ec; - border-color: transparent; - color: #0e4e64; -} -.alert-default hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-default .alert-link { - color: #082b37; -} -.alert-success { - background-color: #9ed566; - border-color: transparent; - color: #456b1d; -} -.alert-success hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-success .alert-link { - color: #2b4312; -} -.alert-info { - background-color: #56c2e8; - border-color: transparent; - color: #0e4e64; -} -.alert-info hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-info .alert-link { - color: #082b37; -} -.alert-warning { - background-color: #fdcc51; - border-color: transparent; - color: #815c01; -} -.alert-warning hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-warning .alert-link { - color: #4e3801; -} -.alert-danger { - background-color: #e55869; - border-color: transparent; - color: #ffffff; -} -.alert-danger hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-danger .alert-link { - color: #e6e6e6; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 17px; - margin-bottom: 17px; - background-color: #e7e9ee; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 11px; - line-height: 17px; - color: #ffffff; - text-align: center; - background-color: #2574ab; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #4daf7c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #e6ad5c; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - zoom: 1; - overflow: hidden; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.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; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - margin-bottom: 20px; - padding-left: 0; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: transparent; - border: 0px solid #dddddd; -} -.list-group-item:first-child { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -a.list-group-item, -button.list-group-item { - color: #555555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - text-decoration: none; - color: #555555; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - background-color: #eeeeee; - color: #777777; - cursor: not-allowed; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #ffffff; - background-color: #2574ab; - border-color: #2574ab; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #aed4ee; -} -.list-group-item-success { - color: #1aa71c; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #1aa71c; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #1aa71c; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #1aa71c; - border-color: #1aa71c; -} -.list-group-item-info { - color: #3b83a6; - background-color: #d9edf7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #3b83a6; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #3b83a6; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #3b83a6; - border-color: #3b83a6; -} -.list-group-item-warning { - color: #9c732c; - background-color: #fcf8e3; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #9c732c; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #9c732c; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #9c732c; - border-color: #9c732c; -} -.list-group-item-danger { - color: #d9534f; - background-color: #f2dede; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #d9534f; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #d9534f; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #d9534f; - border-color: #d9534f; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 17px; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 2px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 20px; -} -.panel-heading { - padding: 20px; - border-bottom: 1px solid transparent; - border-top-right-radius: 1px; - border-top-left-radius: 1px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 14px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 5px; - background-color: #f5f5f5; - border-top: 1px solid #dddddd; - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-right-radius: 1px; - border-top-left-radius: 1px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-left: 20px; - padding-right: 20px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: 1px; - border-top-left-radius: 1px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 1px; - border-top-right-radius: 1px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 1px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 1px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: 1px; - border-bottom-right-radius: 1px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 1px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 1px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ffffff; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - border: 0; - margin-bottom: 0; -} -.panel-group { - margin-bottom: 17px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 2px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #dddddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #dddddd; -} -.panel-default { - border-color: #d2d6df; -} -.panel-default > .panel-heading { - color: #444; - background-color: #f1f1f1; - border-color: #cfd9db; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #cfd9db; -} -.panel-default > .panel-heading .badge { - color: #9fa8bc; - background-color: #f5f5f5; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #cfd9db; -} -.panel-primary { - border-color: #2574ab; -} -.panel-primary > .panel-heading { - color: #ffffff; - background-color: #2574ab; - border-color: #2574ab; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #2574ab; -} -.panel-primary > .panel-heading .badge { - color: #2574ab; - background-color: #ffffff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #2574ab; -} -.panel-success { - border-color: #4daf7c; -} -.panel-success > .panel-heading { - color: #1aa71c; - background-color: #4daf7c; - border-color: #4daf7c; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #4daf7c; -} -.panel-success > .panel-heading .badge { - color: #259dab; - background-color: #4daf7c; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #4daf7c; -} -.panel-info { - border-color: #31b0d5; -} -.panel-info > .panel-heading { - color: #3b83a6; - background-color: #5bc0de; - border-color: #31b0d5; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #31b0d5; -} -.panel-info > .panel-heading .badge { - color: #5bc0de; - background-color: #3b83a6; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #31b0d5; -} -.panel-warning { - border-color: #df9730; -} -.panel-warning > .panel-heading { - color: #9c732c; - background-color: #e6ad5c; - border-color: #df9730; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #df9730; -} -.panel-warning > .panel-heading .badge { - color: #e6ad5c; - background-color: #9c732c; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #df9730; -} -.panel-danger { - border-color: #c9302c; -} -.panel-danger > .panel-heading { - color: #d9534f; - background-color: #d9534f; - border-color: #c9302c; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #c9302c; -} -.panel-danger > .panel-heading .badge { - color: #d9534f; - background-color: #d9534f; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #c9302c; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #d8dce3; - border: 1px solid #c3c9d4; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 2px; -} -.well-sm { - padding: 9px; - border-radius: 2px; -} -.close { - float: right; - font-size: 18px; - font-weight: bold; - line-height: 1; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #ffffff; - border: 1px solid #999999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 4px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; - outline: 0; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; - min-height: 16.42857143px; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - font-size: 14px; - font-weight: 300; - padding: 15px; - position: relative; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 350px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 11px; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - background-color: #000000; - border-radius: 2px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 12px; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 2px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 12px; - background-color: #ffffff; - border-bottom: 1px solid #f2f2f2; - border-radius: 1px 1px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top > .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top > .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #ffffff; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #ffffff; -} -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom > .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #ffffff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #ffffff; - bottom: -10px; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -moz-transition: -moz-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - -moz-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - left: 0; - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - left: 0; - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control:hover, -.carousel-control:focus { - outline: 0; - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.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; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #ffffff; - border-radius: 10px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); -} -.carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #ffffff; -} -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - content: " "; - display: table; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.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: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1650px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1650px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1650px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1650px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1650px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/***** ALERTS *****/ -.alert .close { - margin-top: -2px; -} -.alert-success .alert-link { - color: #3f631b; -} -.alert-success .alert-link:hover, -.alert-success .alert-link:focus { - color: #304b15; -} -.alert-info .alert-link { - color: #0c475b; -} -.alert-info .alert-link:hover, -.alert-info .alert-link:focus { - color: #093240; -} -.alert-warning .alert-link { - color: #765501; -} -.alert-warning .alert-link:hover, -.alert-warning .alert-link:focus { - color: #583f01; -} -.alert-danger .alert-link { - color: #fafafa; -} -.alert-danger .alert-link:hover, -.alert-danger .alert-link:focus { - color: #ebebeb; -} -/***** BUTTONS *****/ -.btn { - padding: 10px 12px 9px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: none; -} -.btn-default { - color: #696c74; - background-color: #ffffff; - border-color: #bdc3d1; -} -.btn-default:focus, -.btn-default.focus { - color: #696c74; - background-color: #ededed; - border-color: #818da7; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default:hover { - color: #696c74; - background-color: #f2f2f2; - border-color: #a8b0c2; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #696c74; - background-color: #ededed; - border-color: #a8b0c2; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #696c74; - background-color: #ededed; - border-color: #9fa8bc; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #ffffff; - border-color: #bdc3d1; -} -.btn-default .badge { - color: #ffffff; - background-color: #696c74; -} -.btn-primary { - color: #ffffff; - background-color: #2574ab; - border-color: transparent; -} -.btn-primary:focus, -.btn-primary.focus { - color: #ffffff; - background-color: #1f608e; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-primary:hover { - color: #ffffff; - background-color: #206696; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #1f608e; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #ffffff; - background-color: #1f608e; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #2574ab; - border-color: transparent; -} -.btn-primary .badge { - color: #2574ab; - background-color: #ffffff; -} -.btn-success { - color: #ffffff; - background-color: #4daf7c; - border-color: transparent; -} -.btn-success:focus, -.btn-success.focus { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-success:hover { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #4daf7c; - border-color: transparent; -} -.btn-success .badge { - color: #4daf7c; - background-color: #ffffff; -} -.btn-warning { - color: #ffffff; - background-color: #e6ad5c; - border-color: transparent; -} -.btn-warning:focus, -.btn-warning.focus { - color: #ffffff; - background-color: #e19d3d; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-warning:hover { - color: #ffffff; - background-color: #e3a246; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #e19d3d; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #ffffff; - background-color: #e19d3d; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #e6ad5c; - border-color: transparent; -} -.btn-warning .badge { - color: #e6ad5c; - background-color: #ffffff; -} -.btn-danger { - color: #ffffff; - background-color: #d9534f; - border-color: transparent; -} -.btn-danger:focus, -.btn-danger.focus { - color: #ffffff; - background-color: #d33632; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-danger:hover { - color: #ffffff; - background-color: #d43f3a; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #d33632; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #ffffff; - background-color: #d33632; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: transparent; -} -.btn-danger .badge { - color: #d9534f; - background-color: #ffffff; -} -.btn-info { - color: #ffffff; - background-color: #5bc0de; - border-color: transparent; -} -.btn-info:focus, -.btn-info.focus { - color: #ffffff; - background-color: #3db5d8; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-info:hover { - color: #ffffff; - background-color: #46b8da; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #3db5d8; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #ffffff; - background-color: #3db5d8; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: transparent; -} -.btn-info .badge { - color: #5bc0de; - background-color: #ffffff; -} -.btn-inverse { - color: #ffffff; - background-color: #2a2a2a; - border-color: transparent; -} -.btn-inverse:focus, -.btn-inverse.focus { - color: #ffffff; - background-color: #222; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-inverse:hover { - color: #ffffff; - background-color: #222; - border-color: rgba(0, 0, 0, 0); -} -.btn-inverse:active, -.btn-inverse.active, -.open > .dropdown-toggle.btn-inverse { - color: #ffffff; - background-color: #222; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 11px 14px 10px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 8px 4px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 3px 5px 2px; -} -.input-group-btn .btn:not(.btn-lg), -.input-group-btn .btn:not(.btn-sm), -.input-group-btn .btn:not(.btn-xs) { - min-height: 38px; -} -/***** BUTTON GROUPS *****/ -.btn-group .btn:not(.btn-default) + .btn:not(.btn-default), -.btn-group .btn:not(.btn-default) + .btn-group, -.btn-group .btn-group + .btn:not(.btn-default), -.btn-group .btn-group + .btn-group { - margin-left: 0; - border-left: 1px solid rgba(255, 255, 255, 0.2); -} -.btn-group .btn:not(.btn-default) + .btn-group { - margin-left: -1px; -} -/***** DROPDOWN *****/ -.dropdown-menu { - padding: 5px; - -webkit-box-shadow: none; - box-shadow: none; -} -.dropdown-menu > li > a { - padding: 5px 7px; - border-radius: 2px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #bdc3d1; - color: #fff; -} -.dropdown-menu .divider { - margin: 5px 0; -} -.dm-icon > li > a > i { - display: inline-block; - margin-right: 5px; -} -/***** FORMS *****/ -.form-control { - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: none; - -o-transition: none; - transition: none; -} -.form-control:focus { - background-color: #fff; - border-color: #9fa8bc; - -webkit-box-shadow: none; - box-shadow: none; -} -.form-control[disabled], -.form-control[readonly] { - color: #9fa8bc; -} -.form-group { - margin-bottom: 20px; -} -.has-success .form-control, -.has-warning .form-control, -.has-error .form-control, -.has-success .form-control:focus, -.has-warning .form-control:focus, -.has-error .form-control:focus { - -webkit-box-shadow: none; - box-shadow: none; -} -/***** BADGES & LABELS *****/ -.badge { - font-size: 10px; - font-weight: 500; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} -.label { - font-weight: normal; -} -/***** MEDIA *****/ -.media-right, -.media > .pull-right { - padding-left: 20px; -} -.media-left, -.media > .pull-left { - padding-right: 20px; -} -/***** PAGINATION *****/ -.pagination > li > a, -.pagination > li > span { - font-weight: 700; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; - padding: 9px 14px; -} -.pagination > li + li > a, -.pagination > li + li > span { - margin-left: 1px; -} -.pagination-bordered > li + li > a, -.pagination-bordered > li + li > span { - margin-left: 5px; - border-radius: 2px; - background-color: transparent; - border-color: #dbdfe6; -} -.pagination-bordered > li + li > a:hover, -.pagination-bordered > li + li > span:hover, -.pagination-bordered > li + li > a:focus, -.pagination-bordered > li + li > span:focus { - background-color: #d8dce3; - border-color: #bdc3d1; -} -.pagination-bordered > .disabled > span, -.pagination-bordered > .disabled > span:hover, -.pagination-bordered > .disabled > span:focus, -.pagination-bordered > .disabled > a, -.pagination-bordered > .disabled > a:hover, -.pagination-bordered > .disabled > a:focus { - border-color: #dbdfe6; -} -.pager li { - text-transform: uppercase; - font-weight: 700; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -} -.pager li > a, -.pager li > span { - color: #3b4354; - padding: 9px 14px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -/***** PANELS *****/ -.panel { - border: 0; - border-radius: 2px; - margin-bottom: 20px; - background-color: #fff; - position: relative; - -webkit-box-shadow: none; - box-shadow: none; -} -.panel-heading { - margin-bottom: 0; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.panel-heading.min { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel-heading p { - margin: 7px 0 0; -} -.panel-heading + .panel-body { - padding-top: 0; -} -.panel-title { - text-transform: uppercase; - font-size: 18px; - font-weight: 400; - color: #313745; - letter-spacing: .2px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -} -.panel-body { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel-body p + p { - margin: 15px 0 0; -} -.panel-body .list-inline > li:first-child { - padding-left: 0; -} -.panel-body .list-inline > li:last-child { - padding-right: 0; -} -.panel-body.inverse { - background-color: #3b4354; - color: rgba(255, 255, 255, 0.8); -} -.panel-default > .panel-heading > p { - color: #696c74; -} -.panel-footer { - background-color: #f0f1f4; - border-color: transparent; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel-default .panel-options, -.panel-primary .panel-options, -.panel-success .panel-options, -.panel-warning .panel-options, -.panel-danger .panel-options, -.panel-info .panel-options, -.panel-inverse .panel-options { - top: 11px; -} -.panel-default .panel-heading, -.panel-primary .panel-heading, -.panel-success .panel-heading, -.panel-warning .panel-heading, -.panel-danger .panel-heading, -.panel-info .panel-heading, -.panel-inverse .panel-heading { - padding-top: 15px; - padding-bottom: 15px; - border-bottom: 0; -} -/*.panel-default .panel-heading .panel-title,*/ -.panel-primary .panel-heading .panel-title, -.panel-success .panel-heading .panel-title, -.panel-warning .panel-heading .panel-title, -.panel-danger .panel-heading .panel-title, -.panel-info .panel-heading .panel-title, -.panel-inverse .panel-heading .panel-title { - color: #fff; -} -.panel-default .panel-heading .panel-title { - color: #444; -} -.panel-default .panel-heading p, -.panel-primary .panel-heading p, -.panel-success .panel-heading p, -.panel-warning .panel-heading p, -.panel-danger .panel-heading p, -.panel-info .panel-heading p, -.panel-inverse .panel-heading p { - color: rgba(255, 255, 255, 0.8); -} -.panel-default .panel-body, -.panel-primary .panel-body, -.panel-success .panel-body, -.panel-warning .panel-body, -.panel-danger .panel-body, -.panel-info .panel-body, -.panel-inverse .panel-body { - padding-top: 20px; -} -.panel-group .panel { - border-radius: 0; -} -.panel-group .panel > .panel-heading { - padding: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.panel-group .panel > .panel-heading .panel-title { - font-size: 12px; -} -@media (max-width: 480px) { - .panel-group .panel > .panel-heading .panel-title { - line-height: 18px; - } -} -.panel-group .panel > .panel-heading .panel-title > a { - display: block; - position: relative; - padding: 18px 20px 15px; - color: #505b72; - color: #259dab; - background-color: #fff; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-group .panel > .panel-heading .panel-title > a:hover, -.panel-group .panel > .panel-heading .panel-title > a:focus { - color: #259dab; -} -.panel-group .panel > .panel-heading .panel-title > a:after { - content: '\f078'; - font-family: 'FontAwesome'; - font-size: 11px; - font-weight: normal; - color: #9fa8bc; - position: absolute; - top: 15px; - right: 20px; - display: none; -} -.panel-group .panel > .panel-heading .panel-title > a.collapsed { - padding: 15px 20px; - color: #505b72; -} -.panel-group .panel > .panel-heading .panel-title > a.collapsed:after { - content: '\f054'; - color: #fff; -} -.panel-group .panel > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel > .panel-heading .panel-title > a.collapsed:focus { - color: #262b36; -} -.panel-group .panel > .panel-heading + .panel-collapse > .panel-body { - border-top: 0; -} -.panel-group .panel + .panel { - margin-top: 0; - border-top: 1px solid #dbdfe6; -} -.panel-group .panel .panel-collapse.in > .panel-body, -.panel-group .panel .panel-collapse.collapsing > .panel-body { - padding-top: 0; -} -.panel-group .panel:first-child, -.panel-group .panel:first-child > .panel-heading .panel-title > a { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.panel-group .panel:last-child, -.panel-group .panel:last-child > .panel-heading .panel-title > a.collapsed { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-group .panel-default > .panel-heading .panel-title > a, -.panel-group .panel-primary > .panel-heading .panel-title > a, -.panel-group .panel-success > .panel-heading .panel-title > a, -.panel-group .panel-warning > .panel-heading .panel-title > a, -.panel-group .panel-danger > .panel-heading .panel-title > a, -.panel-group .panel-info > .panel-heading .panel-title > a, -.panel-group .panel-inverse > .panel-heading .panel-title > a { - margin-top: -1px; -} -.panel-group .panel-default > .panel-heading .panel-title > a:after, -.panel-group .panel-primary > .panel-heading .panel-title > a:after, -.panel-group .panel-success > .panel-heading .panel-title > a:after, -.panel-group .panel-warning > .panel-heading .panel-title > a:after, -.panel-group .panel-danger > .panel-heading .panel-title > a:after, -.panel-group .panel-info > .panel-heading .panel-title > a:after, -.panel-group .panel-inverse > .panel-heading .panel-title > a:after { - display: block; -} -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed { - color: rgba(255, 255, 255, 0.8); - margin-top: 0; -} -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed:focus { - color: #fff; -} -.panel-group .panel-default:first-child > .panel-heading, -.panel-group .panel-primary:first-child > .panel-heading, -.panel-group .panel-success:first-child > .panel-heading, -.panel-group .panel-warning:first-child > .panel-heading, -.panel-group .panel-danger:first-child > .panel-heading, -.panel-group .panel-info:first-child > .panel-heading, -.panel-group .panel-inverse:first-child > .panel-heading { - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel-group .panel-default:first-child > .panel-heading .panel-title > a, -.panel-group .panel-primary:first-child > .panel-heading .panel-title > a, -.panel-group .panel-success:first-child > .panel-heading .panel-title > a, -.panel-group .panel-warning:first-child > .panel-heading .panel-title > a, -.panel-group .panel-danger:first-child > .panel-heading .panel-title > a, -.panel-group .panel-info:first-child > .panel-heading .panel-title > a, -.panel-group .panel-inverse:first-child > .panel-heading .panel-title > a { - margin-top: 0; -} -.panel-group .panel-default:last-child > .panel-heading, -.panel-group .panel-primary:last-child > .panel-heading, -.panel-group .panel-success:last-child > .panel-heading, -.panel-group .panel-warning:last-child > .panel-heading, -.panel-group .panel-danger:last-child > .panel-heading, -.panel-group .panel-info:last-child > .panel-heading, -.panel-group .panel-inverse:last-child > .panel-heading, -.panel-group .panel-default:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-primary:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-success:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-warning:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-danger:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-info:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-inverse:last-child > .panel-heading .panel-title > a.collapsed { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-group .panel-default .panel-collapse.in > .panel-body, -.panel-group .panel-primary .panel-collapse.in > .panel-body, -.panel-group .panel-success .panel-collapse.in > .panel-body, -.panel-group .panel-warning .panel-collapse.in > .panel-body, -.panel-group .panel-danger .panel-collapse.in > .panel-body, -.panel-group .panel-info .panel-collapse.in > .panel-body, -.panel-group .panel-inverse .panel-collapse.in > .panel-body, -.panel-group .panel-default .panel-collapse.collapsing > .panel-body, -.panel-group .panel-primary .panel-collapse.collapsing > .panel-body, -.panel-group .panel-success .panel-collapse.collapsing > .panel-body, -.panel-group .panel-warning .panel-collapse.collapsing > .panel-body, -.panel-group .panel-danger .panel-collapse.collapsing > .panel-body, -.panel-group .panel-info .panel-collapse.collapsing > .panel-body, -.panel-group .panel-inverse .panel-collapse.collapsing > .panel-body { - padding-top: 0; - margin-bottom: -1px; -} -.panel-group .panel-default > .panel-heading { - background-color: transparent; -} -.panel-group .panel-default > .panel-heading .panel-title > a, -.panel-group .panel-default > .panel-heading .panel-title > a:hover, -.panel-group .panel-default > .panel-heading .panel-title > a:focus { - color: #9fa8bc; -} -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed { - background-color: #9fa8bc; -} -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed:focus { - background-color: #909bb1; -} -.panel-group .panel-default + .panel { - border-color: #b4bbca; -} -.panel-group .panel-default > .panel-heading .panel-title > a, -.panel-group .panel-default > .panel-heading .panel-title > a:hover, -.panel-group .panel-default > .panel-heading .panel-title > a:focus { - color: #3b4354; -} -.panel-group .panel-primary > .panel-heading { - background-color: transparent; -} -.panel-group .panel-primary > .panel-heading .panel-title > a, -.panel-group .panel-primary > .panel-heading .panel-title > a:hover, -.panel-group .panel-primary > .panel-heading .panel-title > a:focus { - color: #2574ab; -} -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed { - background-color: #2574ab; -} -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed:focus { - background-color: #206696; -} -.panel-group .panel-primary + .panel { - border-color: #2b88c8; -} -.panel-group .panel-success > .panel-heading { - background-color: transparent; -} -.panel-group .panel-success > .panel-heading .panel-title > a, -.panel-group .panel-success > .panel-heading .panel-title > a:hover, -.panel-group .panel-success > .panel-heading .panel-title > a:focus { - color: #4daf7c; -} -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed { - background-color: #4daf7c; -} -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed:focus { - background-color: #4daf7c; -} -.panel-group .panel-success + .panel { - border-color: #4daf7c; -} -.panel-group .panel-warning > .panel-heading { - background-color: transparent; -} -.panel-group .panel-warning > .panel-heading .panel-title > a, -.panel-group .panel-warning > .panel-heading .panel-title > a:hover, -.panel-group .panel-warning > .panel-heading .panel-title > a:focus { - color: #e6ad5c; -} -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed { - background-color: #e6ad5c; -} -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed:focus { - background-color: #e3a246; -} -.panel-group .panel-warning + .panel { - border-color: #ebbd7b; -} -.panel-group .panel-danger > .panel-heading { - background-color: transparent; -} -.panel-group .panel-danger > .panel-heading .panel-title > a, -.panel-group .panel-danger > .panel-heading .panel-title > a:hover, -.panel-group .panel-danger > .panel-heading .panel-title > a:focus { - color: #d9534f; -} -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed { - background-color: #d9534f; -} -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed:focus { - background-color: #d43f3a; -} -.panel-group .panel-danger + .panel { - border-color: #df706c; -} -.panel-group .panel-info > .panel-heading { - background-color: transparent; -} -.panel-group .panel-info > .panel-heading .panel-title > a, -.panel-group .panel-info > .panel-heading .panel-title > a:hover, -.panel-group .panel-info > .panel-heading .panel-title > a:focus { - color: #5bc0de; -} -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed { - background-color: #5bc0de; -} -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed:focus { - background-color: #46b8da; -} -.panel-group .panel-info + .panel { - border-color: #79cbe4; -} -.panel-group .panel-inverse > .panel-heading { - background-color: transparent; -} -.panel-group .panel-inverse > .panel-heading .panel-title > a, -.panel-group .panel-inverse > .panel-heading .panel-title > a:hover, -.panel-group .panel-inverse > .panel-heading .panel-title > a:focus { - color: #505b72; -} -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed { - background-color: #505b72; -} -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed:focus { - background-color: #464f63; -} -.panel-group .panel-inverse + .panel { - border-color: #5f6b87; -} -/***** PROGRESS BARS *****/ -.progress { - -webkit-box-shadow: none; - box-shadow: none; -} -.progress-bar { - -webkit-box-shadow: none; - box-shadow: none; -} -/***** POPOVER *****/ -.popover { - padding: 0; -} -.popover-title { - border-bottom: 0; - padding: 15px 15px 0; - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -} -.popover-content { - padding: 15px; - line-height: 20px; -} -/***** NAV *****/ -@media (max-width: 480px) { - .nav > li > a { - padding-left: 15px; - padding-right: 15px; - } -} -.nav-stacked > li { - font-weight: 500; -} -.nav-stacked > li.active > a, -.nav-stacked > li.active > a:hover, -.nav-stacked > li.active > a:focus { - background-color: #2f2f2f; -} -/***** NAVBAR *****/ -.navbar { - background-color: #fff; - border-radius: 2px; -} -.navbar-brand { - padding: 12px 12px; -} -.navbar-brand h3 { - margin: 0; - color: #259dab; -} -.navbar-nav > li > a { - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 700; - color: #818da7; - padding-left: 15px; - padding-right: 15px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -@media (min-width: 768px) { - .navbar-nav > li > a { - padding-left: 25px; - padding-right: 25px; - } -} -.navbar-nav > li > a:hover, -.navbar-nav > li > a:focus { - color: #505b72; - background-color: transparent; -} -.navbar-nav > li.active > a { - color: #259dab; -} -.navbar-inverse { - background-color: #262b36; - border-color: transparent; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: transparent; -} -.navbar-inverse .navbar-collapse { - -webkit-box-shadow: none; - box-shadow: none; -} -.navbar-inverse .navbar-toggle { - border-color: transparent; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: transparent; - color: #fff; -} -.navbar-inverse .navbar-nav > li > a { - color: #657390; -} -.navbar-inverse .navbar-nav > li.active > a, -.navbar-inverse .navbar-nav > li.active > a:hover, -.navbar-inverse .navbar-nav > li.active > a:focus { - color: #259dab; - background-color: transparent; -} -/***** TABS *****/ -.nav-tabs { - /*background-color: #9fa8bc;*/ - background-color: rgba(103, 128, 159, 0.8); - border-bottom: 0; - border-top-right-radius: 0px; - border-top-left-radius: 0px; -} -.nav-tabs > li { - margin: 0; -} -.nav-tabs > li > a { - /*color: rgba(255, 255, 255, 0.8);*/ - color: #fff !important; - text-transform: uppercase; - letter-spacing: .2px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 700; - font-size: 12px; - margin: 0; - border: 0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - color: #fff; - background-color: #909bb1; - border: 0; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - border: 0; - border-radius: 0; - background-color: #fff; - color: #5b6781 !important; -} -.nav-tabs > li.active:first-child > a { - border-top-left-radius: 0px; -} -.nav-tabs.nav-justified > li > a { - border: 0; -} -.nav-tabs.nav-justified > .active:last-child > a { - border-top-right-radius: 0px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 0; -} -.tab-pane { - /*padding: 20px;*/ - background-color: #fff; - border-bottom-right-radius: 0px; - border-bottom-left-radius: 0px; -} -/***** TABLES *****/ -.table { - border-collapse: separate; - border-radius: 2px; -} -.table > thead > tr > th, -.table > tfoot > tr > th { - padding-top: 11px; - padding-bottom: 11px; - vertical-align: bottom; - border-bottom: 0; - text-transform: uppercase; - letter-spacing: .5px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - background-color: #d8dce3; - color: #3b4354; - font-size: 12px; -} -.table > thead > tr:first-child { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.table > thead > tr:first-child > th:first-child { - border-top-left-radius: 0px; -} -.table > thead > tr:first-child > th:last-child { - border-top-right-radius: 0px; -} -.table > tfoot > tr:last-child { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.table > tfoot > tr:last-child > th:first-child { - border-bottom-left-radius: 2px; -} -.table > tfoot > tr:last-child > th:last-child { - border-bottom-right-radius: 2px; -} -.table > tbody > tr:last-child > th:first-child, -.table > tbody > tr:last-child > td:first-child { - border-bottom-left-radius: 2px; -} -.table > tbody > tr:last-child > th:last-child, -.table > tbody > tr:last-child > td:last-child { - border-bottom-right-radius: 2px; -} -.table > tfoot + tbody > tr:last-child > th:first-child, -.table > tfoot + tbody > tr:last-child > td:first-child { - border-bottom-left-radius: 0; -} -.table > tfoot + tbody > tr:last-child > th:last-child, -.table > tfoot + tbody > tr:last-child > td:last-child { - border-bottom-right-radius: 0; -} -.table > thead > tr > th .ckbox, -.table > tbody > tr > th .ckbox, -.table > tfoot > tr > th .ckbox, -.table > thead > tr > td .ckbox, -.table > tbody > tr > td .ckbox, -.table > tfoot > tr > td .ckbox { - margin: 0; - display: inline-block; -} -.table > thead > tr > th .ckbox span:before, -.table > tbody > tr > th .ckbox span:before, -.table > tfoot > tr > th .ckbox span:before, -.table > thead > tr > td .ckbox span:before, -.table > tbody > tr > td .ckbox span:before, -.table > tfoot > tr > td .ckbox span:before { - border-color: transparent; -} -.table > thead > tr > th .ckbox input, -.table > tbody > tr > th .ckbox input, -.table > tfoot > tr > th .ckbox input, -.table > thead > tr > td .ckbox input, -.table > tbody > tr > td .ckbox input, -.table > tfoot > tr > td .ckbox input { - margin-right: 0; -} -.table > thead > tr > th .ckbox input:checked + span:before, -.table > tbody > tr > th .ckbox input:checked + span:before, -.table > tfoot > tr > th .ckbox input:checked + span:before, -.table > thead > tr > td .ckbox input:checked + span:before, -.table > tbody > tr > td .ckbox input:checked + span:before, -.table > tfoot > tr > td .ckbox input:checked + span:before { - border-color: transparent; -} -.table > thead > tr > th .ckbox input:checked + span:after, -.table > tbody > tr > th .ckbox input:checked + span:after, -.table > tfoot > tr > th .ckbox input:checked + span:after, -.table > thead > tr > td .ckbox input:checked + span:after, -.table > tbody > tr > td .ckbox input:checked + span:after, -.table > tfoot > tr > td .ckbox input:checked + span:after { - display: block; -} -.table-bordered { - border: 0; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border-bottom: 0; - border-right: 0; -} -.table-bordered > thead > tr > th:first-child, -.table-bordered > tbody > tr > th:first-child, -.table-bordered > tfoot > tr > th:first-child, -.table-bordered > thead > tr > td:first-child, -.table-bordered > tbody > tr > td:first-child, -.table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.table-bordered > thead > tr:first-child > th { - border-top: 0; -} -/***** TYPE *****/ -.text-success { - color: #4daf7c; -} -a.text-success:hover, -a.text-success:focus { - color: #03a678; -} -.text-info { - color: #5bc0de; -} -a.text-info:hover, -a.text-info:focus { - color: #31b0d5; -} -.text-warning { - color: #e6ad5c; -} -a.text-warning:hover, -a.text-warning:focus { - color: #df9730; -} -.text-danger { - color: #d9534f !important; -} -a.text-danger:hover, -a.text-danger:focus { - color: #c9302c; -} -.well { - border: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.close { - font-weight: 500; -} -/***** MODAL *****/ -.modal { - z-index: 2050; -} -.modal.in .modal-dialog { - transform: translate(-50%, -50%); -} -.modal-dialog { - position: absolute; - top: 50%; - left: 50%; - margin: 0; - transform: translate(-50%, -50%); -} -/***** SELECT2 *****/ -.select2-results__option { - padding: 0px 8px; - border-radius: 2px; - margin-bottom: 1px; - font-size: 12px; -} -.select2-container--default .select2-selection--single { - background-color: #fcfcfd; - border-color: #bdc3d1; - border-radius: 2px; - height: 28px; - outline: none; -} -.select2-container--default .select2-selection--single .select2-selection__rendered { - color: #262b36; - line-height: 28px; - padding-left: 12px; -} -.select2-container--default .select2-selection--single .select2-selection__placeholder { - color: #9fa8bc; -} -.select2-container--default .select2-selection--single .select2-selection__arrow { - width: 30px; - height: 28px; - line-height: 28px; -} -.select2-container--default .select2-selection--multiple { - background-color: #fcfcfd; - border-color: #bdc3d1; - border-radius: 2px; - min-height: 28px; - outline: none; -} -.select2-container--default .select2-selection--multiple .select2-selection__rendered { - padding: 0 4px; -} -.select2-container--default .select2-selection--multiple .select2-selection__choice { - margin-top: 4px; - margin-right: 4px; - padding: 4px 10px 4px 5px; - border-color: transparent; - border-radius: 2px; - background-color: #259dab; - color: #fff; -} -.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - color: #fff; - margin-right: 6px; - opacity: .75; - font-size: 12px; -} -.select2-container--default.select2-container--focus .select2-selection--multiple { - border-color: #9fa8bc; -} -.select2-container--default .select2-search--dropdown .select2-search__field { - border-color: #9fa8bc; - border-radius: 2px; -} -.select2-container--default .select2-results__option[aria-selected="true"] { - background-color: #e7e9ee; -} -.select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: #259dab; -} -.select2-container--default .select2-results > .select2-results__options { - margin: 4px; -} -.select2-container--default .select2-search--inline .select2-search__field { - margin-top: 4px; - line-height: 25px; - padding-left: 7px; -} -.select2-container--default.select2-container--disabled .select2-selection--single { - background-color: #e7e9ee; -} -.select2-container--open .select2-selection--single, -.select2-container--open .select2-selection--multiple { - background-color: #fff; - border-color: #9fa8bc; -} -.select2-container--open .select2-dropdown--above { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.select2-container--open .select2-dropdown--below { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.select2-dropdown { - border-color: #9fa8bc; - z-index: 200; -} -.select2-search--dropdown { - padding-bottom: 0; -} -.has-error .select2-selection--single, -.has-error .select2-selection--multiple { - border-color: #d9534f; -} -/***** TOGGLES *****/ -.toggle-wrapper { - width: 100px; - display: inline-block; - margin-right: 5px; -} -.toggle-slide .toggle-on, -.toggle-slide .toggle-off, -.toggle-slide .toggle-slide .toggle-blob { - text-align: center; -} -.toggle-light .toggle-slide { - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-light .toggle-blob { - background-color: #fff; - background-image: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-light .toggle-blob:hover, -.toggle-light .toggle-blob:focus { - background-color: #fff; - background-image: none; -} -.toggle-light .toggle-on, -.toggle-light .toggle-off { - font-size: 11px; - font-weight: bold; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-light .toggle-on { - background-color: #d0d4e7; - text-indent: -5px !important; -} -.toggle-light .toggle-on + .toggle-blob { - border: 3px solid #d0d4e7; -} -.toggle-light .toggle-on.active { - background-color: #262b36; -} -.toggle-light .toggle-on.active + .toggle-blob { - border: 3px solid #262b36; -} -.toggle-light .toggle-off { - color: #fff; - background-color: #d0d4e7; - background-image: none; - text-indent: 5px !important; -} -.toggle-light.primary .toggle-on.active { - background-color: #2574ab; -} -.toggle-light.primary .toggle-on.active + .toggle-blob { - border: 3px solid #2574ab; -} -.toggle-light.success .toggle-on.active { - background-color: #03a678; -} -.toggle-light.success .toggle-on.active + .toggle-blob { - border: 3px solid #03a678; -} -.toggle-light.warning .toggle-on.active { - background-color: #e6ad5c; -} -.toggle-light.warning .toggle-on.active + .toggle-blob { - border: 3px solid #e6ad5c; -} -.toggle-light.danger .toggle-on.active { - background-color: #d9534f; -} -.toggle-light.danger .toggle-on.active + .toggle-blob { - border: 3px solid #d9534f; -} -.toggle-light.info .toggle-on.active { - background-color: #5bc0de; -} -.toggle-light.info .toggle-on.active + .toggle-blob { - border: 3px solid #5bc0de; -} -.toggle-modern .toggle-slide { - background: none; - text-shadow: none; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-modern .toggle-blob { - border-radius: 0px; - background-color: #fff; - background-image: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-modern .toggle-blob:hover, -.toggle-modern .toggle-blob:focus { - background-color: #fff; - background-image: none; -} -.toggle-modern .toggle-on, -.toggle-modern .toggle-off { - text-shadow: none; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-modern .toggle-on, -.toggle-modern .toggle-on.active { - background-color: #262b36; - background-image: none; -} -.toggle-modern .toggle-on { - background-color: #d0d4e7; -} -.toggle-modern .toggle-on + .toggle-blob { - border: 3px solid #d0d4e7; -} -.toggle-modern .toggle-on.active { - background-color: #262b36; -} -.toggle-modern .toggle-on.active + .toggle-blob { - border: 3px solid #262b36; -} -.toggle-modern .toggle-off, -.toggle-modern .toggle-off.active { - color: #fff; - background-color: #d0d4e7; - background-image: none; - text-shadow: none; - text-indent: 8px !important; -} -.toggle-modern.primary .toggle-on.active { - background-color: #2574ab; -} -.toggle-modern.primary .toggle-on.active + .toggle-blob { - border: 3px solid #2574ab; -} -.toggle-modern.success .toggle-on.active { - background-color: #03a678; -} -.toggle-modern.success .toggle-on.active + .toggle-blob { - border: 3px solid #03a678; -} -.toggle-modern.warning .toggle-on.active { - background-color: #e6ad5c; -} -.toggle-modern.warning .toggle-on.active + .toggle-blob { - border: 3px solid #e6ad5c; -} -.toggle-modern.danger .toggle-on.active { - background-color: #d9534f; -} -.toggle-modern.danger .toggle-on.active + .toggle-blob { - border: 3px solid #d9534f; -} -.toggle-modern.info .toggle-on.active { - background-color: #5bc0de; -} -.toggle-modern.info .toggle-on.active + .toggle-blob { - border: 3px solid #5bc0de; -} -/***** DATEPICKER *****/ -.ui-datepicker { - background-color: #fff; - border: 1px solid #9fa8bc; - font-family: inherit; - font-size: inherit; - padding: 10px; - margin: 1px 0 0; - border-radius: 2px; - width: auto !important; -} -.ui-datepicker .ui-datepicker-header { - font-weight: 700; - text-transform: uppercase; - color: #696c74; - padding: 0 0 5px; - letter-spacing: 1px; - border: 0; - background-color: transparent; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next, -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev { - color: #dee1e7; - top: 1px; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next:before, -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before { - font-family: 'FontAwesome'; - position: absolute; - top: 2px; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next, -.ui-datepicker .ui-datepicker-header .ui-datepicker-next:before { - right: 0; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next:before { - content: '\f054'; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev, -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before { - left: 0; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before { - content: '\f053'; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next-hover, -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev-hover { - color: #c0c7d2; - cursor: pointer; - top: 1px; - border: 0; - background-color: transparent; -} -.ui-datepicker .ui-datepicker-title { - color: #259dab; -} -.ui-datepicker .ui-datepicker-calendar { - margin: 0; - background-color: transparent; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.ui-datepicker .ui-datepicker-calendar th { - text-transform: uppercase; - font-size: 11px; - font-weight: 700; - letter-spacing: 1px; - padding: 6px 10px; - color: #82858e; -} -@media (max-width: 320px) { - .ui-datepicker .ui-datepicker-calendar th { - padding: 4px 0; - letter-spacing: normal; - } -} -.ui-datepicker .ui-datepicker-calendar td { - border: 1px solid #fff; - padding: 0; - background-color: #fcfcfd; -} -.ui-datepicker .ui-datepicker-calendar td:last-child { - border-right: 0; -} -.ui-datepicker .ui-datepicker-calendar td span, -.ui-datepicker .ui-datepicker-calendar td a { - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; - padding: 5px 8px; - background-color: #f6f7f8; - color: #696c74; - padding: 6px 10px; - display: block; - font-weight: 400; - font-size: 12px; - border: 0; - border-radius: 1px; -} -.ui-datepicker .ui-datepicker-calendar td a:hover { - background-color: #d8dce3; - color: #696c74; -} -.ui-datepicker .ui-datepicker-calendar .ui-datepicker-today a { - background-color: #d8dce3; - color: #696c74; -} -.ui-datepicker-multi .ui-datepicker-group { - padding-right: 15px; - width: auto; -} -.ui-datepicker-multi .ui-datepicker-group table { - margin: 0; -} -.ui-datepicker-multi .ui-datepicker-group-last { - padding-right: 0; -} -.ui-datepicker-inline { - max-width: 300px; - border-color: #bdc3d1; -} -/***** TIME PICKER *****/ -.ui-timepicker-wrapper { - min-width: 100px; - margin-top: -1px; - border-color: #9fa8bc; - z-index: 100; - -webkit-box-shadow: none; - box-shadow: none; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.ui-timepicker-list { - margin: 3px; -} -.ui-timepicker-list li { - padding: 5px 7px; - border-radius: 2px; -} -.ui-timepicker-list li:hover, -.ui-timepicker-list li:focus { - background-color: #259dab; -} -/***** DROPZONE *****/ -.dropzone { - border-style: dashed; - border-radius: 2px; - border-color: #d0d4e7; - background-color: #f6f7f8; -} -.dropzone .dz-message { - font-size: 14px; - font-weight: 700; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - text-transform: uppercase; - color: #696c74; - margin-top: 45px; - opacity: .3; -} -.dropzone .dz-preview .dz-image { - border-radius: 2px; - background-color: #d8dce3; -} -.dropzone .dz-preview:hover .dz-image img { - -webkit-filter: none; - filter: none; - display: none; -} -.dropzone .dz-preview .dz-details, -.dropzone .dz-preview .dz-details .dz-size { - font-size: 12px; -} -.dropzone .dz-preview .dz-details .dz-filename:hover span { - border-color: transparent; - border-radius: 2px; -} -.dropzone .dz-preview .dz-error-message { - border-radius: 2px; - font-size: 12px; -} -/***** COLORPICKER *****/ -.colorpicker.dropdown-menu { - padding: 5px; - border-color: #66afe9; - -webkit-box-shadow: none; - box-shadow: none; -} -.colorpicker-lg .colorpicker-saturation { - width: 200px; - height: 200px; -} -.colorpicker-lg .colorpicker-hue, -.colorpicker-lg .colorpicker-alpha { - width: 30px; - height: 200px; -} -.colorpicker-lg .colorpicker-color, -.colorpicker-lg .colorpicker-color div { - height: 30px; -} -/***** JQUERY STEPS *****/ -.wizard { - margin-bottom: 20px; -} -.wizard > .content { - min-height: 180px; - background-color: #fff; - border-radius: 0; - margin: 0; -} -.wizard > .content > .body { - width: 100%; - height: 100%; - padding: 20px; -} -.wizard > .content > .body label.error { - display: inline; - margin: 3px 0 0; - font-size: 11px; - color: #d9534f; -} -.wizard > .content > .body .has-error .form-control { - border-color: #d9534f; -} -.wizard > .steps > ul > li { - display: table-cell; - width: 1%; - float: none; -} -.wizard > .steps > ul > li > a { - margin: 0; - border-radius: 0; - padding: 14px 25px; - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 700; - font-size: 12px; - background-color: #9fa8bc; - color: rgba(255, 255, 255, 0.8); - text-align: center; - letter-spacing: .2px; -} -.wizard > .steps > ul > li > a:hover, -.wizard > .steps > ul > li > a:focus { - color: #fff; - margin: 0; - border-radius: 0; - padding: 14px 25px; - background-color: #909bb1; -} -.wizard > .steps > ul > li:first-child > a { - border-top-left-radius: 2px; -} -.wizard > .steps > ul > li:last-child > a { - border-top-right-radius: 2px; -} -.wizard > .steps .number { - font-size: 12px; - margin-right: 5px; -} -.wizard > .steps .disabled a, -.wizard > .steps .disabled a:hover, -.wizard > .steps .disabled a:focus, -.wizard > .steps .disabled a:active { - background-color: #9fa8bc; - color: rgba(255, 255, 255, 0.8); -} -.wizard > .steps .done a { - background-color: #505b72; -} -.wizard > .steps .done a:hover, -.wizard > .steps .done a:focus, -.wizard > .steps .done a:active { - background-color: #464f63; -} -.wizard > .steps .current a, -.wizard > .steps .current a:hover, -.wizard > .steps .current a:focus, -.wizard > .steps .current a:active { - background-color: #fff; - color: #5b6781; -} -.wizard > .actions { - padding: 15px 15px 10px; - background-color: #f6f7f8; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.wizard > .actions a { - padding: 10px 12px; - border-radius: 2px; - background-color: #2574ab; - min-width: 100px; - height: 38px; - text-align: center; - letter-spacing: .5px; -} -.wizard > .actions a:hover, -.wizard > .actions a:focus { - border-radius: 2px; - padding: 10px 12px; - background-color: #206696; -} -.wizard > .actions a:active { - background-color: #1e5d89; -} -.wizard > .actions > ul { - margin: 0; - padding: 0; -} -.wizard > .actions > ul > li { - display: inline-block; - margin-right: 0; -} -.wizard > .actions > ul > li:last-child a { - background-color: #259dab; -} -.wizard > .actions > ul > li:last-child a:hover, -.wizard > .actions > ul > li:last-child a:focus { - background-color: #208a96; -} -.wizard > .actions .disabled a, -.wizard > .actions .disabled a:hover, -.wizard > .actions .disabled a:focus { - background-color: #d8dce3; - color: #c0c7d2; -} -.wizard.vertical { - background-color: #9fa8bc; - border-radius: 2px; -} -.wizard.vertical .content { - margin: 0; - width: 70%; - min-height: 250px; -} -@media (max-width: 639px) { - .wizard.vertical .content { - width: 100%; - } -} -.wizard.vertical > .steps > ul > li { - display: block; -} -.wizard.vertical > .steps > ul > li > a { - text-align: left; -} -@media (max-width: 639px) { - .wizard.vertical > .steps { - width: 100%; - } -} -.wizard.vertical .actions { - margin: 0; - width: 100%; -} -.wizard.wizard-style2 > .steps { - counter-reset: ordered; -} -.wizard.wizard-style2 > .steps > ul > li { - position: relative; -} -@media (max-width: 480px) { - .wizard.wizard-style2 > .steps > ul > li { - display: block; - float: none; - width: auto; - } -} -.wizard.wizard-style2 > .steps > ul > li > a { - text-align: left; - padding-left: 60px; - padding-right: 0; -} -.wizard.wizard-style2 > .steps > ul > li > a:before { - content: counters(ordered, ".", decimal); - counter-increment: ordered; - position: absolute; - top: 50%; - left: 15px; - width: 36px; - height: 36px; - margin-top: -18px; - background-color: rgba(255, 255, 255, 0.8); - color: #9fa8bc; - border-radius: 100px; - font-size: 18px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - text-align: center; - padding-top: 8px; - line-height: 20px; -} -.wizard.wizard-style2 > .steps > ul > li > a:after { - border-left: 31px solid #9fa8bc; - border-top: 31px solid transparent; - border-bottom: 31px solid transparent; - content: ""; - display: inline-block; - position: absolute; - right: -31px; - top: 50%; - margin-top: -31px; - z-index: 50; -} -.wizard.wizard-style2 > .steps > ul > li > a:hover:after, -.wizard.wizard-style2 > .steps > ul > li > a:focus:after { - border-left-color: #909bb1; -} -.wizard.wizard-style2 > .steps > ul > li > a > small { - display: block; - text-transform: none; - font-weight: normal; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; -} -.wizard.wizard-style2 > .steps > ul > li + li > a { - padding-left: 85px; -} -@media (max-width: 480px) { - .wizard.wizard-style2 > .steps > ul > li + li > a { - padding-left: 60px; - } -} -.wizard.wizard-style2 > .steps > ul > li + li > a:before { - left: 40px; -} -@media (max-width: 639px) { - .wizard.wizard-style2 > .steps > ul > li + li > a:before { - left: 15px; - } -} -.wizard.wizard-style2 > .steps > ul > li:last-child > a:after { - display: none; -} -.wizard.wizard-style2 > .steps .number { - display: none; -} -.wizard.wizard-style2 > .steps .done a:before { - background-color: #fff; - color: #505b72; -} -.wizard.wizard-style2 > .steps .done a:after { - border-left-color: #505b72; -} -.wizard.wizard-style2 > .steps .done a:hover:after, -.wizard.wizard-style2 > .steps .done a:focus:after { - border-left-color: #464f63; -} -.wizard.wizard-style2 > .steps .current a, -.wizard.wizard-style2 > .steps .current a:hover, -.wizard.wizard-style2 > .steps .current a:focus { - background-color: #fff; - color: #259dab; -} -.wizard.wizard-style2 > .steps .current a > small, -.wizard.wizard-style2 > .steps .current a:hover > small, -.wizard.wizard-style2 > .steps .current a:focus > small { - color: #696c74; -} -.wizard.wizard-style2 > .steps .current a:before, -.wizard.wizard-style2 > .steps .current a:hover:before, -.wizard.wizard-style2 > .steps .current a:focus:before { - background-color: #259dab; - color: #fff; -} -.wizard.wizard-style2 > .steps .current a:after, -.wizard.wizard-style2 > .steps .current a:hover:after, -.wizard.wizard-style2 > .steps .current a:focus:after { - border-left-color: #fff; -} -.wizard.wizard-style2 > .steps .disabled a:after, -.wizard.wizard-style2 > .steps .disabled a:hover:after, -.wizard.wizard-style2 > .steps .disabled a:focus:after { - border-left-color: #9fa8bc; -} -.wizard.wizard-style2.vertical > .steps > ul > li + li > a { - padding-left: 60px; -} -.wizard.wizard-style2.vertical > .steps > ul > li + li > a:before { - left: 15px; -} -.wizard.wizard-style2.vertical > .steps > ul > li + li > a:after { - display: none; -} -.wizard.wizard-style2.vertical > .steps > ul > li:last-child > a { - border-top-right-radius: 0; -} -.wizard.wizard-style2.vertical > .steps .current a:after, -.wizard.wizard-style2.vertical > .steps .done a:after { - display: none; -} -/***** WYSIHTML5 *****/ -ul.wysihtml5-toolbar a.btn.wysihtml5-command-active { - background-color: #dbdfe6; - -webkit-box-shadow: none; - box-shadow: none; -} -.note-editor { - border-color: #bdc3d1; - border-radius: 2px; -} -.note-editor .note-toolbar { - border-bottom-color: #bdc3d1; -} -.note-editor .note-toolbar.btn-toolbar { - margin-left: 0; -} -.note-editor .note-statusbar .note-resizebar { - border-top-color: #bdc3d1; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -/***** JQUERY.GRITTER *****/ -.gritter-top, -.gritter-bottom { - display: none; -} -.gritter-item { - position: relative; - background-image: none; - background-color: rgba(17, 19, 24, 0.95); - border-radius: 2px; - padding: 15px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - line-height: 1.42857143; - color: rgba(255, 255, 255, 0.65); - z-index: 3000; -} -.gritter-item a:hover { - text-decoration: underline; -} -.gritter-title { - font-weight: 700; - text-shadow: none; - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - letter-spacing: .5px; - font-size: 12px; - color: #fff; -} -.gritter-close { - left: auto; - right: 3px; - background: none; -} -.gritter-close:before { - text-indent: 0; - content: '\f00d'; - position: absolute; - font-family: 'FontAwesome'; - top: 0; - right: 7px; - color: #fff; - font-size: 16px; - opacity: .3; -} -.gritter-item-wrapper.with-icon > .gritter-item { - padding-left: 60px; - position: relative; -} -.gritter-item-wrapper.with-icon > .gritter-item:before { - color: #fff; - position: absolute; - top: 15px; - left: 15px; - font-size: 28px; - font-family: 'FontAwesome'; -} -.gritter-item-wrapper.primary > .gritter-item { - background-color: rgba(37, 116, 171, 0.9); -} -.gritter-item-wrapper.success > .gritter-item { - background-color: rgba(77, 175, 124, 1); -} -.gritter-item-wrapper.warning > .gritter-item { - background-color: rgba(230, 173, 92, 0.9); -} -.gritter-item-wrapper.danger > .gritter-item { - background-color: rgba(217, 83, 79, 1); -} -.gritter-item-wrapper.info > .gritter-item { - background-color: rgba(91, 192, 222, 0.9); -} -.gritter-item-wrapper.with-icon.send-o > .gritter-item:before { - content: '\f1d9'; -} -.gritter-item-wrapper.with-icon.question-circle > .gritter-item:before { - content: '\f059'; -} -.gritter-item-wrapper.with-icon.check-circle > .gritter-item:before { - content: '\f058'; -} -.gritter-item-wrapper.with-icon.exclamation-circle > .gritter-item:before { - content: '\f06a'; -} -.gritter-item-wrapper.with-icon.times-circle > .gritter-item:before { - content: '\f057'; -} -/***** JQUERY UI SLIDER *****/ -.ui-slider { - background-color: #d8dce3; - border-radius: 50px; - border: 0; -} -.ui-slider .ui-slider-handle { - background-color: #fff; - border: 2px solid #909bb1; - width: 18px; - height: 18px; - border-radius: 50px; - top: -6px; - cursor: pointer; - outline: none; -} -.ui-slider .ui-slider-handle:after { - content: ''; - position: absolute; - width: 8px; - height: 8px; - background-color: #909bb1; - top: 3px; - left: 3px; - border-radius: 50px; -} -.ui-slider .ui-slider-range { - border-radius: 50px; - background-color: #909bb1; -} -.ui-slider-horizontal { - height: 6px; - margin: 15px 0; -} -.slider-primary .ui-slider-range { - background-color: #2574ab; -} -.slider-primary .ui-slider-handle { - border-color: #2574ab; -} -.slider-primary .ui-slider-handle:after { - background-color: #2574ab; -} -.slider-success .ui-slider-range { - background-color: #4daf7c; -} -.slider-success .ui-slider-handle { - border-color: #4daf7c; -} -.slider-success .ui-slider-handle:after { - background-color: #4daf7c; -} -.slider-warning .ui-slider-range { - background-color: #e6ad5c; -} -.slider-warning .ui-slider-handle { - border-color: #e6ad5c; -} -.slider-warning .ui-slider-handle:after { - background-color: #e6ad5c; -} -.slider-danger .ui-slider-range { - background-color: #d9534f; -} -.slider-danger .ui-slider-handle { - border-color: #d9534f; -} -.slider-danger .ui-slider-handle:after { - background-color: #d9534f; -} -.slider-info .ui-slider-range { - background-color: #5bc0de; -} -.slider-info .ui-slider-handle { - border-color: #5bc0de; -} -.slider-info .ui-slider-handle:after { - background-color: #5bc0de; -} -.ui-slider-vertical { - width: 6px; - display: inline-block; -} -.ui-slider-vertical .ui-slider-handle { - top: auto; - left: -6px; -} -/***** DATA TABLES *****/ -#dataTable1_length { - font-size: 12px; - margin-top: 10px; -} -#dataTable1_filter { - font-size: 12px; - margin-top: 18px; -} -#dataTable1_info { - font-size: 11px; - margin: 17px 0; -} -#dataTable1_paginate { - /*display: none;*/ -} -.table.dataTable { - margin-bottom: -2px !important; - margin-top: 0 !important; -} -.table.dataTable thead .sorting:after, -.table.dataTable thead .sorting_asc:after, -.table.dataTable thead .sorting_desc:after { - top: 12px; - font-size: 12px; - font-weight: normal; -} -.table.dataTable td.details-control { - cursor: pointer; -} -.table.dataTable td.details-control:before { - font-family: 'FontAwesome'; - content: '\f105'; - display: block; - text-align: center; -} -.table.dataTable tr.shown td.details-control:before { - content: '\f107'; -} -.table.dataTable tr.shown + tr > td { - padding: 20px; - background-color: #edeff2; -} -.table.dataTable tr.shown + tr > td h4 { - margin: 0 0 15px; -} -.table.dataTable tr.shown + tr > td h4 > small { - display: block; - font-size: 12px; - text-transform: none; - margin-top: 5px; - color: #82858e; -} -.dataTables_length label { - margin-bottom: 20px; -} -.dataTables_filter label { - margin-bottom: 20px; -} -.dataTables_filter .form-control { - font-size: inherit; - height: 38px; - padding: 10px 12px; -} -.dataTables_paginate .pagination > .paginate_button > a { - padding: 5px 7px 4px; -} -.dataTables_paginate .pagination > .paginate_button.next, -.dataTables_paginate .pagination > .paginate_button.previous { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-size: 12px; - text-transform: uppercase; -} -.dataTables_paginate .pagination > .paginate_button.next > a, -.dataTables_paginate .pagination > .paginate_button.previous > a { - padding: 5px 7px 4px; -} -/***** SUMMERNOTE *****/ -.note-toolbar { - padding-left: 0; -} -/***** MAP *****/ -.gm-style-mtc > div { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -/***** MORRIS CHART *****/ -.morris-hover.morris-default-style { - border: 0; - border-radius: 2px; -} -@media (min-width: 992px) { - body { - overflow: visible !important; - } -} -a:hover, -a:focus { - outline: none; -} -code { - background-color: transparent; - padding: 0; -} -p code { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - letter-spacing: 0.2px; -} -label { - font-weight: normal; -} -hr { - margin: 20px 0; - border-color: #dbdfe6; -} -hr.darken { - border-color: #c3c9d5; -} -hr.hr15 { - margin: 15px 0 !important; -} -hr.fadeout { - border-color: #fff; - opacity: .1; -} -blockquote { - color: #464f63; - font-weight: 400; - font-size: 16px; - font-family: Georgia, "Times New Roman", Times, serif; -} -/* Header Panel */ -.headerpanel { - position: fixed; - top: 0; - left: 0; - right: 0; - height: 64px; - background-color: #292929; - z-index: 2000; -} -.headerpanel .logopanel { - position: absolute; - left: -280px; - width: 280px; - height: 64px; - padding: 6px 15px; - background-color: #222; - text-align: center; -} -.headerpanel .logopanel h2 { - margin: 0; - font-weight: 500; -} -.headerpanel .logopanel h2 > a { - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.headerpanel .logopanel h2 > a:hover { - color: #31c1d2; -} -@media (min-width: 992px) { - .headerpanel .logopanel { - left: 0 !important; - } -} -.headerbar { - position: relative; - padding-left: 64px; -} -@media (min-width: 992px) { - .headerbar { - margin-left: 280px; - left: 0 !important; - } -} -.menutoggle { - position: absolute; - width: 64px; - height: 64px; - top: 0; - left: 0; - font-size: 21px; - cursor: pointer; - color: #778395; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.menutoggle i { - position: absolute; - top: 50%; - left: 50%; - margin-top: -11px; - margin-left: -10px; -} -.menutoggle:hover, -.menutoggle:focus { - color: #9fa8bc; -} -.searchpanel { - position: absolute; - top: 0; - left: 64px; - width: 230px; -} -@media (max-width: 480px) { - .searchpanel { - display: none; - } -} -.searchpanel .input-group { - margin-top: 12px; -} -.searchpanel .input-group .form-control { - border: 0; - color: #fff; - background-color: #3b4354; -} -.searchpanel .input-group .btn { - border: 0; - background-color: #3b4354; - font-size: 14px; - color: #fff; - padding-top: 7px; - line-height: normal; - padding-left: 15px; - padding-right: 17px; -} -.header-right { - float: right; - padding-right: 20px; -} -.headermenu { - list-style: none; - margin: 0; - padding: 0; -} -.headermenu .dropdown-toggle:hover, -.headermenu .dropdown-toggle:focus, -.headermenu .dropdown-toggle:active, -.headermenu .dropdown-toggle.active, -.headermenu .open .dropdown-toggle.dropdown-toggle { - background-color: #2c323f; -} -.headermenu > li { - display: inline-block; - float: left; - position: relative; -} -.headermenu > li .btn { - border-radius: 0; - background-color: transparent; - color: #fff; - height: 64px; - border: 0; - padding-left: 5px; - padding-right: 5px; -} -.headermenu > li .btn:hover, -.headermenu > li .btn:focus { - color: #9fa8bc; -} -.headermenu > li .btn:active { - -webkit-box-shadow: none; - box-shadow: none; -} -.headermenu > li .alert-notice .fa { - position: relative; -} -.headermenu > li .alert-notice .fa:after { - position: absolute; - content: ''; - top: -2px; - right: -2px; - width: 10px; - height: 10px; - background-color: #ff564e; - border-radius: 50px; - opacity: .75; -} -.headermenu > li > .btn-group { - margin-bottom: 0; -} -.headermenu > li > .btn-group > .btn-notice { - font-size: 21px; -} -.headermenu > li > .btn-group > .btn-notice + .dropdown-menu { - min-width: 350px; -} -@media (max-width: 480px) { - .headermenu > li > .btn-group > .btn-notice + .dropdown-menu { - min-width: 0; - position: fixed; - top: 64px; - right: 0; - left: 0; - bottom: 0; - border: 0; - overflow: auto; - } - .headermenu > li > .btn-group > .btn-notice + .dropdown-menu:after { - display: none; - } -} -.headermenu > li > .btn-group > .btn-logged { - padding: 5px 12px 3px; - font-size: 14px; - border: 0; -} -.headermenu > li > .btn-group > .btn-logged img { - vertical-align: middle; - margin-right: 5px; - width: 20px; - border-radius: 50px; -} -.headermenu > li > .btn-group > .btn-logged .caret { - margin-left: 5px; - margin-top: -2px; -} -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu { - min-width: 180px; -} -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu > li > a { - padding: 8px 10px; - color: #ccc; -} -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu > li > a:hover, -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu > li > a:focus { - background-color: #262b36; - color: #efefef; -} -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu > li > a > i { - width: 16px; - margin-right: 5px; -} -.headermenu > li .btn-chat { - font-size: 21px; -} -.headermenu .dropdown-menu { - border-color: rgba(38, 43, 54, 0.1); - border-top: 0; - margin-top: 0; - margin-right: -8px; - padding: 5px; - background-color: #222; - border-top-right-radius: 0; - border-top-left-radius: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - -webkit-box-shadow: none; - box-shadow: none; -} -.headermenu .dropdown-menu:after { - border-bottom: 8px solid #222; - border-left: 8px solid transparent; - border-right: 8px solid transparent; - content: ""; - display: inline-block; - right: 17px; - position: absolute; - top: -7px; -} -.headermenu .dropdown-menu .title { - text-transform: uppercase; - font-weight: bold; - font-size: 11px; - margin: 0 0 5px; - padding: 10px; - letter-spacing: .5px; -} -.headermenu .dropdown-menu > li > a { - font-size: 12px; - border-radius: 2px; -} -.headermenu .dropdown-menu .list-group { - margin-left: -5px; - margin-right: -5px; - margin-bottom: -5px; -} -.headermenu .dropdown-menu .list-group > .list-group-item { - border-left: 0; - border-right: 0; -} -.headermenu .dropdown-menu .list-group > .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.headermenu .dropdown-menu .list-group > .list-group-item:last-child { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - border-bottom: 0; -} -.headermenu .dm-notice { - padding: 5px 20px 10px; -} -@media (max-width: 480px) { - .headermenu .dm-notice { - padding: 0; - margin-right: 0; - } -} -.headermenu .dm-notice .nav-tabs { - background-color: transparent; -} -.headermenu .dm-notice .nav-tabs > li > a { - font-size: 12px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - text-transform: uppercase; - font-weight: bold; - letter-spacing: .5px; - border-radius: 0; - border-width: 0; - padding-left: 0; - padding-right: 0; - border-bottom: 1px solid #dbdfe6; - color: #3b4354; - cursor: pointer; -} -@media (max-width: 480px) { - .headermenu .dm-notice .nav-tabs > li > a { - font-size: 11px; - } -} -.headermenu .dm-notice .nav-tabs > li > a:hover, -.headermenu .dm-notice .nav-tabs > li > a:focus { - background-color: transparent; - color: #262b36; -} -.headermenu .dm-notice .nav-tabs > li.active > a, -.headermenu .dm-notice .nav-tabs > li.active > a:hover, -.headermenu .dm-notice .nav-tabs > li.active > a:focus { - color: #259dab; - border: 0; - border-bottom: 1px solid #259dab; - background-color: transparent; -} -@media (max-width: 767px) { - .headermenu .dm-notice .nav-tabs { - display: table; - } - .headermenu .dm-notice .nav-tabs > li { - display: table-cell; - } - .headermenu .dm-notice .nav-tabs > li > a { - margin: 0; - } -} -.headermenu .dm-notice .tab-pane { - padding: 20px 0 10px; -} -@media (max-width: 480px) { - .headermenu .dm-notice .tab-pane { - padding: 10px; - } -} -.headermenu .dm-notice .tab-pane .panel-title { - margin: 15px 0 0; - padding: 7px 0; - letter-spacing: .5px; - background-color: #dbdfe6; - color: #909bb1; - text-align: center; - border-radius: 2px; - font-size: 11px; -} -.headermenu .dm-notice .tab-pane .btn-more { - text-align: center; - display: block; - background-color: #259dab; - color: #fff; - padding: 6px 0; - border-radius: 2px; - letter-spacing: .5px; - margin-top: 10px; -} -.headermenu .dm-notice .tab-pane .btn-more:hover, -.headermenu .dm-notice .tab-pane .btn-more:focus { - background-color: #2395a3; -} -.headermenu .dm-notice .tab-pane .btn-more > i { - font-size: 14px; - line-height: 0; - margin-left: 3px; - vertical-align: middle; -} -.headermenu .dm-notice .list-group { - margin: 5px 0; -} -.headermenu .dm-notice .list-group .list-group-item { - padding-left: 0; - padding-right: 0; - border-color: #dbdfe6; -} -.headermenu .dm-notice .list-group .list-group-item h4, -.headermenu .dm-notice .list-group .list-group-item p { - margin: 0; - text-align: center; - text-transform: uppercase; - font-weight: 700; -} -.headermenu .dm-notice .list-group .list-group-item h4 { - color: #262b36; - font-size: 14px; -} -.headermenu .dm-notice .list-group .list-group-item p { - font-size: 11px; - letter-spacing: .5px; - color: #818da7; -} -.headermenu .dm-notice .list-group .list-group-item h5 { - margin: 0; - font-weight: 700; - font-size: 12px; -} -.headermenu .dm-notice .list-group .list-group-item small { - font-size: 11px; - display: block; - margin: 2px 0 0; -} -.headermenu .dm-notice .list-group .list-group-item:first-child { - border-top: 0; -} -.headermenu .dm-notice .list-group .list-group-item:last-child { - padding-bottom: 0; -} -.headermenu .dm-notice .notice-list { - margin: 0 0 20px; -} -.headermenu .dm-notice .notice-list .list-group-item h5 > a { - color: #464f63; - font-weight: 700; - font-size: 12px; -} -.headermenu .dm-notice .notice-list .list-group-item h5 > a:hover, -.headermenu .dm-notice .notice-list .list-group-item h5 > a:focus { - color: #262b36; -} -.headermenu .dm-notice .notice-list .list-group-item h5 + small { - color: #aeb6c6; - display: block; -} -.headermenu .dm-notice .notice-list .list-group-item span { - margin-top: 5px; - display: block; -} -.headermenu .dm-notice .notice-list .list-group-item .fa { - color: #818da7; - border: 1px solid #818da7; - padding: 9px; - vertical-align: middle; - font-size: 14px; - width: 34px; - height: 34px; - border-radius: 100px; - text-align: center; - opacity: .75; -} -.headermenu .dm-notice .notice-list .list-group-item:first-child { - padding-top: 0; -} -.headermenu .dm-notice .notice-list .list-group-item:last-child { - padding-bottom: 0; -} -.headermenu .dm-notice .notice-list .list-group-item.unread .fa { - color: #259dab; - border-color: #259dab; -} -.headermenu .dm-notice .notice-list .list-group-item.unread h5 > a { - color: #259dab; -} -.headermenu .dm-notice .notice-list .list-group-item.unread h5 > a:hover, -.headermenu .dm-notice .notice-list .list-group-item.unread h5 > a:focus { - color: #505b72; -} -.today-day { - margin: 0; - font-weight: 400; - color: #3b4354; -} -.today-date { - margin-top: 8px; - color: #5b6781; - font-weight: 500; -} -.today-weather { - margin: 20px 0 5px; - text-transform: uppercase; - font-weight: bold; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - color: #262b36; -} -.today-weather + p { - font-size: 11px; -} -.today-weather > i { - color: #657390; - margin-right: 5px; -} -/************ LEFT PANEL ***********/ -.leftpanel { - background-color: #2a2a2a; - width: 280px; - position: fixed; - top: 64px; - bottom: 0; - left: -280px; - z-index: 100; - overflow-y: auto; - overflow-x: hidden; -} -.leftpanel .tab-pane { - padding: 0; - background-color: transparent; -} -.leftpanel .media-list-contacts .media { - border-color: #eaecf0; -} -@media (min-width: 992px) { - .leftpanel { - left: 0 !important; - } -} -/***** LEFTPANEL PROFILE *****/ -.leftpanel-profile { - padding: 15px; - background-color: #3b4354; -} -.leftpanel-profile .media-object { - width: 48px; - padding: 3px; - border: 2px solid #657390; -} -.leftpanel-profile .media-left { - padding-right: 15px; -} -.leftpanel-profile .media-heading { - margin: 7px 0 2px; - color: rgba(255, 255, 255, 0.9); - font-weight: 500; - letter-spacing: 1px; - font-size: 14px; -} -.leftpanel-profile .media-heading > a { - color: rgba(255, 255, 255, 0.5); -} -.leftpanel-profile .media-heading > a:hover, -.leftpanel-profile .media-heading > a:focus { - cursor: pointer; - color: rgba(255, 255, 255, 0.7); -} -.leftpanel-profile .media-body { - color: rgba(255, 255, 255, 0.5); -} -.leftpanel-userinfo { - background-color: #464f63; - padding-top: 10px; - position: absolute; - left: 0; - right: 0; - z-index: 100; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.leftpanel-userinfo .sidebar-title { - margin-top: 0; -} -.leftpanel-userinfo address { - color: rgba(255, 255, 255, 0.9); - padding: 0 15px; - margin-bottom: 20px; -} -.leftpanel-userinfo .list-group-item { - border-left: 0; - border-right: 0; - border-color: #4c566c; - background-color: transparent; - color: rgba(255, 255, 255, 0.9); -} -.leftpanel-userinfo .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.leftpanel-userinfo .list-group-item:last-child { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.leftpanel-userinfo .list-group-item label { - margin: 0; - color: rgba(255, 255, 255, 0.4); -} -.leftpanel-userinfo .list-group-item:before, -.leftpanel-userinfo .list-group-item:after { - content: " "; - display: table; -} -.leftpanel-userinfo .list-group-item:after { - clear: both; -} -.leftpanel-userinfo .list-group-item:before, -.leftpanel-userinfo .list-group-item:after { - content: " "; - display: table; -} -.leftpanel-userinfo .list-group-item:after { - clear: both; -} -.leftpanel-userinfo .list-group-item .social-icons a { - color: rgba(255, 255, 255, 0.7); - margin-left: 5px; - font-size: 14px; - line-height: 0; -} -.leftpanel-userinfo .list-group-item .social-icons a > i { - line-height: 0; -} -.leftpanel-userinfo .list-group-item .social-icons a:hover, -.leftpanel-userinfo .list-group-item .social-icons a:focus { - color: #fff; -} -/***** LEFT NAVIGATION *****/ -.nav-quirk { - margin: 0 0 30px; - background-color: #2a2a2a; -} -.nav-quirk > li { - border-top: 1px solid #2f2f2f; - *text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -} -.nav-quirk > li > a { - color: #909090; - padding: 12px 14px; - border-radius: 0; - font-weight: 700; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk > li > a .badge { - background-color: transparent; - border-radius: 3px; - color: #9fa8bc; - font-size: 10px; - font-weight: normal; - line-height: 1; - margin-right: 2px; - margin-top: 3px; - padding: 2px 6px 3px; - text-transform: none; -} -.badge.badge-service-running { - background: #3bc391 none repeat scroll 0 0; - border-radius: 50%; - color: #fff; - display: inline-block; - font-family: Open Sans; - height: 10px; - margin-right: 15px; - padding: 1px; - position: relative; - top: 18px; - width: 10px; - z-index: 99; -} -.badge.badge-service-disabled { - background: #eB4549 none repeat scroll 0 0; - border-radius: 50%; - color: #fff; - display: inline-block; - font-family: Open Sans; - height: 10px; - margin-right: 15px; - padding: 1px; - position: relative; - top: 18px; - width: 10px; - z-index: 99; -} - -.badge.badge-service-running-dot { - background-color: #3bc391; - border: 2px solid #3bc391; - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 50%; - display: inline-block; - height: 10px; - opacity: 0.8; - /*left: -15px;*/ - padding: 1px; - position: relative; - /*top: 18px;*/ - width: 10px; -} - -.badge.badge-service-running-pulse { - -webkit-animation: pulse 3s ease-out; - -moz-animation: pulse 3s ease-out; - animation: pulse 3s ease-out; - -webkit-animation-iteration-count: infinite; - -moz-animation-iteration-count: infinite; - animation-iteration-count: infinite; - background: transparent none repeat scroll 0 0; - border: 2px solid #3bc391; - border-radius: 20px; - display: inline-block; - height: 20px; - margin-left: -15px; - opacity: 0; - position: relative; - /*top: 14px;*/ - width: 20px; - z-index: 1; -} - -.badge.badge-service-disabled-dot { - background-color: #eB4549; - border: 2px solid #eB4549; - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 50%; - display: inline-block; - height: 10px; - opacity: 0.8; - /*left: -15px;*/ - padding: 1px; - position: relative; - /*top: 18px;*/ - width: 10px; -} - -.badge.badge-service-disabled-pulse { - -webkit-animation: pulse 3s ease-out; - -moz-animation: pulse 3s ease-out; - animation: pulse 3s ease-out; - -webkit-animation-iteration-count: infinite; - -moz-animation-iteration-count: infinite; - animation-iteration-count: infinite; - background: transparent none repeat scroll 0 0; - border: 2px solid #eB4549; - border-radius: 50%; - display: inline-block; - height: 20px; - margin-left: -15px; - opacity: 0; - position: relative; - /*top: 14px;*/ - width: 20px; - z-index: 1; -} - -@keyframes pulse { - 0% { - transform: scale(0); - opacity: 0.0; - } - 25% { - transform: scale(0); - opacity: 0.1; - } - 50% { - transform: scale(0.1); - opacity: 0.3; - } - 75% { - transform: scale(0.5); - opacity: 0.5; - } - 100% { - transform: scale(1); - opacity: 0.0; - } -} - -@-moz-keyframes pulse { - 0% { - -moz-transform: scale(0); - opacity: 0.0; - } - 25% { - -moz-transform: scale(0); - opacity: 0.1; - } - 50% { - -moz-transform: scale(0.1); - opacity: 0.3; - } - 75% { - -moz-transform: scale(0.5); - opacity: 0.5; - } - 100% { - -moz-transform: scale(1); - opacity: 0.0; - } -} - -@-webkit-keyframes "pulse" { - 0% { - -webkit-transform: scale(0); - opacity: 0.0; - } - 25% { - -webkit-transform: scale(0); - opacity: 0.1; - } - 50% { - -webkit-transform: scale(0.1); - opacity: 0.3; - } - 75% { - -webkit-transform: scale(0.5); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1); - opacity: 0.0; - } -} -/*.badge.badge-service-running.pull-right::before { - content: "Running"; - color: rgba(255,255,255,0.2); - line-height: 5px; - margin-left: -65px; -} -.badge.badge-service-disabled.pull-right::before { - content: "Not Running"; - color: rgba(255,255,255,0.2); - line-height: 5px; - margin-left: -85px; -} -.badge.badge-service-running-dot::before { - content: "Running"; - color: rgba(255,255,255,0.2); - line-height: 5px; - margin-left: -65px; -} -.badge.badge-service-disabled-dot::before { - content: "Not Running"; - color: rgba(255,255,255,0.2); - line-height: 5px; - margin-left: -85px; -}*/ -.nav-quirk > li > a > i { - width: 16px; - font-size: 21px; - text-align: center; - margin-right: 7px; - color: #909090; - vertical-align: top; - margin-top: 1.5555px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk > li > a:hover > i { - color: #5c97bf; -} -.nav-quirk > li > a:hover, -.nav-quirk > li > a:focus { - color: #5c97bf; - background-color: #2f2f2f; -} -.nav-quirk > li + li { - margin: 0; -} -.nav-quirk > li:last-child { - border-bottom: 1px solid #2f2f2f; -} -.nav-quirk > li.nav-parent > a { - position: relative; -} -.nav-quirk > li.nav-parent > a:after { - content: '\f107'; - font-family: 'FontAwesome'; - font-size: 16px; - font-weight: 400; - color: #bdc3d1; - position: absolute; - top: 10px; - right: 15px; -} -.nav-quirk > li.nav-active > ul { - display: block; -} -.nav-quirk > li.active { - border-top-color: transparent; -} -.nav-quirk > li.active + li { - border-top-width: 0; -} -.nav-quirk > li.active > a { - background-color: #2f2f2f; - background-image: linear-gradient(to right, #2f2f2f 0%, #202020 100%); - color: #fff; -} -.nav-quirk > li.active > a .badge { - background-color: transparent; - color: rgba(255, 255, 255, 0.5); -} -.nav-quirk > li.active > a > i { - color: #3bc391; -} -.nav-quirk > li.active > a:after { - color: #fff; -} -.nav-quirk > li.active .children { - display: block; - border-top: 0; - border-bottom: 1px solid #3bc391; -} -.nav-quirk > li.active .children:before { - border-top: 7px solid #259dab; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - content: ""; - display: inline-block; - position: absolute; - left: 15px; - top: 0; -} -.nav-quirk .children { - list-style: none; - display: none; - margin: 0; - padding: 0; - position: relative; - border-top: 1px solid #2a2a2a; - background-color: #333; -} -.nav-quirk .children > li { - margin-left: 21px; - border-left: 1px solid #444; - font-family: "Open Sans", Helvetica, Arial, sans-serif; - text-transform: none; - letter-spacing: normal; - display: block; - font-size: 12px; -} -.nav-quirk .children > li:first-child { - padding-top: 7px; -} -.nav-quirk .children > li:last-child { - padding-bottom: 7px; -} -.nav-quirk .children > li > a { - display: block; - font-size: 12px; - font-weight: 400; - padding: 5px 0 5px 12px; - color: #909090; - position: relative; - height: 30px; - line-height: 16px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk .children > li > a:before { - content: ''; - position: absolute; - width: 5px; - height: 5px; - left: -3px; - top: 50%; - background-color: #eee; - margin-top: -3px; - border-radius: 50px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk .children > li > a:after { - content: ''; - width: 30px; - height: 30px; - border: 1px solid #eee; - position: absolute; - left: -15px; - top: 50%; - margin-top: -15px; - border-radius: 50px; - opacity: 0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk .children > li > a:hover, -.nav-quirk .children > li > a:focus, -.nav-quirk .children > li > a:active { - text-decoration: none; - color: #fff; -} -.nav-quirk .children > li > a:hover:before, -.nav-quirk .children > li > a:focus:before, -.nav-quirk .children > li > a:active:before { - background-color: #eee; -} -.nav-quirk .children > li > a:hover:after, -.nav-quirk .children > li > a:focus:after, -.nav-quirk .children > li > a:active:after { - opacity: 1; - border-color: #5c97bf; - width: 11px; - height: 11px; - left: -6px; - margin-top: -6px; -} -.nav-quirk .children > li.active > a { - color: #259dab; -} -.nav-quirk .children > li.active > a:before { - background-color: #259dab; -} -.nav-quirk .children > li.active > a:after { - opacity: 1; - border-color: #259dab; - width: 11px; - height: 11px; - left: -6px; - margin-top: -6px; -} -/***** LEFT NAVIGATION STACKED STYLE VARIANT *****/ -.nav-quirk-stacked > li:first-child { - border-top: 1px solid #eaecf0; -} -.nav-quirk-stacked > li > a { - padding: 12px 0; - letter-spacing: .5px; - color: #464f63; -} -.nav-quirk-stacked > li > a:hover, -.nav-quirk-stacked > li > a:focus { - color: #262b36; -} -.nav-quirk-stacked > li > a:hover > i, -.nav-quirk-stacked > li > a:focus > i { - color: #262b36; -} -.nav-quirk-stacked > li.nav-parent > a:after { - top: 9px; - right: 5px; -} -.nav-quirk-stacked > li.active { - border-top-color: #eaecf0; -} -.nav-quirk-stacked > li.active + li { - border-top-width: 1px; -} -.nav-quirk-stacked > li.active > a, -.nav-quirk-stacked > li.active > a:hover, -.nav-quirk-stacked > li.active > a:focus { - background-color: transparent; - background-image: none; - color: #259dab; -} -.nav-quirk-stacked > li.active > a > i, -.nav-quirk-stacked > li.active > a:hover > i, -.nav-quirk-stacked > li.active > a:focus > i { - color: #259dab; -} -.nav-quirk-stacked > li.active .children { - border-bottom: 0; - border-top: 1px solid #eaecf0; -} -.nav-quirk-stacked > li.active .children:before { - display: none; -} -.nav-quirk-stacked > li.active.nav-parent > a:after { - color: #259dab; -} -.nav-quirk-stacked .children { - background-color: transparent; -} -.nav-quirk-stacked .children > li { - margin-left: 8px; - border-left-color: #eaecf0; -} -/***** LEFT NAVIGATION PILL STYLE VARIANT *****/ -.nav-quirk-pills > li:last-child { - border-bottom: 0; -} -.nav-quirk-pills > li > a { - padding: 10px; - border-radius: 2px; -} -.nav-quirk-pills > li > a:hover, -.nav-quirk-pills > li > a:focus { - background-color: #e1e4ea; -} -.nav-quirk-pills > li > a:hover > i, -.nav-quirk-pills > li > a:focus > i { - color: inherit; -} -.nav-quirk-pills > li + li { - border-top: 0; - margin-top: 1px; -} -.nav-quirk-pills > li.nav-parent a:after { - top: 7px; - right: 10px; -} -.nav-quirk-pills > li.active .children { - border-bottom: 0; -} -.nav-quirk-pills > li.active .children:before { - display: none; -} -.nav-quirk-pills > li .children { - background-color: transparent; - border-top: 0; -} -.nav-quirk-pills > li .children > li { - margin-left: 18px; - border-left: 0; -} -.nav-quirk-pills > li .children > li:first-child { - padding-top: 0; -} -.nav-quirk-pills > li .children > li:last-child { - padding-bottom: 0; -} -.nav-quirk-pills > li .children > li > a:after { - top: 50%; -} -/***** NAV MAIL *****/ -.nav-mail > li > a .badge { - color: #d9534f; -} -.nav-mail > li > a > i { - color: #909bb1; -} -.nav-label > li { - text-transform: none; -} -.nav-label > li > a { - font-weight: normal; -} -.nav-label > li > a > i.primary { - color: #2574ab; -} -.nav-label > li > a > i.success { - color: #4daf7c; -} -.nav-label > li > a > i.warning { - color: #e6ad5c; -} -.nav-label > li > a > i.danger { - color: #d9534f; -} -/***** LEFTPANEL CONTACT *****/ -.input-search-contact { - padding: 0; - margin-bottom: 20px; - margin-top: -15px; -} -.input-search-contact input { - border: 0; - padding-left: 15px; - border-bottom: 1px solid #eaecf0; - border-radius: 0; - background-color: transparent; -} -.input-search-contact input:focus { - border-color: #eaecf0; -} -.input-search-contact > .input-group-btn > .btn { - border: 0; - border-bottom: 1px solid #eaecf0; - background-color: transparent; - border-radius: 0; - font-size: 14px; - line-height: 0; - padding-top: 6px; - color: #818da7; -} -/***** LEFTPANEL SETTINGS *****/ -.list-group-settings > .list-group-item { - border-color: #eaecf0; -} -.sidebar { - position: absolute; - top: 64px; - bottom: 0; - padding: 15px; -} -.sidebar.left { - left: 0; -} -.sidebar.right { - right: 0; -} -.sidebar.email { - width: 280px; - background-color: #fff; -} -.sidebar-title { - text-transform: uppercase; - font-size: 11px; - color: #9fa8bc; - line-height: normal; - padding: 0 15px; - font-weight: 500; - letter-spacing: .5px; -} -.nav-sidebar.nav-justified { - background-color: #232323; - margin-bottom: 20px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.nav-sidebar.nav-justified > li > a { - border-radius: 0; - background-color: #232323; - color: #fff; - padding: 8px 10px; - font-size: 14px; - vertical-align: bottom; -} -.nav-sidebar.nav-justified > li > a:hover, -.nav-sidebar.nav-justified > li > a:focus { - cursor: pointer; - background-color: #323232; -} -.nav-sidebar.nav-justified > li > a i { - position: relative; -} -.nav-sidebar.nav-justified > li:first-child > a { - border-left: 0; -} -.nav-sidebar.nav-justified > li + li > a { - margin-left: 1px; -} -.nav-sidebar.nav-justified > li.unread > a > i:after { - content: ''; - position: absolute; - top: -2px; - right: -4px; - width: 10px; - height: 10px; - border-radius: 50px; - background-color: #d9534f; - opacity: .9; -} -.nav-sidebar.nav-justified > .active:first-child > a { - border-top-left-radius: 0; -} -.nav-sidebar.nav-justified > .active > a, -.nav-sidebar.nav-justified > .active > a:hover, -.nav-sidebar.nav-justified > .active > a:focus { - background-color: #2a2a2a; - color: #f1c40f; -} -@media (max-width: 767px) { - .nav-sidebar.nav-justified { - display: table; - } - .nav-sidebar.nav-justified > li { - display: table-cell; - } - .nav-sidebar.nav-justified > li > a { - margin: 0; - } -} -.sidebar-btn-wrapper { - margin: 0 15px 20px; -} -/***** CONTACT LIST *****/ -.media-list-contacts { - margin-bottom: 0; -} -.media-list-contacts .media { - border-top: 1px solid #eaecf0; -} -.media-list-contacts .media .media-left { - padding-right: 15px; -} -.media-list-contacts .media .media-object { - width: 40px; - padding: 2px; - border: 2px solid #eaecf0; -} -.media-list-contacts .media a { - display: block; - padding: 10px 15px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.media-list-contacts .media a:hover, -.media-list-contacts .media a:focus { - background-color: #f3f4f7; -} -.media-list-contacts .media a:hover .media-object, -.media-list-contacts .media a:focus .media-object { - border-color: #ccd1db; -} -.media-list-contacts .media .media-body { - padding-top: 2px; - font-size: 11px; - color: #9fa8bc; -} -.media-list-contacts .media .media-body i { - color: #409a32; -} -.media-list-contacts .media .media-body .fa-skype { - color: #00AFF0; -} -.media-list-contacts .media .media-heading { - font-size: 12px; - color: #3b4354; - margin: 3px 0 2px; -} -.media-list-contacts .media + .media { - margin-top: 0; -} -.list-group-settings > .list-group-item { - border-left: 0; - border-right: 0; - background-color: transparent; -} -.list-group-settings > .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.list-group-settings > .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.list-group-settings > .list-group-item h5 { - margin: 0 0 5px; - font-weight: 500; -} -.list-group-settings > .list-group-item small { - display: block; - line-height: normal; - font-size: 11px; -} -.list-group-settings .toggle-wrapper { - margin-top: 15px; -} -/********** USER LIST ***********/ -.user-list { - margin-bottom: 0; -} -.user-list .media { - padding: 12px 0; -} -.user-list .media + .media { - margin: 0; - border-top: 1px solid #eaecf0; -} -.user-list .media:first-child { - padding-top: 0; -} -.user-list .media:last-child { - padding-bottom: 0; -} -.user-list .media-left { - padding-right: 10px; -} -.user-list .media-object { - width: 42px; - padding: 2px; - border: 2px solid #dbdfe6; -} -.user-list .media-body .media-heading { - margin: 2px 0; -} -.user-list .media-body .media-heading > a { - font-size: 12px; - font-weight: 700; - color: #3b4354; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.user-list .media-body .media-heading > a:hover, -.user-list .media-body .media-heading > a:focus { - color: #259dab; -} -.user-list .media-body span { - color: #259dab; - font-weight: 500; -} -.user-list .media-body small.date { - display: block; - font-size: 11px; - color: #818da7; - margin-top: 2px; -} -.user-list .media-body small.date > i { - vertical-align: baseline; - margin-right: 2px; -} -.user-list .media-body a { - font-weight: 500; -} -/***** PROFILE LIST *****/ -.panel-profile .media-usermeta { - margin-top: 4px; - color: #909bb1; -} -.panel-profile .media-usermeta i { - display: inline-block; - margin-right: 5px; - vertical-align: baseline; -} -.panel-profile .people-info .row { - margin: 0; -} -.panel-profile .people-info .row + .row { - margin-top: 1px; -} -.panel-profile .people-info .col-sm-4 { - padding: 0; -} -.panel-profile .people-info .col-sm-4:first-child > .info-group { - margin-left: 0; -} -.panel-profile .people-info .social-account-list > i { - font-size: 28px; -} -.panel-profile .people-info h4 { - margin: 9px 0 8px; - font-weight: 500; - color: #259dab; -} -.panel-profile .people-info .fa, -.panel-profile .people-info .glyphicon { - margin-right: 5px; - vertical-align: baseline; - font-size: 14px; - color: #3b4354; -} -.panel-profile .people-info .info-group { - padding: 15px; - background-color: #f9fafb; - margin-left: 1px; -} -.panel-profile .people-info .info-group label { - display: block; - margin-bottom: 5px; - text-transform: uppercase; - font-weight: 700; - font-size: 11px; - letter-spacing: .5px; - color: #3b4354; -} -.panel-profile .people-info .info-group .social-account-list { - padding-top: 2px; -} -.panel-profile .people-info .info-group .social-account-list > i { - font-size: 28px; - margin: 4px 2px 0; - line-height: 17px; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-facebook-official { - color: #3A5795; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-twitter { - color: #55ACEE; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-dribbble { - color: #EA4C89; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-github { - color: #4078C0; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-linkedin { - color: #0073B2; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-skype { - color: #4BB4FF; -} -.panel-profile.list-view .media { - margin-top: 0; -} -.panel-profile.list-view .media .media-left { - padding-right: 15px; -} -.panel-profile.list-view .media .media-object { - width: 48px; - padding: 2px; - border: 2px solid #eaecf0; -} -.panel-profile.list-view .media .media-heading { - margin-top: 5px; - margin-bottom: 2px; - font-size: 16px; - font-weight: 700; - color: #3b4354; -} -.panel-profile.grid-view .panel-heading { - position: relative; -} -.panel-profile.grid-view .panel-heading .people-actions { - position: absolute; - top: 15px; - right: 15px; -} -.panel-profile.grid-view .panel-profile-photo { - display: inline-block; -} -.panel-profile.grid-view .panel-profile-photo img { - padding: 2px; - border: 2px solid #dbdfe6; -} -.panel-profile.grid-view .panel-profile-name { - margin: 20px 0 5px; - font-size: 16px; -} -.panel-profile.grid-view .info-group { - margin-left: 0; - padding: 10px 0; - background-color: transparent; - border-top: 1px solid #dbdfe6; -} -.panel-profile.grid-view .info-group.last { - padding-bottom: 0; -} -.panel-profile.grid-view h4 { - margin: 5px 0 0; -} -.panel-profile.grid-view .row { - margin: 0; -} -.panel-profile.grid-view .col-xs-6 { - padding: 0; - border-left: 1px solid #dbdfe6; -} -.panel-profile.grid-view .col-xs-6 > .info-group { - padding-left: 20px; -} -.panel-profile.grid-view .col-xs-6:first-child { - border-left: 0; -} -.panel-profile.grid-view .col-xs-6:first-child > .info-group { - padding-left: 0; -} -/***** PROFILE USER *****/ -.profile-left-heading { - padding: 20px; - background-color: #3b4354; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.profile-left-heading .panel-options > li > a { - font-size: 14px; -} -.profile-left-heading .profile-photo { - width: 128px; - display: block; - margin: auto; -} -.profile-left-heading .profile-photo img { - padding: 5px; - background-color: #262b36; - border: 2px solid #505b72; -} -.profile-left-heading .profile-name { - color: #fff; - font-weight: 300; - font-size: 20px; - letter-spacing: 1px; - text-align: center; -} -.profile-left-heading .profile-designation { - color: #9fa8bc; - font-weight: 300; - font-size: 14px; - letter-spacing: 1px; - margin-bottom: 0; - text-align: center; -} -.profile-left-heading .list-group { - margin: 20px 0; -} -.profile-left-heading .list-group .list-group-item { - background-color: transparent; - border-width: 0 0 1px; - border-color: #464f63; - padding-left: 0; - padding-right: 0; - color: rgba(255, 255, 255, 0.7); - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 600; - letter-spacing: .5px; -} -.profile-left-heading .list-group .list-group-item a { - float: right; - color: #5bc0de; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 500; - letter-spacing: 1.5px; -} -.profile-left-heading .list-group .list-group-item a:hover, -.profile-left-heading .list-group .list-group-item a:focus { - color: #46b8da; -} -.profile-left-heading .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; - border-top-width: 1px; -} -.profile-left-heading .list-group .list-group-item:last-child { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.profile-left-body { - padding: 20px; - background-color: #464f63; - color: #9fa8bc; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.profile-left-body .panel-title { - color: #fff; - margin-bottom: 10px; - font-weight: 600; -} -.profile-left-body .profile-social > li a { - color: rgba(255, 255, 255, 0.7); - font-size: 28px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.profile-left-body .profile-social > li a:hover, -.profile-left-body .profile-social > li a:focus { - color: #fff; -} -.profile-btn-follow { - margin-top: 20px; -} -/***** POST ITEM *****/ -.panel-post-item .panel-heading { - padding: 15px 20px; -} -.panel-post-item .panel-heading .media-left { - padding-right: 15px; -} -.panel-post-item .panel-heading .media-object { - width: 42px; - padding: 2px; - border: 2px solid #dbdfe6; -} -.panel-post-item .panel-heading .media-heading { - font-size: 14px; - margin: 5px 0 0; -} -.panel-post-item .panel-heading .media-heading span { - font-weight: normal; - font-size: 12px; - color: #696c74; -} -.panel-post-item .panel-heading .media-usermeta { - margin: 2px 0 0; - font-size: 11px; -} -.panel-post-item .panel-heading .media-usermeta i { - vertical-align: top; - margin-top: 2px; - color: #aeb6c6; -} -.panel-post-item .panel-body .media-heading { - font-size: 14px; - font-weight: 500; -} -.panel-post-item .panel-body .media-heading a { - color: #259dab; -} -.panel-post-item .panel-body p + p { - margin-top: 10px; -} -.panel-post-item .panel-body .photos { - margin: 0; -} -.panel-post-item .panel-body .photos > div { - padding: 0; -} -.panel-post-item .panel-body .photos > div img { - padding: 1px; -} -.panel-post-item .panel-footer { - padding: 15px 20px; - border-top: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.panel-post-item .panel-footer .list-inline { - margin: 0; -} -.panel-post-item .panel-footer .list-inline > li { - padding: 0 8px; -} -.panel-post-item .panel-footer .list-inline > li:first-child { - padding-left: 0; -} -.panel-post-item .panel-footer .list-inline > li:last-child { - padding-right: 0; -} -.panel-post-item .panel-footer .list-inline > li a { - color: #545b68; - cursor: pointer; -} -.panel-post-item .panel-footer .list-inline > li a:hover, -.panel-post-item .panel-footer .list-inline > li a:focus { - color: #3d424c; -} -.panel-post-item .panel-footer .list-inline > li i { - vertical-align: baseline; - margin-right: 2px; -} -.panel-post-item .collapse .media-list, -.panel-post-item .collapsing .media-list { - background-color: #f0f1f4; - margin: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel-post-item .collapse .media-list .media, -.panel-post-item .collapsing .media-list .media { - border-top: 1px solid #fff; - padding: 10px 20px 0; -} -.panel-post-item .collapse .media-list .media + .media, -.panel-post-item .collapsing .media-list .media + .media { - margin-top: 10px; -} -.panel-post-item .collapse .media-list .media:last-child, -.panel-post-item .collapsing .media-list .media:last-child { - padding-bottom: 10px; -} -.panel-post-item .collapse .media-list .media-left, -.panel-post-item .collapsing .media-list .media-left { - padding-right: 10px; -} -.panel-post-item .collapse .media-list .media-object, -.panel-post-item .collapsing .media-list .media-object { - padding: 0; - border: 0; - width: 24px; -} -.panel-post-item .collapse .media-list .media-heading, -.panel-post-item .collapsing .media-list .media-heading { - font-weight: 500; - font-size: 12px; - margin: 2px 0 5px; -} -.panel-post-item .collapse .media-list .media-heading small, -.panel-post-item .collapsing .media-list .media-heading small { - font-size: 11px; - margin-left: 5px; - float: right; - color: #9fa8bc; -} -.panel-post-item .form-control { - border-color: transparent; - padding-left: 20px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -/***** NAVIGATION *****/ -.nav-dark-quirk { - background-color: #3b4354; -} -.nav-dark-quirk > li, -.nav-dark-quirk > li:last-child { - border-color: #464f63; -} -.nav-dark-quirk > li > a { - color: #818da7; -} -.nav-dark-quirk > li > a:hover, -.nav-dark-quirk > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-quirk-primary > li > a > i { - color: #2574ab; -} -.nav-quirk-primary > li.active > a, -.nav-quirk-primary > li.active > a:hover, -.nav-quirk-primary > li.active > a:focus { - color: #fff; - background-color: #2574ab; - background-image: none; -} -.nav-quirk-primary > li.active .children:before { - border-top-color: #2574ab; -} -.nav-quirk-primary .children > li.active > a { - color: #2574ab; -} -.nav-quirk-primary .children > li.active > a:before { - background-color: #2574ab; -} -.nav-quirk-primary .children > li.active > a:after { - border-color: #2574ab; -} -.nav-quirk-success > li > a > i { - color: #4daf7c; -} -.nav-quirk-success > li.active > a, -.nav-quirk-success > li.active > a:hover, -.nav-quirk-success > li.active > a:focus { - color: #fff; - background-color: #03a678; - background-image: none; -} -.nav-quirk-success > li.active .children:before { - border-top-color: #03a678; -} -.nav-quirk-success .children > li.active > a { - color: #03a678; -} -.nav-quirk-success .children > li.active > a:before { - background-color: #03a678; -} -.nav-quirk-success .children > li.active > a:after { - border-color: #03a678; -} -.nav-quirk-warning > li > a > i { - color: #e6ad5c; -} -.nav-quirk-warning > li.active > a, -.nav-quirk-warning > li.active > a:hover, -.nav-quirk-warning > li.active > a:focus { - color: #fff; - background-color: #e6ad5c; - background-image: none; -} -.nav-quirk-warning > li.active .children:before { - border-top-color: #e6ad5c; -} -.nav-quirk-warning .children > li.active > a { - color: #e6ad5c; -} -.nav-quirk-warning .children > li.active > a:before { - background-color: #e6ad5c; -} -.nav-quirk-warning .children > li.active > a:after { - border-color: #e6ad5c; -} -.nav-quirk-danger > li > a > i { - color: #d9534f; -} -.nav-quirk-danger > li.active > a, -.nav-quirk-danger > li.active > a:hover, -.nav-quirk-danger > li.active > a:focus { - color: #fff; - background-color: #d9534f; - background-image: none; -} -.nav-quirk-danger > li.active .children:before { - border-top-color: #d9534f; -} -.nav-quirk-danger .children > li.active > a { - color: #d9534f; -} -.nav-quirk-danger .children > li.active > a:before { - background-color: #d9534f; -} -.nav-quirk-danger .children > li.active > a:after { - border-color: #d9534f; -} -.nav-quirk-info > li > a > i { - color: #5bc0de; -} -.nav-quirk-info > li.active > a, -.nav-quirk-info > li.active > a:hover, -.nav-quirk-info > li.active > a:focus { - color: #fff; - background-color: #5bc0de; - background-image: none; -} -.nav-quirk-info > li.active .children:before { - border-top-color: #5bc0de; -} -.nav-quirk-info .children > li.active > a { - color: #5bc0de; -} -.nav-quirk-info .children > li.active > a:before { - background-color: #5bc0de; -} -.nav-quirk-info .children > li.active > a:after { - border-color: #5bc0de; -} -.nav-dark-primary { - background-color: #3b4354; -} -.nav-dark-primary > li > a > i { - color: #2574ab; -} -.nav-dark-primary > li, -.nav-dark-primary > li:last-child { - border-color: #464f63; -} -.nav-dark-primary > li > a { - color: #818da7; -} -.nav-dark-primary > li > a:hover, -.nav-dark-primary > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-primary > li.active > a, -.nav-dark-primary > li.active > a:hover, -.nav-dark-primary > li.active > a:focus { - color: #fff; - background-color: #2574ab; - background-image: none; -} -.nav-dark-primary > li.active .children:before { - border-top-color: #2574ab; -} -.nav-dark-success { - background-color: #3b4354; -} -.nav-dark-success > li > a > i { - color: #259dab; -} -.nav-dark-success > li, -.nav-dark-success > li:last-child { - border-color: #464f63; -} -.nav-dark-success > li > a { - color: #818da7; -} -.nav-dark-success > li > a:hover, -.nav-dark-success > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-success > li.active > a, -.nav-dark-success > li.active > a:hover, -.nav-dark-success > li.active > a:focus { - color: #fff; - background-color: #259dab; - background-image: none; -} -.nav-dark-success > li.active .children:before { - border-top-color: #259dab; -} -.nav-dark-warning { - background-color: #3b4354; -} -.nav-dark-warning > li > a > i { - color: #e6ad5c; -} -.nav-dark-warning > li, -.nav-dark-warning > li:last-child { - border-color: #464f63; -} -.nav-dark-warning > li > a { - color: #818da7; -} -.nav-dark-warning > li > a:hover, -.nav-dark-warning > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-warning > li.active > a, -.nav-dark-warning > li.active > a:hover, -.nav-dark-warning > li.active > a:focus { - color: #fff; - background-color: #e6ad5c; - background-image: none; -} -.nav-dark-warning > li.active .children:before { - border-top-color: #e6ad5c; -} -.nav-dark-danger { - background-color: #3b4354; -} -.nav-dark-danger > li > a > i { - color: #d9534f; -} -.nav-dark-danger > li, -.nav-dark-danger > li:last-child { - border-color: #464f63; -} -.nav-dark-danger > li > a { - color: #818da7; -} -.nav-dark-danger > li > a:hover, -.nav-dark-danger > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-danger > li.active > a, -.nav-dark-danger > li.active > a:hover, -.nav-dark-danger > li.active > a:focus { - color: #fff; - background-color: #d9534f; - background-image: none; -} -.nav-dark-danger > li.active .children:before { - border-top-color: #d9534f; -} -.nav-dark-info { - background-color: #3b4354; -} -.nav-dark-info > li > a > i { - color: #5bc0de; -} -.nav-dark-info > li, -.nav-dark-info > li:last-child { - border-color: #464f63; -} -.nav-dark-info > li > a { - color: #818da7; -} -.nav-dark-info > li > a:hover, -.nav-dark-info > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-info > li.active > a, -.nav-dark-info > li.active > a:hover, -.nav-dark-info > li.active > a:focus { - color: #fff; - background-color: #5bc0de; - background-image: none; -} -.nav-dark-info > li.active .children:before { - border-top-color: #5bc0de; -} -/***** PANEL WEATHER *****/ -.panel-weather .today-day { - font-weight: 200; - font-size: 25px; - color: #fff; - margin-top: 0; -} -.panel-weather .today-date { - font-weight: 200; - color: rgba(255, 255, 255, 0.6); -} -.panel-weather .today-cloud { - font-size: 72px; - text-align: center; - display: block; - margin-top: -10px; -} -/***** PANEL PRODUUCT *****/ -.panel-product .media-heading { - font-weight: 500; -} -.panel-product .media-heading > a { - color: #657390; -} -/***** BLOG ENTRY *****/ -.blog-entry .blog-category, -.blog-entry2 .blog-category { - text-transform: uppercase; - color: #d9534f; - font-size: 12px; - margin: 0 0 5 px; -} -.blog-entry .blog-title, -.blog-entry2 .blog-title { - margin-top: 0; - font-size: 18px; - font-weight: 500; - line-height: 24px; -} -.blog-entry .blog-title > a, -.blog-entry2 .blog-title > a { - color: #3b4354; -} -.blog-entry .blog-title > a:hover, -.blog-entry2 .blog-title > a:hover, -.blog-entry .blog-title > a:focus, -.blog-entry2 .blog-title > a:focus { - color: #505b72; -} -.blog-entry .blog-summary, -.blog-entry2 .blog-summary { - line-height: 18px; -} -.blog-entry { - margin: 0; - display: table; -} -.blog-entry > div { - display: table-cell; - float: none; -} -.blog-entry > div:first-child { - background-color: #fff; - padding: 20px; - vertical-align: top; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.blog-entry > div:last-child { - padding: 0; -} -.blog-entry > div:last-child > img { - width: 100%; - vertical-align: top; - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.blog-entry2 .blog-img { - height: 200px; - overflow: hidden; -} -.blog-entry2 .img-responsive { - width: 100%; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.blog-entry2 .blog-body { - background-color: #fff; - padding: 20px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -/***** ROW COLUMNS JOINING WITH EACH OTHER *****/ -.row-col-join { - margin: 0 0 20px; - display: table; - width: 100%; -} -.row-col-join > div { - display: table-cell; - float: none; - padding: 0; -} -.row-col-join > div:first-child { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.row-col-join > div:last-child { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.row-col-join > div .panel { - margin-bottom: 0; - background-color: transparent; -} -@media (max-width: 559px) { - .row-col-join > div { - display: block; - } -} -/***** DASHBOARD: PANEL ANNOUNCEMENTS *****/ -.panel-announcement { - background-color: #fff; - margin-bottom: 20px; -} -.panel-announcement .panel-heading { - padding-bottom: 5px; -} -.panel-announcement .panel-title { - color: #d9534f; -} -.panel-announcement .panel-body h2 { - margin: 0 0 10px; - font-weight: 500; - line-height: 24px; - font-size: 18px; - letter-spacing: normal; -} -.panel-announcement .panel-body h4 { - margin: 0; - font-weight: 400; - font-size: 12px; - color: rgba(38, 43, 54, 0.7); - line-height: 20px; -} -.panel-announcement .panel-body h4 > a { - color: #259dab; -} -.panel-announcement .panel-body h4 > a:hover, -.panel-announcement .panel-body h4 > a:focus { - color: #31c1d2; -} -.list-announcement .panel-body { - padding: 0; -} -.list-announcement .panel-body ul { - list-style: outside none none; - margin-bottom: 0; -} -.list-announcement .panel-body ul > li { - padding: 10px 20px; - border-bottom: 1px solid #eaecf0; - letter-spacing: normal; - min-height: 46px; -} -.list-announcement .panel-body ul > li a { - color: #262b36; - font-weight: 500; -} -.list-announcement .panel-body ul > li small { - margin-top: 4px; - display: block; - color: rgba(38, 43, 54, 0.45); -} -.list-announcement .panel-body ul > li small a { - font-weight: 400; - color: #259dab; - float: right; -} -.list-announcement .panel-footer { - padding: 14px 20px; - background-color: #f1f1f1; -} -/***** DASHBOARD: EARNINGS *****/ -.panel-earnings > div { - color: #505b72; -} -.panel-earnings > div:first-child { - background-color: #fff; -} -.panel-earnings > div:first-child .panel-title { - color: #d9534f; -} -@media (max-width: 560px) { - .panel-earnings > div:first-child { - border-top-right-radius: 2px; - border-bottom-left-radius: 0; - } -} -.panel-earnings > div:last-child { - background-color: #505b72; -} -.panel-earnings > div:last-child .panel-title { - color: #fff; -} -@media (max-width: 560px) { - .panel-earnings > div:last-child { - border-top-right-radius: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - } -} -@media (max-width: 560px) { - .panel-earnings > div { - display: block; - width: 100%; - } -} -.panel-earnings .panel { - background-color: transparent; -} -.panel-earnings .panel-heading { - padding-bottom: 5px; -} -.panel-earnings .earning-amount { - margin-top: 0; - font-size: 32px; -} -.panel-earnings .earning-today { - font-weight: 400; - font-size: 12px; - color: #259dab; - margin: 0; -} -.panel-earnings .list-group { - margin-top: 30px; - margin-bottom: 0; -} -.panel-earnings .list-group > .list-group-item { - background-color: transparent; - padding: 10px 0; - border-left: 0; - border-right: 0; - border-color: rgba(38, 43, 54, 0.2); -} -.panel-earnings .list-group > .list-group-item:first-child { - border-top: 0; - padding-top: 0; -} -.panel-earnings .list-group > .list-group-item:last-child { - border-bottom: 0; - padding-bottom: 0; -} -.panel-earnings .list-group > .list-group-item .pull-right { - font-weight: 700; - letter-spacing: 1px; - color: #3b4354; -} -.panel-earnings .body-chart { - height: 210px; -} -/***** DASHBOARD: QUICK PAGE ACCESS *****/ -.panel-quick-page { - margin: 0 0 20px; -} -.panel-quick-page > div { - padding: 0; -} -.panel-quick-page > div .panel { - border-radius: 0; - margin-left: 1px; - margin-bottom: 1px; -} -.panel-quick-page > div .panel:hover, -.panel-quick-page > div .panel:focus { - cursor: pointer; - position: relative; -} -@media (max-width: 360px) { - .panel-quick-page > div { - width: 50%; - } -} -@media (max-width: 560px) { - .panel-quick-page > div .panel-heading { - padding: 10px; - } -} -@media (max-width: 560px) { - .panel-quick-page > div .panel-title { - font-size: 11px; - } -} -.panel-quick-page > div:first-child .panel { - margin-left: 0; - border-top-left-radius: 2px; -} -@media (max-width: 360px) { - .panel-quick-page > div:nth-child(2) .panel { - border-top-right-radius: 2px; - } -} -@media (max-width: 991px) { - .panel-quick-page > div:nth-child(3) .panel { - border-top-right-radius: 2px; - } -} -@media (max-width: 360px) { - .panel-quick-page > div:nth-child(3) .panel { - border-top-right-radius: 0; - } -} -.panel-quick-page > div:nth-child(4) .panel { - border-top-right-radius: 2px; -} -@media (max-width: 991px) { - .panel-quick-page > div:nth-child(4) .panel { - margin-left: 0; - border-top-right-radius: 0; - } -} -.panel-quick-page > div:nth-child(5) .panel { - margin-left: 0; - border-bottom-left-radius: 2px; -} -@media (max-width: 991px) { - .panel-quick-page > div:nth-child(5) .panel { - margin-left: 1px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } -} -@media (max-width: 991px) { - .panel-quick-page > div:nth-child(7) .panel { - margin-left: 0; - border-bottom-left-radius: 2px; - } -} -@media (max-width: 360px) { - .panel-quick-page > div:nth-child(7) .panel { - border-bottom-left-radius: 0; - } -} -.panel-quick-page > div:last-child .panel { - border-bottom-right-radius: 2px; -} -@media (max-width: 360px) { - .panel-quick-page > div:nth-child(odd) > .panel { - margin-left: 0; - } - .panel-quick-page > div:nth-child(even) > .panel { - margin-left: 1px; - } - .panel-quick-page > div:last-child { - width: 100%; - } - .panel-quick-page > div:last-child > .panel { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - } -} -.panel-quick-page .hvr-shutter-out-vertical { - display: block; -} -.panel-quick-page .page-user > .panel { - background-color: #2ab0c0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-user > .panel:hover, -.panel-quick-page .page-user > .panel:focus { - background-color: #259dab; -} -.panel-quick-page .page-products > .panel { - background-color: #31b0d5; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-products > .panel:hover, -.panel-quick-page .page-products > .panel:focus { - background-color: #28a1c5; -} -.panel-quick-page .page-events > .panel { - background-color: #469bd7; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-events > .panel:hover, -.panel-quick-page .page-events > .panel:focus { - background-color: #2a82c0; -} -.panel-quick-page .page-messages > .panel { - background-color: #2a82c0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-messages > .panel:hover, -.panel-quick-page .page-messages > .panel:focus { - background-color: #2574ab; -} -.panel-quick-page .page-reports > .panel { - background-color: #de6489; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-reports > .panel:hover, -.panel-quick-page .page-reports > .panel:focus { - background-color: #d43a69; -} -.panel-quick-page .page-statistics > .panel { - background-color: #e27c79; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-statistics > .panel:hover, -.panel-quick-page .page-statistics > .panel:focus { - background-color: #d9534f; -} -.panel-quick-page .page-support > .panel { - background-color: #9d70e2; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-support > .panel:hover, -.panel-quick-page .page-support > .panel:focus { - background-color: #8046da; -} -.panel-quick-page .page-privacy > .panel { - background-color: #727f9c; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-privacy > .panel:hover, -.panel-quick-page .page-privacy > .panel:focus { - background-color: #5b6781; -} -.panel-quick-page .page-settings > .panel { - background-color: #657390; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-settings > .panel:hover, -.panel-quick-page .page-settings > .panel:focus { - background-color: #505b72; -} -.panel-quick-page .panel-heading { - padding: 15px 20px; -} -.panel-quick-page .panel-title { - color: #fff; -} -.panel-quick-page .panel-body { - padding-top: 0; -} -.panel-quick-page .page-icon { - margin: 0; - color: #fff; - font-size: 70px; - height: 70px; - line-height: 0; - text-align: center; -} -/***** PANEL TRAFFIC *****/ -.panel-site-traffic .panel-body .panel-title { - color: #818da7; - font-size: 11px; - margin: 3px 0 0; -} -@media (max-width: 480px) { - .panel-site-traffic .panel-body .row > div { - width: 100%; - float: none; - } - .panel-site-traffic .panel-body .row > div:before, - .panel-site-traffic .panel-body .row > div:after { - content: " "; - display: table; - } - .panel-site-traffic .panel-body .row > div:after { - clear: both; - } - .panel-site-traffic .panel-body .row > div:before, - .panel-site-traffic .panel-body .row > div:after { - content: " "; - display: table; - } - .panel-site-traffic .panel-body .row > div:after { - clear: both; - } - .panel-site-traffic .panel-body .row > div + div { - margin-top: 15px; - } -} -.panel-site-traffic .panel-body h3 { - margin: 0 0 3px; - font-size: 32px; -} -.panel-site-traffic .panel-body .icon { - font-size: 48px; - color: #fff; - margin-right: 20px; - border-radius: 2px; - width: 70px; - line-height: 54px; -} -.panel-site-traffic .panel-body .ion-stats-bars { - background-color: #2574ab; - padding: 7px 18px; -} -.panel-site-traffic .panel-body .ion-eye { - background-color: #5bc0de; - padding: 7px 15px; -} -.panel-site-traffic .panel-body .ion-clock { - background-color: #259dab; - padding: 7px 14px; -} -.panel-site-traffic .panel-body h5 { - margin: 0; - font-weight: 300; -} -/***** DASHBOARD: PANEL STATISTICS *****/ -.panel-statistics { - margin: 0 0 20px; -} -.panel-statistics .panel { - margin: 0; - border-radius: 0; - min-height: 130px; -} -.panel-statistics > div { - padding: 0; -} -.panel-statistics > div:first-child > .panel { - border-top-left-radius: 2px; -} -.panel-statistics > div:nth-child(2) > .panel { - border-top-right-radius: 2px; -} -.panel-statistics > div:nth-child(3) > .panel { - border-bottom-left-radius: 2px; -} -.panel-statistics > div:last-child > .panel { - border-bottom-right-radius: 2px; -} -.panel-statistics > div:nth-child(odd) > .panel { - margin-left: 0; -} -.panel-statistics > div:nth-child(3) > .panel, -.panel-statistics > div:last-child > .panel { - margin-bottom: 0; -} -@media (max-width: 767px) { - .panel-statistics > div:nth-child(2) > .panel { - margin-bottom: 1px; - border-top-right-radius: 0; - } - .panel-statistics > div:nth-child(3) > .panel { - border-bottom-left-radius: 0; - } - .panel-statistics > div:first-child > .panel { - border-top-right-radius: 2px; - } - .panel-statistics > div:last-child > .panel { - border-bottom-left-radius: 2px; - } -} -.panel-updates h3 { - margin: 5px 0 5px; - font-size: 26px; -} -.panel-updates .progress { - height: 5px; - margin-bottom: 15px; -} -.panel-updates p, -.panel-updates p + p { - margin: 0; - font-size: 11px; - letter-spacing: 0; - /*color: #505b72;*/ - color: #888; -} -.panel-updates.panel-success-full .panel-body .panel-title, -.panel-updates.panel-danger-full .panel-body .panel-title { - font-weight: 700; -} -.panel-updates.panel-success-full .progress, -.panel-updates.panel-danger-full .progress { - background-color: rgba(255, 255, 255, 0.3); -} -.panel-updates.panel-success-full .progress-bar, -.panel-updates.panel-danger-full .progress-bar { - background-color: #fff; -} -.panel-updates.panel-success-full p, -.panel-updates.panel-danger-full p { - color: #fff; -} -/***** MAIN PANEL *****/ -.mainpanel { - padding-top: 64px; -} -@media (min-width: 992px) { - .mainpanel { - margin-left: 280px; - } -} -@media (max-width: 991px) { - .mainpanel { - position: relative; - } -} -.breadcrumb-quirk { - padding: 0; - background-color: transparent; - margin-bottom: 20px; -} -.breadcrumb-quirk > li { - font-size: 12px; -} -.breadcrumb-quirk > li > a { - color: #545b68; -} -.breadcrumb-quirk > li > a:hover, -.breadcrumb-quirk > li > a:focus { - color: #3d424c; -} -.breadcrumb-quirk > li + li:before { - content: '\f105'; - font-family: 'FontAwesome'; - color: #818da7; - margin-right: 5px; -} -.breadcrumb-quirk > li i { - font-size: 14px; - display: inline-block; - vertical-align: top; - margin-top: 1px; -} -.breadcrumb-quirk > li.active { - color: #464f63; - font-weight: 500; -} -.contentpanel { - padding: 20px; - position: relative; -} -@media (max-width: 320px) { - .contentpanel { - padding-left: 10px; - padding-right: 10px; - } -} -.contentpanel:after { - clear: both; - display: block; - content: ''; -} -form .form-group:last-child { - margin-bottom: 0; -} -/* Checkbox */ -.ckbox, -.rdiobox { - font-weight: normal; - position: relative; - display: block; - line-height: 18px; -} -.ckbox span:before, -.ckbox span:after { - line-height: 18px; - position: absolute; -} -.ckbox span:before { - content: ''; - width: 14px; - height: 14px; - background-color: #fff; - border: 1px solid #dbdfe6; - border-radius: 1px; - top: 2px; - left: 0; -} -.ckbox span:after { - left: 2.5px; - top: 0; - content: '\f00c'; - font-family: 'FontAwesome'; - font-size: 9px; - color: #696c74; - display: none; -} -.ckbox input[type='checkbox'] { - opacity: 0; - margin: 0 5px 0 0; -} -.ckbox input[type='checkbox']:checked + span:before { - border-color: #ccd1db; -} -.ckbox input[type='checkbox']:checked + span:after { - display: block; -} -.ckbox input[type='checkbox'][disabled] + span, -.ckbox input[type='checkbox'][disabled] + span:before, -.ckbox input[type='checkbox'][disabled] + span:after { - opacity: .75; -} -.ckbox-inline, -.rdiobox-inline { - display: inline-block; -} -/* Checkbox color variant */ -.ckbox-primary input[type='checkbox']:checked + span:before { - background-color: #2574ab; - border-color: #2574ab; -} -.ckbox-primary input[type='checkbox']:checked + span:after { - color: #ffffff; -} -.ckbox-success input[type='checkbox']:checked + span:before { - background-color: #4daf7c; - border-color: #4daf7c; -} -.ckbox-success input[type='checkbox']:checked + span:after { - color: #ffffff; -} -.ckbox-warning input[type='checkbox']:checked + span:before { - background-color: #e6ad5c; - border-color: #e6ad5c; -} -.ckbox-warning input[type='checkbox']:checked + span:after { - color: #ffffff; -} -.ckbox-danger input[type='checkbox']:checked + span:before { - background-color: #d9534f; - border-color: #d9534f; -} -.ckbox-danger input[type='checkbox']:checked + span:after { - color: #ffffff; -} -.ckbox-info input[type='checkbox']:checked + span:before { - background-color: #5bc0de; - border-color: #5bc0de; -} -.ckbox-info input[type='checkbox']:checked + span:after { - color: #ffffff; -} -/* Radio Box */ -.rdiobox span:before, -.rdiobox span:after { - line-height: 18px; - position: absolute; -} -.rdiobox span:before { - content: ''; - width: 14px; - height: 14px; - background-color: #fff; - border: 1px solid #696c74; - border-radius: 50px; - top: 2px; - left: 0; -} -.rdiobox span:after { - content: ''; - width: 8px; - height: 8px; - background-color: #696c74; - border-radius: 50px; - top: 5px; - left: 3px; - display: none; -} -.rdiobox input[type='radio'] { - opacity: 0; - margin: 0 5px 0 0; -} -.rdiobox input[type='radio']:checked + span:before { - border-color: #666; -} -.rdiobox input[type='radio']:checked + span:after { - display: block; -} -.rdiobox input[type='radio'][disabled] + span, -.rdiobox input[type='radio'][disabled] + span:before, -.rdiobox input[type='radio'][disabled] + span:after { - opacity: .75; -} -/* Radio box color variant */ -.rdiobox-primary input[type='radio']:checked + span:before { - border-color: #2574ab; -} -.rdiobox-primary input[type='radio']:checked + span:after { - background-color: #2574ab; -} -.rdiobox-success input[type='radio']:checked + span:before { - border-color: #4daf7c; -} -.rdiobox-success input[type='radio']:checked + span:after { - background-color: #4daf7c; -} -.rdiobox-warning input[type='radio']:checked + span:before { - border-color: #e6ad5c; -} -.rdiobox-warning input[type='radio']:checked + span:after { - background-color: #e6ad5c; -} -.rdiobox-danger input[type='radio']:checked + span:before { - border-color: #d9534f; -} -.rdiobox-danger input[type='radio']:checked + span:after { - background-color: #d9534f; -} -.rdiobox-info input[type='radio']:checked + span:before { - border-color: #5bc0de; -} -.rdiobox-info input[type='radio']:checked + span:after { - background-color: #5bc0de; -} -/* Inside input group */ -.input-group-addon .ckbox, -.input-group-addon .rdiobox, -.input-group-addon .ckbox input, -.input-group-addon .rdiobox input { - margin: 0; -} -/* Time Picker */ -.timepicker { - width: 100px; -} -/* Form Validation */ -label.error { - color: #d9534f; - margin: 5px 0 0; - display: block; -} -div.error { - margin-bottom: 20px; -} -.form-control.error { - border-color: #d9534f; -} -.form-horizontal .control-label.nopaddingtop { - padding-top: 0; -} -/***** TEMPLATE BUTTONS *****/ -.btn-quirk { - text-transform: uppercase; - font-weight: 700; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - letter-spacing: .5px; -} -.btn-stroke { - background-color: transparent; - border-width: 2px; - padding: 9px 11px; -} -.btn-stroke:hover, -.btn-stroke:focus, -.btn-stroke.focus, -.btn-stroke:active, -.btn-stroke.active, -.open > .dropdown-toggle.btn-stroke { - background-color: transparent; -} -.btn-stroke.btn-primary { - border-color: #2574ab; - color: #2574ab; -} -.btn-stroke.btn-primary:hover, -.btn-stroke.btn-primary:focus, -.btn-stroke.btn-primary.focus, -.btn-stroke.btn-primary:active, -.btn-stroke.btn-primary.active, -.open > .dropdown-toggle.btn-stroke.btn-primary { - color: #1c5881; - border-color: #1c5881; -} -.btn-stroke.btn-success { - border-color: #4daf7c; - color: #4daf7c; -} -.btn-stroke.btn-success:hover, -.btn-stroke.btn-success:focus, -.btn-stroke.btn-success.focus, -.btn-stroke.btn-success:active, -.btn-stroke.btn-success.active, -.open > .dropdown-toggle.btn-stroke.btn-success { - color: #03a678; - border-color: #03a678; -} -.btn-stroke.btn-warning { - border-color: #e6ad5c; - color: #e6ad5c; -} -.btn-stroke.btn-warning:hover, -.btn-stroke.btn-warning:focus, -.btn-stroke.btn-warning.focus, -.btn-stroke.btn-warning:active, -.btn-stroke.btn-warning.active, -.open > .dropdown-toggle.btn-stroke.btn-warning { - color: #df9730; - border-color: #df9730; -} -.btn-stroke.btn-danger { - border-color: #d9534f; - color: #d9534f; -} -.btn-stroke.btn-danger:hover, -.btn-stroke.btn-danger:focus, -.btn-stroke.btn-danger.focus, -.btn-stroke.btn-danger:active, -.btn-stroke.btn-danger.active, -.open > .dropdown-toggle.btn-stroke.btn-danger { - color: #c9302c; - border-color: #c9302c; -} -.btn-stroke.btn-info { - border-color: #5bc0de; - color: #5bc0de; -} -.btn-stroke.btn-info:hover, -.btn-stroke.btn-info:focus, -.btn-stroke.btn-info.focus, -.btn-stroke.btn-info:active, -.btn-stroke.btn-info.active, -.open > .dropdown-toggle.btn-stroke.btn-info { - color: #31b0d5; - border-color: #31b0d5; -} -.btn-stroke:active { - background-color: transparent !important; -} -.btn-stroke-thin { - border-width: 1px; - font-weight: 600; -} -.btn-icon { - width: 38px; - height: 38px; - padding: 0; - border-radius: 100px; -} -.btn-icon.btn-stroke { - padding: 0; -} -.btn-wide { - min-width: 100px; -} -.btn-compose { - display: block; - margin: 0 15px; -} -.btn-default-active { - color: #ffffff; - background-color: #bdc3d1; - border-color: transparent; -} -.btn-default-active:focus, -.btn-default-active.focus { - color: #ffffff; - background-color: #a8b0c2; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default-active:hover { - color: #ffffff; - background-color: #aeb6c6; - border-color: rgba(0, 0, 0, 0); -} -.btn-default-active:active, -.btn-default-active.active, -.open > .dropdown-toggle.btn-default-active { - color: #ffffff; - background-color: #a8b0c2; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default-active:active:hover, -.btn-default-active.active:hover, -.open > .dropdown-toggle.btn-default-active:hover, -.btn-default-active:active:focus, -.btn-default-active.active:focus, -.open > .dropdown-toggle.btn-default-active:focus, -.btn-default-active:active.focus, -.btn-default-active.active.focus, -.open > .dropdown-toggle.btn-default-active.focus { - color: #ffffff; - background-color: #a8b0c2; - border-color: rgba(0, 0, 0, 0); -} -.btn-default-active:active, -.btn-default-active.active, -.open > .dropdown-toggle.btn-default-active { - background-image: none; -} -.btn-default-active.disabled, -.btn-default-active[disabled], -fieldset[disabled] .btn-default-active, -.btn-default-active.disabled:hover, -.btn-default-active[disabled]:hover, -fieldset[disabled] .btn-default-active:hover, -.btn-default-active.disabled:focus, -.btn-default-active[disabled]:focus, -fieldset[disabled] .btn-default-active:focus, -.btn-default-active.disabled.focus, -.btn-default-active[disabled].focus, -fieldset[disabled] .btn-default-active.focus, -.btn-default-active.disabled:active, -.btn-default-active[disabled]:active, -fieldset[disabled] .btn-default-active:active, -.btn-default-active.disabled.active, -.btn-default-active[disabled].active, -fieldset[disabled] .btn-default-active.active { - background-color: #bdc3d1; - border-color: transparent; -} -.btn-default-active .badge { - color: #bdc3d1; - background-color: #ffffff; -} -.btn-fb { - color: #ffffff; - background-color: #3a5795; - border-color: transparent; -} -.btn-fb:focus, -.btn-fb.focus { - color: #ffffff; - background-color: #30487b; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-fb:hover { - color: #ffffff; - background-color: #334c83; - border-color: rgba(0, 0, 0, 0); -} -.btn-fb:active, -.btn-fb.active, -.open > .dropdown-toggle.btn-fb { - color: #ffffff; - background-color: #30487b; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-fb:active:hover, -.btn-fb.active:hover, -.open > .dropdown-toggle.btn-fb:hover, -.btn-fb:active:focus, -.btn-fb.active:focus, -.open > .dropdown-toggle.btn-fb:focus, -.btn-fb:active.focus, -.btn-fb.active.focus, -.open > .dropdown-toggle.btn-fb.focus { - color: #ffffff; - background-color: #30487b; - border-color: rgba(0, 0, 0, 0); -} -.btn-fb:active, -.btn-fb.active, -.open > .dropdown-toggle.btn-fb { - background-image: none; -} -.btn-fb.disabled, -.btn-fb[disabled], -fieldset[disabled] .btn-fb, -.btn-fb.disabled:hover, -.btn-fb[disabled]:hover, -fieldset[disabled] .btn-fb:hover, -.btn-fb.disabled:focus, -.btn-fb[disabled]:focus, -fieldset[disabled] .btn-fb:focus, -.btn-fb.disabled.focus, -.btn-fb[disabled].focus, -fieldset[disabled] .btn-fb.focus, -.btn-fb.disabled:active, -.btn-fb[disabled]:active, -fieldset[disabled] .btn-fb:active, -.btn-fb.disabled.active, -.btn-fb[disabled].active, -fieldset[disabled] .btn-fb.active { - background-color: #3a5795; - border-color: transparent; -} -.btn-fb .badge { - color: #3a5795; - background-color: #ffffff; -} -/***** TABS & ACCORDIONS *****/ -.tab-side-wrapper { - background-color: #fff; - position: relative; - margin: 0 0 20px; - min-height: 136px; - border-radius: 2px; -} -.tab-side-wrapper .tab-left, -.tab-side-wrapper .tab-right { - padding: 0; - position: absolute; - bottom: 0; - top: 0; - background-color: #9fa8bc; -} -.tab-side-wrapper .tab-left { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.tab-side-wrapper .nav-stacked > li > a { - border-radius: 0; - text-transform: uppercase; - color: rgba(255, 255, 255, 0.8); - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-size: 12px; -} -.tab-side-wrapper .nav-stacked > li > a:hover, -.tab-side-wrapper .nav-stacked > li > a:focus { - color: #fff; - background-color: #909bb1; -} -.tab-side-wrapper .nav-stacked > li:first-child > a { - border-top-left-radius: 2px; -} -.tab-side-wrapper .nav-stacked > li:last-child > a { - border-bottom-left-radius: 2px; -} -.tab-side-wrapper .nav-stacked > li.active > a, -.tab-side-wrapper .nav-stacked > li.active > a:hover, -.tab-side-wrapper .nav-stacked > li.active > a:focus { - background-color: #fff; - color: #657390; -} -.tab-side-wrapper .nav-stacked > li + li { - margin: 0; -} -.tab-side-wrapper .tab-right { - right: 0; - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.tab-side-wrapper .tab-right .nav-stacked > li:first-child > a { - border-top-left-radius: 0; - border-top-right-radius: 2px; -} -.tab-side-wrapper .tab-right .nav-stacked > li:last-child > a { - border-bottom-left-radius: 0; - border-bottom-right-radius: 2px; -} -.tab-side-wrapper .tab-main { - padding: 0; -} -.tab-side-wrapper .tab-pane { - background-color: transparent; -} -.nav-primary { - background-color: #2574ab; -} -.nav-primary > li > a:hover, -.nav-primary > li > a:focus { - background-color: #206696; -} -.nav-primary > li.active > a, -.nav-primary > li.active > a:hover, -.nav-primary > li.active > a:focus { - color: #2574ab; -} -.nav-success { - background-color: #4daf7c; -} -.nav-success > li > a:hover, -.nav-success > li > a:focus { - background-color: #03a678; -} -.nav-success > li.active > a, -.nav-success > li.active > a:hover, -.nav-success > li.active > a:focus { - color: #03a678; -} -.nav-warning { - background-color: #e6ad5c; -} -.nav-warning > li > a:hover, -.nav-warning > li > a:focus { - background-color: #e3a246; -} -.nav-warning > li.active > a, -.nav-warning > li.active > a:hover, -.nav-warning > li.active > a:focus { - color: #e6ad5c; -} -.nav-danger { - background-color: #d9534f; -} -.nav-danger > li > a:hover, -.nav-danger > li > a:focus { - background-color: #d43f3a; -} -.nav-danger > li.active > a, -.nav-danger > li.active > a:hover, -.nav-danger > li.active > a:focus { - color: #d9534f; -} -.nav-info { - background-color: #5bc0de; -} -.nav-info > li > a:hover, -.nav-info > li > a:focus { - background-color: #46b8da; -} -.nav-info > li.active > a, -.nav-info > li.active > a:hover, -.nav-info > li.active > a:focus { - color: #5bc0de; -} -.nav-inverse { - background-color: #3b4354; -} -.nav-inverse > li > a:hover, -.nav-inverse > li > a:focus { - background-color: #313745; -} -.nav-inverse > li.active > a, -.nav-inverse > li.active > a:hover, -.nav-inverse > li.active > a:focus { - color: #3b4354; -} -.nav-line { - background-color: transparent; - border-bottom: 1px solid #dbdfe6; -} -.nav-line > li > a { - color: #657390; - padding-top: 0; - padding-bottom: 10px; -} -.nav-line > li > a:hover, -.nav-line > li > a:focus { - background-color: transparent; - color: #262b36; -} -@media (max-width: 480px) { - .nav-line > li > a { - padding-left: 5px; - padding-right: 5px; - } -} -.nav-line > li.active > a, -.nav-line > li.active > a:hover, -.nav-line > li.active > a:focus { - color: #259dab; - background-color: transparent; - -webkit-box-shadow: 0 1px 0 #259dab; - box-shadow: 0 1px 0 #259dab; -} -.nav-line + .tab-content > .tab-pane { - padding: 20px 0 0; - background-color: transparent; -} -.nav-line.nav-justified { - border-bottom: 1px solid #dbdfe6; -} -@media (max-width: 480px) { - .nav-line.nav-justified { - border-bottom: 0; - } -} -/***** GRAPHS & CHARTS *****/ -.tooltipflot { - background-color: rgba(0, 0, 0, 0.75); - font-size: 11px; - color: #fff; - padding: 3px 10px; - border-radius: 2px; -} -.jqstooltip { - min-height: 25px; - border: 0; - min-width: 30px; - height: auto !important; - width: auto !important; -} -.panel-morris .body-chart { - height: 300px; -} -.panel-morris .body-chart > svg { - width: 100% !important; -} -.tinystat { - display: inline-block; -} -.tinystat .chart { - margin-right: 5px; -} -.tinystat .chart, -.tinystat .datainfo { - display: inline-block; - vertical-align: middle; -} -.tinystat .text-muted { - text-transform: uppercase; - font-size: 10px; -} -.tinystat h4 { - margin: 0; - color: #262b36; - font-weight: bold; - line-height: normal; - font-size: 16px; -} -/***** PANELS & WIDGETS *****/ -.panel-options { - position: absolute; - top: 15px; - right: 20px; - padding: 0; - margin: 0; -} -.panel-options > li { - display: block; - float: left; - list-style: none; -} -.panel-options > li > a { - color: #bdc3d1; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-options > li > a > i { - display: inline-block; - vertical-align: middle; -} -.panel-options > li > a > i.fa-refresh { - font-size: 11px; -} -.panel-options > li > a > i.fa-remove { - font-size: 13px; -} -.panel-options > li > a:hover, -.panel-options > li > a:focus { - cursor: pointer; - color: #818da7; -} -.panel-options > li + li { - margin-left: 5px; -} -.panel-inverse { - border-color: transparent; -} -.panel-inverse > .panel-heading { - color: #ffffff; - background-color: #2a2a2a; - border-color: transparent; -} -.panel-inverse > .panel-heading + .panel-collapse > .panel-body { - border-top-color: transparent; -} -.panel-inverse > .panel-heading .badge { - color: #505b72; - background-color: #ffffff; -} -.panel-inverse > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: transparent; -} -.panel-default .panel-options > li > a, -.panel-primary .panel-options > li > a, -.panel-success .panel-options > li > a, -.panel-warning .panel-options > li > a, -.panel-danger .panel-options > li > a, -.panel-info .panel-options > li > a, -.panel-inverse .panel-options > li > a { - color: rgba(255, 255, 255, 0.5); -} -.panel-default .panel-options > li > a:hover, -.panel-primary .panel-options > li > a:hover, -.panel-success .panel-options > li > a:hover, -.panel-warning .panel-options > li > a:hover, -.panel-danger .panel-options > li > a:hover, -.panel-info .panel-options > li > a:hover, -.panel-inverse .panel-options > li > a:hover, -.panel-default .panel-options > li > a:focus, -.panel-primary .panel-options > li > a:focus, -.panel-success .panel-options > li > a:focus, -.panel-warning .panel-options > li > a:focus, -.panel-danger .panel-options > li > a:focus, -.panel-info .panel-options > li > a:focus, -.panel-inverse .panel-options > li > a:focus { - color: rgba(255, 255, 255, 0.8); -} -.panel-primary-full { - background-color: #2574ab; - color: rgba(255, 255, 255, 0.8); -} -.panel-primary-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-primary-full .panel-options > li > a:hover, -.panel-primary-full .panel-options > li > a:focus { - color: #fff; -} -.panel-primary-full .panel-heading { - background-color: transparent; -} -.panel-primary-full .panel-heading .panel-title { - color: #fff; -} -.panel-primary-full .form-control { - border-color: transparent; -} -.panel-primary-full .panel-body .panel-title, -.panel-primary-full .panel-body h1, -.panel-primary-full .panel-body h2, -.panel-primary-full .panel-body h3, -.panel-primary-full .panel-body h4, -.panel-primary-full .panel-body h5, -.panel-primary-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-primary-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-primary-full .panel-body a:hover, -.panel-primary-full .panel-body a:focus { - color: #fff; -} -.panel-primary-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-success-full { - background-color: #4daf7c; - color: rgba(255, 255, 255, 0.8); -} -.panel-success-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-success-full .panel-options > li > a:hover, -.panel-success-full .panel-options > li > a:focus { - color: #fff; -} -.panel-success-full .panel-heading { - background-color: transparent; -} -.panel-success-full .panel-heading .panel-title { - color: #fff; -} -.panel-success-full .form-control { - border-color: transparent; -} -.panel-success-full .panel-body .panel-title, -.panel-success-full .panel-body h1, -.panel-success-full .panel-body h2, -.panel-success-full .panel-body h3, -.panel-success-full .panel-body h4, -.panel-success-full .panel-body h5, -.panel-success-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-success-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-success-full .panel-body a:hover, -.panel-success-full .panel-body a:focus { - color: #fff; -} -.panel-success-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-warning-full { - background-color: #e6ad5c; - color: rgba(255, 255, 255, 0.8); -} -.panel-warning-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-warning-full .panel-options > li > a:hover, -.panel-warning-full .panel-options > li > a:focus { - color: #fff; -} -.panel-warning-full .panel-heading { - background-color: transparent; -} -.panel-warning-full .panel-heading .panel-title { - color: #fff; -} -.panel-warning-full .form-control { - border-color: transparent; -} -.panel-warning-full .panel-body .panel-title, -.panel-warning-full .panel-body h1, -.panel-warning-full .panel-body h2, -.panel-warning-full .panel-body h3, -.panel-warning-full .panel-body h4, -.panel-warning-full .panel-body h5, -.panel-warning-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-warning-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-warning-full .panel-body a:hover, -.panel-warning-full .panel-body a:focus { - color: #fff; -} -.panel-warning-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-danger-full { - background-color: #d9534f; - color: rgba(255, 255, 255, 0.8); -} -.panel-danger-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-danger-full .panel-options > li > a:hover, -.panel-danger-full .panel-options > li > a:focus { - color: #fff; -} -.panel-danger-full .panel-heading { - background-color: transparent; -} -.panel-danger-full .panel-heading .panel-title { - color: #fff; -} -.panel-danger-full .form-control { - border-color: transparent; -} -.panel-danger-full .panel-body .panel-title, -.panel-danger-full .panel-body h1, -.panel-danger-full .panel-body h2, -.panel-danger-full .panel-body h3, -.panel-danger-full .panel-body h4, -.panel-danger-full .panel-body h5, -.panel-danger-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-danger-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-danger-full .panel-body a:hover, -.panel-danger-full .panel-body a:focus { - color: #fff; -} -.panel-danger-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-info-full { - background-color: #5bc0de; - color: rgba(255, 255, 255, 0.8); -} -.panel-info-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-info-full .panel-options > li > a:hover, -.panel-info-full .panel-options > li > a:focus { - color: #fff; -} -.panel-info-full .panel-heading { - background-color: transparent; -} -.panel-info-full .panel-heading .panel-title { - color: #fff; -} -.panel-info-full .form-control { - border-color: transparent; -} -.panel-info-full .panel-body .panel-title, -.panel-info-full .panel-body h1, -.panel-info-full .panel-body h2, -.panel-info-full .panel-body h3, -.panel-info-full .panel-body h4, -.panel-info-full .panel-body h5, -.panel-info-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-info-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-info-full .panel-body a:hover, -.panel-info-full .panel-body a:focus { - color: #fff; -} -.panel-info-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-inverse-full { - /*background-color: #262b36;*/ - background-color: #2a2a2a; - color: rgba(255, 255, 255, 0.8); -} -.panel-inverse-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-inverse-full .panel-options > li > a:hover, -.panel-inverse-full .panel-options > li > a:focus { - color: #fff; -} -.panel-inverse-full .panel-heading { - background-color: transparent; -} -.panel-inverse-full .panel-heading .panel-title { - color: #fff; -} -.panel-inverse-full .form-control { - border-color: transparent; -} -.panel-inverse-full .panel-body .panel-title, -.panel-inverse-full .panel-body h1, -.panel-inverse-full .panel-body h2, -.panel-inverse-full .panel-body h3, -.panel-inverse-full .panel-body h4, -.panel-inverse-full .panel-body h5, -.panel-inverse-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-inverse-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-inverse-full .panel-body a:hover, -.panel-inverse-full .panel-body a:focus { - color: #fff; -} -.panel-inverse-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.or { - color: rgba(255, 255, 255, 0.8); - font-size: 11px; - text-align: center; - margin: 20px 0; - font-weight: 700; - letter-spacing: 1px; - text-transform: uppercase; - position: relative; -} -.or:after { - content: ''; - position: absolute; - width: 45%; - height: 1px; - background-color: rgba(255, 255, 255, 0.1); - top: 8px; - right: 0; -} -.or:before { - content: ''; - position: absolute; - width: 45%; - height: 1px; - background-color: rgba(255, 255, 255, 0.1); - top: 8px; - left: 0; -} -.bg-white { - background-color: #fff; -} -.page-title { - font-weight: 400; - margin: 0 0 20px; - line-height: normal; - color: #262b36; - padding: 15px 0 17px; - border-top: 1px solid #c3c9d5; - border-bottom: 1px solid #c3c9d5; -} -.well.primary, -.well.success, -.well.warning, -.well.danger, -.well.info, -.well.inverse { - color: rgba(255, 255, 255, 0.8); -} -.well.primary h1, -.well.success h1, -.well.warning h1, -.well.danger h1, -.well.info h1, -.well.inverse h1, -.well.primary h2, -.well.success h2, -.well.warning h2, -.well.danger h2, -.well.info h2, -.well.inverse h2, -.well.primary h3, -.well.success h3, -.well.warning h3, -.well.danger h3, -.well.info h3, -.well.inverse h3, -.well.primary h4, -.well.success h4, -.well.warning h4, -.well.danger h4, -.well.info h4, -.well.inverse h4, -.well.primary h5, -.well.success h5, -.well.warning h5, -.well.danger h5, -.well.info h5, -.well.inverse h5, -.well.primary h6, -.well.success h6, -.well.warning h6, -.well.danger h6, -.well.info h6, -.well.inverse h6 { - color: #fff; - margin-top: 0; - font-weight: 500; -} -.well.primary p:last-child, -.well.success p:last-child, -.well.warning p:last-child, -.well.danger p:last-child, -.well.info p:last-child, -.well.inverse p:last-child { - margin-bottom: 0; -} -.well.primary { - background-color: #2574ab; -} -.well.success { - background-color: #259dab; -} -.well.warning { - background-color: #e6ad5c; -} -.well.danger { - background-color: #d9534f; -} -.well.info { - background-color: #5bc0de; -} -.well.inverse { - background-color: #262b36; -} -.email-options { - position: fixed; - top: 64px; - left: 0; - width: 360px; - padding: 12px 15px; - background-color: #bac1ce; -} -@media (min-width: 992px) { - .email-options { - left: 280px; - } -} -@media (max-width: 768px) { - .email-options { - width: 320px; - } -} -@media (max-width: 640px) { - .email-options { - position: relative; - width: auto; - top: 0; - } -} -.email-options .settings { - position: absolute; - top: 6px; - right: 5px; -} -.email-options .settings > a { - color: #5d616d; - font-size: 14px; - padding: 2px 6px 6px; - display: block; - float: left; - border-radius: 2px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.email-options .settings > a:hover, -.email-options .settings > a:focus { - background-color: #9da7b8; - color: #505b72; -} -.email-options .settings > a > i { - width: 16px; - text-align: center; - vertical-align: middle; - display: inline-block; -} -.email-options .settings:hover, -.email-options .settings:focus { - color: #262b36; -} -.markstar { - cursor: pointer; - font-size: 16px; - color: #9fa8bc; -} -.markstar.starred { - color: #e6ad5c; -} -.emailcontent { - position: fixed; - top: 64px; - left: 0; - bottom: 0; - width: 360px; - margin-top: 42px; - overflow-y: auto; - overflow-x: hidden; -} -@media (min-width: 992px) { - .emailcontent { - left: 280px; - } -} -@media (max-width: 768px) { - .emailcontent { - width: 320px; - } -} -@media (max-width: 640px) { - .emailcontent { - position: relative; - width: auto; - margin-top: 0; - top: 0; - } -} -.emailcontent .list-left { - float: left; -} -.emailcontent .list-left .markstar { - display: block; - margin-top: 5px; -} -.emailcontent .list-left .attachment { - display: block; - font-size: 14px; - color: #9fa8bc; -} -.emailcontent .ckbox { - display: inline-block; - margin-bottom: 0; -} -.emailcontent .ckbox span:before { - border: 0; -} -.emailcontent .list-group .list-group-item { - border-left: 0; - border-right: 0; - padding-top: 20px; - padding-bottom: 20px; - background-color: transparent; - border-color: #fff; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.emailcontent .list-group .list-group-item:hover, -.emailcontent .list-group .list-group-item:focus { - cursor: pointer; - background-color: #e4e7ec; -} -.emailcontent .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.emailcontent .list-group .list-group-item:last-child { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.emailcontent .list-group .list-group-item .media { - margin-top: 0; - padding-left: 10px; -} -.emailcontent .list-group .list-group-item .media .media-left { - padding-right: 10px; -} -.emailcontent .list-group .list-group-item .media .media-object { - width: 32px; -} -.emailcontent .list-group .list-group-item .media .media-body h5:not(.media-heading) { - margin: 0; - color: #3b4354; - font-size: 13px; - font-weight: 500; -} -.emailcontent .list-group .list-group-item .media .media-body h5.media-heading { - margin-bottom: 3px; - font-weight: normal; - font-size: 12px; - color: #505b72; -} -.emailcontent .list-group .list-group-item .media .media-body span { - font-size: 11px; - color: #909bb1; - margin-top: -2px; -} -.emailcontent .list-group .list-group-item .media p { - margin: 8px 0 0; - color: #505b72; - font-size: 12px; -} -.emailcontent .list-group .list-group-item.unread { - background-color: #fcfcfd; -} -.emailcontent .list-group .list-group-item.unread .ckbox span:before { - border: 1px solid #d8dce3; -} -.emailcontent .list-group .list-group-item.unread + .unread { - border-color: #eaecf0; -} -.emailcontent .list-group .list-group-item.active { - background-color: #d8f3f7; -} -.emailcontent .list-group .list-group-item.active .media-body h5 { - color: #fff; -} -.emailcontent .list-group .list-group-item.selected { - background-color: #85dae4; -} -.emailcontent .list-group .list-group-item.selected.active .ckbox span:before { - border: 0; -} -.nomail { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 300; - color: #bdc3d1; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - text-align: center; -} -@media (max-width: 992px) { - .nomail { - font-size: 18px; - } -} -.contentpanel.emailpanel { - background-color: #fff; - position: fixed; - top: 64px; - left: 360px; - bottom: 0; - right: 0; - overflow: auto; -} -@media (min-width: 992px) { - .contentpanel.emailpanel { - left: 580px; - } -} -@media (max-width: 768px) { - .contentpanel.emailpanel { - left: 320px; - } -} -@media (max-width: 640px) { - .contentpanel.emailpanel { - position: relative; - display: none; - } -} -.email-header .media { - margin-top: 0; -} -.email-header .media .media-left { - padding-right: 10px; -} -.email-header .media .media-object { - width: 36px; -} -.email-header .media .media-heading { - font-size: 14px; -} -@media (max-width: 992px) { - .email-header .pull-right { - width: 100%; - float: none !important; - border-bottom: 1px solid #dbdfe6; - padding-bottom: 15px; - margin-bottom: 20px; - } - .email-header .media { - width: 100%; - } -} -.email-subject { - font-weight: normal; - margin-bottom: 20px; -} -.email-subject .markstar { - margin-left: 5px; - font-size: 16px; -} -.email-subject .markstar > i { - vertical-align: top; - margin-top: 2px; -} -.list-attachments { - margin-top: 10px; -} -.list-attachments > li i { - display: inline-block; - vertical-align: top; - font-size: 14px; - margin-right: 5px; -} -.list-attachments > li + li { - margin-top: 8px; -} -.email-editor .note-editor { - border-color: transparent; -} -.email-editor .note-editor .note-toolbar { - background-color: transparent; - padding-bottom: 15px; - border-bottom-color: transparent; -} -.email-editor .note-editor .note-toolbar > .btn-group:first-child { - margin-left: 0; -} -.email-editor .note-editor .note-editable { - border: 1px solid #bdc3d1; -} -.email-editor .note-editor .note-statusbar { - background-color: transparent; -} -.email-editor .note-editor .note-statusbar .note-resizebar { - border-top: 0; -} -.table > thead > tr > td, -.table > thead > tr > th { - padding-top: 13px; - padding-bottom: 13px; -} -.table > .success > tr > th, -.table > .success > tr > td { - background-color: #505b72; - color: #fff; - border-color: rgba(255, 255, 255, 0.25); -} -.table > .success > tr:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.table > .success > tr:first-child > th:first-child, -.table > .success > tr:first-child > td:first-child { - border-top-left-radius: 0; -} -.table > .success > tr:first-child > th:last-child, -.table > .success > tr:first-child > td:last-child { - border-top-right-radius: 0; -} -.table-options { - list-style: none; - margin: 0; - padding: 0; - text-align: center; -} -.table-options > li { - display: inline-block; - margin-left: 5px; -} -.table-options > li:first-child { - margin-left: 0; -} -.table-options > li > a { - color: #9fa8bc; - font-size: 14px; - line-height: 0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.table-options > li > a > i { - line-height: 0; -} -.table-options > li > a:hover, -.table-options > li > a:focus { - color: #657390; -} -.table-striped-col > thead > tr th:nth-of-type(even), -.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-striped-col > thead > tr td:nth-of-type(even), -.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #e4e7ec; -} -.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #f6f7f8; -} -.table-primary { - background-color: #e9f3fa; -} -.table-primary > thead > tr > th, -.table-primary > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #2574ab; - color: #fff; -} -.table-primary > tbody > tr > th, -.table-primary > tbody > tr > td { - color: rgba(19, 59, 87, 0.8); -} -.table-primary > tbody > tr.info > th, -.table-primary > tbody > tr.info > td { - background-color: #d0e6f5; -} -.table-primary.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #d8eaf7; -} -.table-primary.table-hover > tbody > tr:hover { - background-color: #d0e6f5; -} -.table-primary.table-hover > tbody > tr.info:hover > th, -.table-primary.table-hover > tbody > tr.info:hover > td { - background-color: #c8e1f3; -} -.table-primary.table-striped-col > thead > tr th:nth-of-type(even), -.table-primary.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-primary.table-striped-col > thead > tr td:nth-of-type(even), -.table-primary.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #226b9e; -} -.table-primary.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-primary.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #d8eaf7; -} -.table-success { - background-color: #e9f8fa; -} -.table-success > thead > tr > th, -.table-success > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #259dab; - color: #fff; -} -.table-success > tbody > tr > th, -.table-success > tbody > tr > td { - color: rgba(19, 80, 87, 0.8); -} -.table-success > tbody > tr.info > th, -.table-success > tbody > tr.info > td { - background-color: #d0f1f5; -} -.table-success.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #d8f3f7; -} -.table-success.table-hover > tbody > tr:hover { - background-color: #d0f1f5; -} -.table-success.table-hover > tbody > tr.info:hover > th, -.table-success.table-hover > tbody > tr.info:hover > td { - background-color: #c8eef3; -} -.table-success.table-striped-col > thead > tr th:nth-of-type(even), -.table-success.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-success.table-striped-col > thead > tr td:nth-of-type(even), -.table-success.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #22919e; -} -.table-success.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-success.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #d8f3f7; -} -.table-warning { - background-color: #fdf9f2; -} -.table-warning > thead > tr > th, -.table-warning > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #bf7c1d; - color: #fff; -} -.table-warning > tbody > tr > th, -.table-warning > tbody > tr > td { - color: rgba(102, 67, 16, 0.8); -} -.table-warning > tbody > tr.info > th, -.table-warning > tbody > tr.info > td { - background-color: #f9ebd8; -} -.table-warning.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #faf0e1; -} -.table-warning.table-hover > tbody > tr:hover { - background-color: #f9ebd8; -} -.table-warning.table-hover > tbody > tr.info:hover > th, -.table-warning.table-hover > tbody > tr.info:hover > td { - background-color: #f8e7cf; -} -.table-warning.table-striped-col > thead > tr th:nth-of-type(even), -.table-warning.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-warning.table-striped-col > thead > tr td:nth-of-type(even), -.table-warning.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #b1731b; -} -.table-warning.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-warning.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #faf0e1; -} -.table-danger { - background-color: #fcf3f3; -} -.table-danger > thead > tr > th, -.table-danger > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #b52b27; - color: #fff; -} -.table-danger > tbody > tr > th, -.table-danger > tbody > tr > td { - color: rgba(97, 23, 21, 0.8); -} -.table-danger > tbody > tr.info > th, -.table-danger > tbody > tr.info > td { - background-color: #f7dad9; -} -.table-danger.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9e2e2; -} -.table-danger.table-hover > tbody > tr:hover { - background-color: #f7dad9; -} -.table-danger.table-hover > tbody > tr.info:hover > th, -.table-danger.table-hover > tbody > tr.info:hover > td { - background-color: #f5d2d1; -} -.table-danger.table-striped-col > thead > tr th:nth-of-type(even), -.table-danger.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-danger.table-striped-col > thead > tr td:nth-of-type(even), -.table-danger.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #a82824; -} -.table-danger.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-danger.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #f9e2e2; -} -.table-inverse { - background-color: #e7e9ee; -} -.table-inverse > thead > tr > th, -.table-inverse > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #505b72; - color: #fff; -} -.table-inverse > tbody > tr > th, -.table-inverse > tbody > tr > td { - color: rgba(38, 43, 54, 0.8); -} -.table-inverse > tbody > tr.info > th, -.table-inverse > tbody > tr.info > td { - background-color: #d5d9e2; -} -.table-inverse.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #dbdfe6; -} -.table-inverse.table-hover > tbody > tr:hover { - background-color: #d5d9e2; -} -.table-inverse.table-hover > tbody > tr.info:hover > th, -.table-inverse.table-hover > tbody > tr.info:hover > td { - background-color: #cfd4dd; -} -.table-inverse.table-striped-col > thead > tr th:nth-of-type(even), -.table-inverse.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-inverse.table-striped-col > thead > tr td:nth-of-type(even), -.table-inverse.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #4a5469; -} -.table-inverse.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-inverse.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #dbdfe6; -} -.map-wrapper { - background-color: #c9cfd8; - border-radius: 2px; - height: 300px; -} -.panel-map-location .map-wrapper { - height: 250px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.panel-map-location strong { - display: block; - font-size: 16px; - color: #3b4354; -} -.panel-map-location .media { - margin-bottom: 20px; -} -.panel-map-location .media address { - margin: 0; -} -.panel-map-location .media .media-heading { - font-size: 14px; - margin-bottom: 8px; -} -.panel-map-location .btn-group > .btn > i { - line-height: normal; -} -.panel-map-sidebar .row { - margin: 0; -} -.panel-map-sidebar .map-sidebar { - padding-left: 0; - padding-right: 0; -} -.panel-map-sidebar .main { - padding: 10px 0 10px 10px; -} -.panel-map-sidebar form { - margin-top: 15px; -} -.panel-map-sidebar form .control-label { - display: block; -} -.panel-map-sidebar form .form-group { - margin-bottom: 15px; -} -.panel-map-sidebar .btn-group > .btn { - min-height: 38px; -} -.panel-map-sidebar .map-wrapper { - height: 408px; -} -/********** PAGES **********/ -/***** ASSET MANAGER *****/ -.well-asset-options { - background-color: #505b72; -} -@media (max-width: 360px) { - .well-asset-options { - display: none; - } -} -.well-asset-options .btn-toolbar { - margin: 0; -} -@media (max-width: 1024px) { - .well-asset-options .btn-toolbar { - float: none !important; - margin-bottom: 20px; - } -} -@media (max-width: 1024px) { - .well-asset-options .btn { - padding-left: 10px; - padding-right: 10px; - } -} -.btn-toolbar-media-manager { - margin-bottom: 20px; -} -.btn-toolbar-media-manager .btn { - border-color: transparent; -} -.btn-toolbar-media-manager .btn:hover, -.btn-toolbar-media-manager .btn:focus { - border-color: transparent; -} -.btn-toolbar-media-manager .btn > i { - font-size: 14px; - vertical-align: baseline; - line-height: 0; - margin-right: 5px; -} -.btn-toolbar-media-manager .btn + .btn { - margin-left: 1px; -} -.filemanager .thmb { - background-color: #fff; - border-radius: 2px; - padding: 10px; - margin-bottom: 20px; - position: relative; -} -.filemanager .thmb:after { - clear: both; - display: block; - content: ''; -} -.filemanager .ckbox { - position: absolute; - top: 15px; - left: 15px; - display: none; -} -.filemanager .ckbox span:before { - border: 0; -} -.filemanager .fm-group { - position: absolute; - top: 15px; - right: 15px; - display: none; -} -.filemanager .fm-toggle { - padding: 1px 4px; - line-height: normal; - background-color: #fff; - border-radius: 2px; - border: 0; -} -.filemanager .fm-toggle:hover, -.filemanager .fm-toggle:focus, -.filemanager .fm-toggle:active { - background-color: #fff !important; -} -.filemanager .fm-menu { - border-color: #dbdfe6; - min-width: 120px; -} -.filemanager .fm-menu a { - color: #696c74; -} -.filemanager .fm-menu i { - margin-right: 7px; - width: 16px; - font-size: 14px; -} -.filemanager .thmb-prev { - background-color: #eee; - overflow: hidden; -} -.filemanager .thmb-prev a { - display: block; -} -.filemanager .fm-title { - margin-bottom: 2px; - font-weight: 500; -} -.filemanager .fm-title a { - overflow-x: hidden; - text-overflow: ellipsis; - display: block; -} -.fm-sidebar { - padding-left: 10px; -} -.fm-sidebar .panel-title a { - color: #9fa8bc; - font-size: 11px; - font-weight: 600; - letter-spacing: normal; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.fm-sidebar .panel-title a:hover { - text-decoration: none; - color: #818da7; -} -.fm-sidebar .tag-list { - list-style: none; - padding: 0; - margin: 0; -} -.fm-sidebar .tag-list li { - float: left; - margin-right: 5px; - margin-bottom: 5px; -} -.fm-sidebar .tag-list li a { - display: block; - padding: 2px 7px; - font-size: 11px; - background-color: #fcfcfc; - border-radius: 2px; - color: #666; -} -.fm-sidebar .tag-list li a:hover { - color: #fff; - text-decoration: none; - background-color: #2574ab; -} -.folder-list { - list-style: none; - padding: 0; - margin: 0; -} -.folder-list li { - display: block; - border-bottom: 1px solid #eaecf0; -} -.folder-list li a { - display: block; - padding: 9px 0 10px; - color: #657390; - font-weight: 500; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.folder-list li a:hover { - color: #262b36; - text-decoration: none; -} -.folder-list li i { - margin-right: 10px; - width: 16px; - font-size: 14px; -} -.folder-list li:first-child > a { - padding-top: 0; -} -.folder-list li:last-child { - border-bottom: 0; -} -.folder-list li:last-child > a { - padding-bottom: 0; -} -/****** PEOPLE DIRECTORY ******/ -.people-list .people-options { - padding: 15px; - margin-bottom: 20px; - background-color: #464f63; - border-radius: 2px; -} -@media (max-width: 480px) { - .people-list .people-options .btn-toolbar { - display: none; - } -} -.people-list .people-options .btn-toolbar .btn { - font-size: 11px; -} -.people-list .people-options .btn-toolbar .btn.btn-danger { - color: rgba(255, 255, 255, 0.9); -} -.people-list .people-options .btn-toolbar .btn > i { - font-size: 14px; -} -.people-list .people-options .btn-default { - border-color: transparent; -} -.people-list .people-options .btn-default:hover, -.people-list .people-options .btn-default:focus { - border-color: transparent; -} -.people-list .people-count { - padding-top: 10px; - font-weight: 400; - color: #9fa8bc; -} -.people-list .people-count > strong { - font-weight: 500; - color: #dbdfe6; - margin: 0 3px; -} -.people-list .people-pager { - margin-left: 15px; -} -.people-list .people-pager > .btn { - font-size: 14px; - margin-left: 1px; - line-height: 17px; - border-color: transparent; -} -.people-list .people-pager > .btn:first-child { - margin-left: 0; -} -.people-list .people-pager > .btn:hover, -.people-list .people-pager > .btn:focus { - border-color: transparent; -} -/***** TIMELINE *****/ -.timeline-wrapper { - margin-left: 123px; - position: relative; - border-left: 2px solid #657390; - padding-left: 40px; -} -@media (max-width: 640px) { - .timeline-wrapper { - border-left: 0; - padding-left: 0; - margin-left: 0; - } -} -.timeline-wrapper .timeline-date { - position: relative; - background-color: #657390; - width: 250px; - padding: 10px 25px; - text-transform: uppercase; - font-weight: 600; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - color: #fff; - text-align: center; - letter-spacing: .5px; - border-radius: 2px; - margin-bottom: 40px; - margin-left: -165px; -} -@media (max-width: 640px) { - .timeline-wrapper .timeline-date { - padding-left: 10px; - padding-right: 10px; - width: auto; - margin-left: 0; - margin-top: 20px; - } -} -.timeline-wrapper .timeline-date > a { - color: rgba(255, 255, 255, 0.8); - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.timeline-wrapper .timeline-date > a:hover, -.timeline-wrapper .timeline-date > a:focus { - color: #fff; -} -.timeline-wrapper .panel-post-item { - position: relative; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item { - margin-bottom: 0; - margin-top: 70px; - } -} -.timeline-wrapper .panel-post-item:before { - content: ''; - width: 40px; - height: 40px; - border-radius: 100px; - border: 2px solid #657390; - position: absolute; - top: 15px; - left: -62px; - background-color: #d8dce3; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item:before { - top: -55px; - left: 0; - } -} -.timeline-wrapper .panel-post-item .panel-heading:before { - border-right: 8px solid #fff; - border-top: 8px solid transparent; - border-bottom: 8px solid transparent; - content: ""; - display: inline-block; - left: -8px; - position: absolute; - top: 27px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item .panel-heading:before { - display: none; - } -} -.timeline-wrapper .panel-post-item:after { - font-family: 'FontAwesome'; - position: absolute; - left: -48px; - font-size: 14px; - color: #657390; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item:after { - left: 13px; - } -} -.timeline-wrapper .panel-post-item.status:after { - content: '\f040'; - top: 25px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item.status:after { - top: -45px; - } -} -.timeline-wrapper .panel-post-item.commented:after { - content: '\f075'; - top: 24px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item.commented:after { - top: -46px; - } -} -.timeline-wrapper .panel-post-item.pictures:after { - content: '\f03e'; - top: 25px; - left: -50px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item.pictures:after { - left: 12px; - top: -45px; - } -} -.timeline-wrapper .panel-post-item.twitter:after { - content: '\f099'; - top: 25px; - left: -49px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item.twitter:after { - left: 13px; - top: -45px; - } -} -.timeline-wrapper .panel-post-item .media-time { - position: absolute; - top: 20px; - left: -225px; - font-size: 22px; - letter-spacing: normal; - text-align: right; - font-weight: 400; - color: #505b72; - width: 150px; - text-transform: uppercase; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item .media-time { - left: 0; - top: -50px; - } -} -/***** PROFILE *****/ -.profile-wrapper { - margin: 0; - display: table; - width: 100%; -} -@media (max-width: 1024px) { - .profile-wrapper { - display: block; - width: auto; - } -} -.profile-wrapper .profile-left, -.profile-wrapper .profile-right, -.profile-wrapper .profile-sidebar { - padding: 0; - float: none; - display: table-cell; - vertical-align: top; -} -@media (max-width: 991px) { - .profile-wrapper .profile-left, - .profile-wrapper .profile-right, - .profile-wrapper .profile-sidebar { - display: block; - } -} -.profile-wrapper .profile-left { - background-color: #464f63; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -@media (max-width: 1024px) { - .profile-wrapper .profile-left { - width: 30%; - } -} -@media (max-width: 991px) { - .profile-wrapper .profile-left { - display: table; - width: 100%; - } - .profile-wrapper .profile-left .profile-left-heading, - .profile-wrapper .profile-left .profile-left-body { - display: table-cell; - vertical-align: top; - } - .profile-wrapper .profile-left .profile-left-heading { - width: 40%; - } - .profile-wrapper .profile-left .profile-left-body { - width: 60%; - } -} -@media (max-width: 480px) { - .profile-wrapper .profile-left .profile-left-heading, - .profile-wrapper .profile-left .profile-left-body { - display: block; - width: auto; - } -} -.profile-wrapper .profile-right { - background-color: #fff; - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -@media (max-width: 1024px) { - .profile-wrapper .profile-right { - width: 70%; - } -} -@media (max-width: 991px) { - .profile-wrapper .profile-right { - width: 100%; - margin-top: 20px; - border-top-right-radius: 2px; - border-top-left-radius: 2px; - } -} -.profile-wrapper .profile-right .profile-right-body { - background-color: transparent; - padding: 20px; -} -.profile-wrapper .profile-right .profile-right-body .panel { - border-bottom: 1px solid #dbdfe6; - padding-bottom: 40px; - margin-bottom: 35px; -} -.profile-wrapper .profile-right .profile-right-body .panel-heading { - padding: 0 0 15px; -} -.profile-wrapper .profile-right .profile-right-body .panel-body { - padding: 0 0 15px; - line-height: 18px; -} -.profile-wrapper .profile-right .profile-right-body .panel-footer { - padding: 0; - background-color: transparent; -} -.profile-wrapper .profile-right .profile-right-body .form-group { - margin: 15px 0 0; -} -.profile-wrapper .profile-right .profile-right-body .form-control { - border-color: #bdc3d1; - padding-left: 12px; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.profile-wrapper .profile-sidebar { - padding-left: 20px; -} -@media (min-width: 992px) and (max-width: 1024px) { - .profile-wrapper .profile-sidebar { - width: 100%; - display: block; - float: left; - margin-top: 20px; - padding-left: 0; - } - .profile-wrapper .profile-sidebar .row > div { - width: 50%; - } -} -@media (max-width: 991px) { - .profile-wrapper .profile-sidebar { - padding-left: 0; - margin-top: 20px; - } -} -/***** NOT FOUND PANEL *****/ -.notfoundpanel { - width: 720px; - text-align: center; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -55%); -} -@media (max-width: 640px) { - .notfoundpanel { - width: auto; - position: static; - transform: none; - padding: 20px; - } -} -.notfoundpanel h1 { - font-size: 200px; - font-weight: 700; - line-height: 160px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - color: #3b4354; - margin: 0 0 20px; -} -@media (max-width: 640px) { - .notfoundpanel h1 { - font-size: 100px; - line-height: 100px; - } -} -.notfoundpanel h3 { - margin-top: 0; - font-weight: 300; - font-size: 30px; - color: #505b72; -} -@media (max-width: 640px) { - .notfoundpanel h3 { - font-size: 24px; - } -} -.notfoundpanel h4 { - margin: 30px 0 20px; - font-size: 14px; - font-weight: 500; - line-height: 21px; - color: #5b6781; - letter-spacing: .3px; -} -.notfoundpanel form { - width: 350px; - margin: auto; -} -@media (max-width: 360px) { - .notfoundpanel form { - width: 280px; - } -} -.notfoundpanel .list-inline { - text-align: left; -} -@media (max-width: 560px) { - .notfoundpanel .list-inline > li:last-child { - display: block; - float: none !important; - text-align: left; - margin-top: 10px; - } -} -@media (max-width: 360px) { - .notfoundpanel .list-inline > li { - display: block; - float: none; - } - .notfoundpanel .list-inline > li + li { - margin-top: 5px; - } -} -/***** SIGN IN/UP *****/ -.signwrapper { - background-image: url(../images/photos/bg.jpg); - background-repeat: no-repeat; - background-position: center; - background-attachment: fixed; - background-size: cover; -} -@media (max-width: 767px) { - .signwrapper { - background-image: none; - background-color: rgba(38, 43, 54, 0.9); - } -} -.signwrapper .input-group > .input-group-addon { - background-color: #fff; - border-color: transparent; - padding-right: 0; -} -.signwrapper .input-group > .input-group-addon > i { - color: #262b36; -} -.signwrapper .form-control { - border-color: transparent; - background-color: #fff; -} -.signwrapper .panel-heading { - padding-top: 10px; -} -.signwrapper .panel-body { - padding-bottom: 0; -} -.signwrapper .panel-title { - text-align: center; - color: #fff; - margin-top: 20px; - text-transform: none; - font-weight: 200; - font-size: 20px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - letter-spacing: .7px; -} -.signwrapper .select2-dropdown { - z-index: 400; - border-color: transparent; -} -.signwrapper .select2-container--default .select2-selection--single { - border-color: transparent; -} -.signwrapper .btn-sign { - border-color: rgba(255, 255, 255, 0.3); - color: rgba(255, 255, 255, 0.3); -} -.signwrapper .btn-sign:hover, -.signwrapper .btn-sign:focus { - border-color: rgba(255, 255, 255, 0.7); - color: rgba(255, 255, 255, 0.7); -} -.sign-overlay { - background-image: url(../images/dot.png); - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 100; - opacity: 1; -} -@media (max-width: 767px) { - .sign-overlay { - display: none; - } -} -.signpanel { - background-color: rgba(0, 0, 0, 0.95); - background-image: -webkit-linear-gradient(left, transparent 0%, #1b1f27 100%); - background-image: -o-linear-gradient(left, transparent 0%, #1b1f27 100%); - background-image: linear-gradient(to right, transparent 0%, #1b1f27 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#ff1b1f27', GradientType=1); - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 200; - opacity: .75; -} -@media (max-width: 767px) { - .signpanel { - background-image: none; - background-color: #262b36; - opacity: 1; - } -} -/***** SIGN IN *****/ -.signin { - width: 400px; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - background-color: rgba(38, 43, 54, 0.9); - padding: 20px; - z-index: 300; -} -@media (max-width: 767px) { - .signin { - top: 20px; - left: 0; - transform: none; - width: 400px; - position: relative; - margin: auto; - padding-top: 0; - } -} -@media (max-width: 360px) { - .signin { - width: 320px; - } -} -.signin h1 { - color: #259dab; - text-align: center; - margin: 0; - font-weight: 500; -} -.signin .forgot { - margin: 10px 0 21px; - color: rgba(255, 255, 255, 0.5); - display: inline-block; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.signin .forgot:hover, -.signin .forgot:focus { - color: #fff; -} -.signin .btn-fb { - color: rgba(255, 255, 255, 0.8); -} -.signin .btn-fb:hover, -.signin .btn-fb:focus { - color: rgba(255, 255, 255, 0.5); -} -/***** SIGN UP *****/ -.signup { - position: absolute; - top: 40px; - left: 50%; - transform: translateX(-50%); - z-index: 300; - width: 900px; -} -@media (max-width: 767px) { - .signup { - top: 20px; - left: 0; - transform: none; - width: 400px; - position: relative; - margin: auto; - padding-top: 0; - } -} -@media (max-width: 360px) { - .signup { - width: 300px; - } -} -.signup h1 { - color: #259dab; - text-align: center; - margin: 0; - font-weight: 500; -} -.signup .panel { - background-color: rgba(38, 43, 54, 0.9); - padding: 20px 20px 40px 20px; -} -@media (max-width: 360px) { - .signup .panel { - padding: 0; - } -} -.signup .row > div { - padding-left: 7px; - padding-right: 7px; -} -.signup .row > div:first-child { - padding-left: 10px; -} -.signup .row > div:last-child { - padding-right: 10px; - color: rgba(255, 255, 255, 0.7); -} -.signup .signtitle { - color: #259dab; - font-weight: 200; - letter-spacing: .5px; - margin-top: 0; -} -.signup .sign-sidebar { - padding: 33px 40px 0; -} -@media (max-width: 767px) { - .signup .sign-sidebar { - display: none; - } -} -.signup .sign-sidebar p { - line-height: 21px; - font-weight: 200; - letter-spacing: .5px; - font-size: 14px; -} -.signup .sign-sidebar h4 { - margin: 0 0 20px; - color: #259dab; -} -.signup .sign-sidebar .panel-title { - text-align: left; - color: #fff; -} -.signup .sign-sidebar .reason { - font-weight: 700; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-size: 13px; - text-transform: uppercase; - letter-spacing: 1px; - margin-bottom: 10px; - color: #fff; -} -/***** DASHBOARD *****/ -.dash-left .table > thead > tr > th, -.dash-right .table > thead > tr > th, -.dash-left .table > tbody > tr > th, -.dash-right .table > tbody > tr > th, -.dash-left .table > tfoot > tr > th, -.dash-right .table > tfoot > tr > th, -.dash-left .table > thead > tr > td, -.dash-right .table > thead > tr > td, -.dash-left .table > tbody > tr > td, -.dash-right .table > tbody > tr > td, -.dash-left .table > tfoot > tr > td, -.dash-right .table > tfoot > tr > td { - padding-left: 20px; - padding-right: 20px; -} -@media (min-width: 992px) and (max-width: 1024px) { - .dash-left, - .dash-right { - width: 100%; - } -} -@media (max-width: 768px) { - .dash-right .col-sm-5 { - width: 41.6667%; - } -} -@media (max-width: 640px) { - .dash-right .col-sm-5 { - width: 50%; - float: left; - } -} -@media (max-width: 560px) { - .dash-right .col-sm-5 { - width: auto; - float: none; - } -} -/***** CUSTOM STYLES *****/ -.mb5 { - margin-bottom: 5px; -} -.mb10 { - margin-bottom: 10px; -} -.mb15 { - margin-bottom: 15px; -} -.mb20 { - margin-bottom: 20px; -} -.mb30 { - margin-bottom: 30px; -} -.mb35 { - margin-bottom: 35px; -} -.mb40 { - margin-bottom: 40px; -} -.mr5 { - margin-right: 5px; -} -.mr10 { - margin-right: 10px; -} -.mr20 { - margin-right: 20px; -} -.mr30 { - margin-right: 30px; -} -.mt0 { - margin-top: 0; -} -.mt5 { - margin-top: 5px; -} -.mt10 { - margin-top: 10px; -} -.mt20 { - margin-top: 20px; -} -.ml5 { - margin-left: 5px; -} -.ml10 { - margin-left: 10px; -} -.padding5 { - padding: 5px; -} -.padding10 { - padding: 10px; -} -.nomargin { - margin: 0; -} -.noshadow { - -webkit-box-shadow: none; - box-shadow: none; -} -.nopadding { - padding: 0; -} -.nopaddingtop { - padding-top: 0 !important; -} -.nopaddingbottom { - padding-bottom: 0 !important; -} -.italic { - font-style: italic; -} -.dark { - color: #333; -} -.width100p { - width: 100%; -} -.width20 { - width: 20px; -} -.width30 { - width: 30px; -} -.width50 { - width: 50px; -} -.width60 { - width: 60px; -} -.width70 { - width: 70px; -} -.width80 { - width: 80px; -} -.width100 { - width: 100px; -} -.width120 { - width: 120px; -} -.width200 { - width: 200px; -} -.inblock { - display: inline-block; -} -.dash-title { - padding: 14px 18px; - background-color: #505b72; - border-top-right-radius: 2px; - border-top-left-radius: 2px; - text-transform: uppercase; - font-size: 12px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - margin-bottom: 1px; - color: rgba(255, 255, 255, 0.9); - text-align: center; -} -.btn-demo .btn { - float: left; - margin: 10px 10px 0 0; - min-width: 100px; -} -.btn-demo .btn.btn-icon { - min-width: 0; -} -.btn-demo:before, -.btn-demo:after { - content: " "; - display: table; -} -.btn-demo:after { - clear: both; -} -.btn-demo:before, -.btn-demo:after { - content: " "; - display: table; -} -.btn-demo:after { - clear: both; -} -.fontawesome-icon-list .col-md-3 { - margin-bottom: 8px; -} -.fontawesome-icon-list i { - font-size: 14px; - width: 16px; - margin-right: 8px; - text-align: center; - color: #262b36; -} -.fonticon-list { - list-style: none; - margin: 20px 0; - padding: 0; -} -.fontawesome-list, -.weathericon-list { - list-style: none; - padding: 0; -} -.fonticon-list li, -.fontawesome-list li, -.weathericon-list li { - display: block; - margin-bottom: 5px; -} -.fonticon-list li span, -.fontawesome-list li span, -.weathericon-list li span { - color: #333333; - vertical-align: middle; - margin-right: 8px; - min-width: 20px; - display: inline-block; - width: 20px; -} -.weathericon-list li span { - font-size: 16px; -} -.tooltip-example .btn, -.popover-example .btn { - margin: 0 5px 5px 0; -} -.flot-chart { - width: 100%; - height: 300px; -} -.nav-wrapper { - border-radius: 2px; - padding: 1px 0; - margin-bottom: 20px; -} -.nav-wrapper.white { - background-color: #fff; -} -.nav-wrapper.quirk { - background-color: #3b4354; -} -@media (max-width: 480px) { - .demo-navwrapper > div { - width: auto; - float: none; - display: block; - } -} -.calendar-widget { - margin-bottom: 20px; -} -.calendar-widget .ui-datepicker-inline { - border-color: transparent; -} -.calendar-widget .ui-datepicker-inline { - max-width: none; -} -.gritter-demo .gritter-item-wrapper > .gritter-item { - z-index: 0; -} -.gritter-demo .gritter-item-wrapper > .gritter-item p { - line-height: 22px; - margin-bottom: 0; -} -.gritter-demo .gritter-item-wrapper > .gritter-item:before { - top: 13px; -} -.signin-demo { - position: static; - transform: none; - width: auto; - background-color: #3b4354; -} -.signin-demo .panel-heading { - padding-top: 10px; -} -.signin-demo .panel-title { - color: #fff; - text-align: center; - margin: 20px 0 0; - text-transform: none; - font-weight: 200; - font-size: 18px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - letter-spacing: .5px; -} -.signin-demo .input-group-addon { - border-color: transparent; - background-color: #fff; - padding-right: 0; -} -.signin-demo .form-control { - border-color: transparent; - background-color: #fff; -} -.demo-colorpicker > div { - margin-bottom: 20px; -} -.demo-colorpicker > div:last-child { - margin-bottom: 0; -} -.paddingtop10 { - padding-top: 10px; -} -.paddingtop15 { - padding-top: 15px; -} -.paddingtop20 { - padding-top: 20px; -} - - -/* perfect-scrollbar v0.6.11 */ -.ps-container { - -ms-touch-action: none; - touch-action: none; - overflow: hidden !important; - -ms-overflow-style: none; } - @supports (-ms-overflow-style: none) { - .ps-container { - overflow: auto !important; } } - @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { - .ps-container { - overflow: auto !important; } } - .ps-container.ps-active-x > .ps-scrollbar-x-rail, - .ps-container.ps-active-y > .ps-scrollbar-y-rail { - display: block; - background-color: transparent; } - .ps-container.ps-in-scrolling { - pointer-events: none; } - .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail { - background-color: #eee; - opacity: 0.9; } - .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x { - background-color: #999; } - .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail { - background-color: #eee; - opacity: 0.9; } - .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y { - background-color: #999; } - .ps-container > .ps-scrollbar-x-rail { - display: none; - position: absolute; - /* please don't change 'position' */ - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - opacity: 0; - -webkit-transition: background-color .2s linear, opacity .2s linear; - -moz-transition: background-color .2s linear, opacity .2s linear; - -o-transition: background-color .2s linear, opacity .2s linear; - transition: background-color .2s linear, opacity .2s linear; - bottom: 3px; - /* there must be 'bottom' for ps-scrollbar-x-rail */ - height: 8px; } - .ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x { - position: absolute; - /* please don't change 'position' */ - background-color: #aaa; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-transition: background-color .2s linear; - -moz-transition: background-color .2s linear; - -o-transition: background-color .2s linear; - transition: background-color .2s linear; - bottom: 0; - /* there must be 'bottom' for ps-scrollbar-x */ - height: 8px; } - .ps-container > .ps-scrollbar-y-rail { - display: none; - position: absolute; - /* please don't change 'position' */ - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - opacity: 0; - -webkit-transition: background-color .2s linear, opacity .2s linear; - -moz-transition: background-color .2s linear, opacity .2s linear; - -o-transition: background-color .2s linear, opacity .2s linear; - transition: background-color .2s linear, opacity .2s linear; - right: 3px; - /* there must be 'right' for ps-scrollbar-y-rail */ - width: 8px; } - .ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y { - position: absolute; - /* please don't change 'position' */ - background-color: #aaa; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-transition: background-color .2s linear; - -moz-transition: background-color .2s linear; - -o-transition: background-color .2s linear; - transition: background-color .2s linear; - right: 0; - /* there must be 'right' for ps-scrollbar-y */ - width: 8px; } - .ps-container:hover.ps-in-scrolling { - pointer-events: none; } - .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail { - background-color: #eee; - opacity: 0.9; } - .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x { - background-color: #999; } - .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail { - background-color: #eee; - opacity: 0.9; } - .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y { - background-color: #999; } - .ps-container:hover > .ps-scrollbar-x-rail, - .ps-container:hover > .ps-scrollbar-y-rail { - opacity: 0.6; } - .ps-container:hover > .ps-scrollbar-x-rail:hover { - background-color: #eee; - opacity: 0.9; } - .ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x { - background-color: #999; } - .ps-container:hover > .ps-scrollbar-y-rail:hover { - background-color: #eee; - opacity: 0.9; } - .ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y { - background-color: #999; } - - /* to make scrollbars always visible */ - .always-visible.ps-container > .ps-scrollbar-x-rail, - .always-visible.ps-container > .ps-scrollbar-y-rail { - opacity: 0.6; - } - .always-visible.ps-child > .ps-scrollbar-x-rail, - .always-visible.ps-child > .ps-scrollbar-y-rail { - opacity: 0.6; - } - - -li.info-quote { - border: 0 !important; -} -li p.info-quote { - background-color: rgba(103, 128, 159, 0.8); - border-left: 6px solid #9fa8bc; - color: #fff; - font-size: 12px; - /*margin-left: -21px;*/ - /*margin-top: -7px;*/ - margin-bottom: 0; - min-height: 46px; - padding: 6px; -} -li.warning-quote { - border: 0 !important; -} -p.info-quote { - background-color: rgba(103, 128, 159, 0.8); - border-left: 6px solid #4b77be; - color: #333; - font-size: 12px; - padding: 6px; - text-align: left; -} -li p.warning-quote { -background-color: rgba(214, 69, 65, 0.1); -border-left: 6px solid #d9534f; -color: #fff; -font-size: 12px; -margin-left: -21px; -margin-top: -7px; -padding: 6px; -} -p.warning-quote { - background-color: rgba(214, 69, 65, 0.1); - border-left: 6px solid #d9534f; - color: #333; - font-size: 12px; - padding: 6px; - text-align: left; -} - -.plgin-center-switch { - margin-right: 5px; - margin-top: 2px; -} - -.usermenu-div { - padding-top: 5px; - border-top: 1px solid #3a3a3a; - margin-top: 15px -} - -a.grayscale { - filter: grayscale(100%); /* Current draft standard */ - -webkit-filter: grayscale(100%); /* New WebKit */ - -moz-filter: grayscale(100%); - -ms-filter: grayscale(100%); - -o-filter: grayscale(100%); /* Not yet supported in Gecko, Opera or IE */ - filter: url(resources.svg#desaturate); /* Gecko */ - filter: gray; /* IE */ - -webkit-filter: grayscale(1); /* Old WebKit */ - -webkit-transition: all .6s ease; /* Transition for Webkit browsers */ - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */ -} - -a.grayscale:hover { - filter: grayscale(0%); - -webkit-filter: grayscale(0%); - filter: none; - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale"); -} - -img.grayscale { - filter: grayscale(100%); /* Current draft standard */ - -webkit-filter: grayscale(100%); /* New WebKit */ - -moz-filter: grayscale(100%); - -ms-filter: grayscale(100%); - -o-filter: grayscale(100%); /* Not yet supported in Gecko, Opera or IE */ - filter: url(resources.svg#desaturate); /* Gecko */ - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */ - filter: gray; /* IE */ - -webkit-filter: grayscale(1); /* Old WebKit */ - -webkit-transition: all .6s ease; /* Transition for Webkit browsers */ -} - -img.grayscale:hover { - filter: grayscale(0%); - -webkit-filter: grayscale(0%); - filter: none; - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale"); -} - -.brand-ico { - vertical-align: top; - width: 18px; - border-radius: 50%; -} - -#sysPre { - max-height : 600px; - overflow-y: scroll; -} - - -.tab-pane.list-announcement ul { - padding: 0; -} - -.lang-flag { - border-radius: 50%; - height: 21px; - margin-right: 5px; - width: 21px; -} -.lang-menu { - color: #778395; - cursor: pointer; - /*font-size: 21px;*/ - height: 64px; - left: -20px; - position: absolute; - top: 20px; - transition: all 0.2s ease-out 0s; -} diff --git a/dashboard/skins/filters.svg b/dashboard/skins/filters.svg deleted file mode 100644 index 50b56463..00000000 --- a/dashboard/skins/filters.svg +++ /dev/null @@ -1,5 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg"> - <filter id="grayscale"> - <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/> - </filter> -</svg> \ No newline at end of file diff --git a/dashboard/skins/less/addons.less b/dashboard/skins/less/addons.less deleted file mode 100644 index 4d7ff5b7..00000000 --- a/dashboard/skins/less/addons.less +++ /dev/null @@ -1,59 +0,0 @@ -/***** CUSTOM STYLES *****/ - -.mb5 { margin-bottom: 5px; } -.mb10 { margin-bottom: 10px; } -.mb15 { margin-bottom: 15px; } -.mb20 { margin-bottom: 20px; } -.mb30 { margin-bottom: 30px; } -.mb35 { margin-bottom: 35px; } -.mb40 { margin-bottom: 40px; } - -.mr5 { margin-right: 5px; } -.mr10 { margin-right: 10px; } -.mr20 { margin-right: 20px; } -.mr30 { margin-right: 30px; } - -.mt0 { margin-top: 0; } -.mt5 { margin-top: 5px; } -.mt10 { margin-top: 10px; } -.mt20 { margin-top: 20px; } - -.ml5 { margin-left: 5px; } -.ml10 { margin-left: 10px; } - -.padding5 { padding: 5px; } -.padding10 { padding: 10px; } - -.nomargin { margin: 0; } -.noshadow { .box-shadow(none); } -.nopadding { padding: 0; } -.nopaddingtop { padding-top: 0 !important; } -.nopaddingbottom { padding-bottom: 0 !important; } - -.italic { font-style: italic; } -.dark { color: #333; } - -.width100p { width: 100%; } -.width20 { width: 20px; } -.width30 { width: 30px; } -.width50 { width: 50px; } -.width60 { width: 60px; } -.width70 { width: 70px; } -.width80 { width: 80px; } - -.width100 { width: 100px; } -.width120 { width: 120px; } -.width200 { width: 200px; } - -.inblock { display: inline-block; } -.dash-title { - padding: 14px 18px; - background-color: lighten(@brand-quirk, 20%); - .border-top-radius(@border-radius-base); - text-transform: uppercase; - font-size: 12px; - font-family: @font-family-primary; - margin-bottom: 1px; - color: fadeout(#fff, 10%); - text-align: center; -} diff --git a/dashboard/skins/less/bootstrap-override.less b/dashboard/skins/less/bootstrap-override.less deleted file mode 100644 index 8e8e5e62..00000000 --- a/dashboard/skins/less/bootstrap-override.less +++ /dev/null @@ -1,771 +0,0 @@ - -/***** ALERTS *****/ - -.alert { - .close { margin-top: -2px; } -} - -.alert-success { .alert-link-color(@alert-success-text); } -.alert-info { .alert-link-color(@alert-info-text); } -.alert-warning { .alert-link-color(@alert-warning-text); } -.alert-danger { .alert-link-color(@alert-danger-text); } - - -/***** BUTTONS *****/ - -.btn { - padding: @padding-base-vertical @padding-base-horizontal (@padding-base-vertical - 1px); - .transition(@transition-base); - - &, - &:active, - &.active { - &:focus, - &.focus { - outline: none; - } - } -} - -.btn-default { .btn-variant(@btn-default-color; @btn-default-bg; @btn-default-border); } -.btn-primary { .btn-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); } -.btn-success { .btn-variant(@btn-success-color; @btn-success-bg; @btn-success-border); } -.btn-warning { .btn-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); } -.btn-danger { .btn-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); } -.btn-info { .btn-variant(@btn-info-color; @btn-info-bg; @btn-info-border); } - - -.btn-lg { padding: @padding-large-vertical @padding-large-horizontal (@padding-large-vertical - 1px); } -.btn-sm { padding: @padding-small-vertical @padding-small-horizontal (@padding-small-vertical - 1px); } -.btn-xs { padding: @padding-xs-vertical @padding-xs-horizontal (@padding-xs-vertical - 1px); } - -.input-group-btn .btn { - &:not(.btn-lg), - &:not(.btn-sm), - &:not(.btn-xs) { - min-height: 38px; - } -} - - -/***** BUTTON GROUPS *****/ - -.btn-group { - .btn:not(.btn-default) + .btn:not(.btn-default), - .btn:not(.btn-default) + .btn-group, - .btn-group + .btn:not(.btn-default), - .btn-group + .btn-group { - margin-left: 0; - border-left: 1px solid fadeout(#fff, 80%); - } - - .btn:not(.btn-default) + .btn-group { - margin-left: -1px; - } -} - - -/***** DROPDOWN *****/ - -.dropdown-menu { - padding: 5px; - .box-shadow(none); - - > li { - > a { - padding: 5px 7px; - border-radius: @border-radius-base; - .transition(@transition-base); - - &:hover, - &:focus { - background-color: lighten(@brand-quirk, 60%); - color: #fff; - } - } - } - - .divider { margin: 5px 0; } -} - -// Dropdown menu with icon -.dm-icon { - > li > a > i { - display: inline-block; - margin-right: 5px; - } -} - - -/***** FORMS *****/ - -.form-control { - .box-shadow(none); - .transition(none); - - &:focus { - background-color: #fff; - border-color: darken(@input-border, 10%); - .box-shadow(none); - } - - &[disabled], - &[readonly] { - color: lighten(@brand-quirk, 50%); - } -} - -.form-group { margin-bottom: 20px; } - -.has-success, -.has-warning, -.has-error { - .form-control, - .form-control:focus { - .box-shadow(none); - } -} - - -/***** BADGES & LABELS *****/ - -.badge { - font-size: 10px; - font-weight: 500; - font-family: @font-family-sans-serif; -} - -.label { font-weight: normal; } - - - - -/***** MEDIA *****/ - - -.media-right, -.media > .pull-right { - padding-left: 20px; -} - -.media-left, -.media > .pull-left { - padding-right: 20px; -} - - -/***** PAGINATION *****/ - -.pagination { - > li { - > a, - > span { - font-weight: 700; - .transition(@transition-base); - padding: (@padding-base-vertical - 1px) 14px; - } - - + li { - > a, - > span { - margin-left: 1px; - } - } - } -} - -.pagination-bordered { - > li + li { - > a, - > span { - margin-left: 5px; - border-radius: @border-radius-base; - background-color: transparent; - border-color: @border-color-base; - - &:hover, - &:focus { - background-color: @bg-color-base; - border-color: darken(@border-color-base, 10%); - } - } - } - - > .disabled { - > span, - > span:hover, - > span:focus, - > a, - > a:hover, - > a:focus { - border-color: @border-color-base; - } - } -} - - -.pager { - li { - text-transform: uppercase; - font-weight: 700; - font-family: @font-family-primary; - - > a, - > span { - color: lighten(@brand-quirk, 10%); - padding: (@padding-base-vertical - 1px) 14px; - .transition(@transition-base); - } - } -} - - -/***** PANELS *****/ - -.panel { - border: 0; - border-radius: @border-radius-base; - margin-bottom: 20px; - background-color: #fff; - position: relative; - .box-shadow(none); -} - -.panel-heading { - margin-bottom: 0; - .border-top-radius(@border-radius-base); - - &.min { .border-bottom-radius(@border-radius-base); } - - p { margin: 7px 0 0; } - - + .panel-body { padding-top: 0; } -} - -.panel-title { - text-transform: uppercase; - font-size: @panel-title-size; - font-weight: 700; - color: lighten(@brand-quirk, 5%); - letter-spacing: .2px; - font-family: @font-family-primary; -} - -.panel-body { - .border-bottom-radius(@border-radius-base); - - p + p { margin: 15px 0 0; } - - .list-inline > li { - &:first-child { padding-left: 0; } - &:last-child { padding-right: 0; } - } - - &.inverse { - background-color: lighten(@brand-quirk, 10%); - color: fadeout(#fff, 20%); - } -} - -.panel-default > .panel-heading > p { - color: @text-color; -} - -.panel-footer { - background-color: lighten(@bg-color-base, 8%); - border-color: transparent; - .border-bottom-radius(@border-radius-base); -} - -.panel-default, -.panel-primary, -.panel-success, -.panel-warning, -.panel-danger, -.panel-info, -.panel-inverse { - .panel-options { top: 11px; } - .panel-heading { - padding-top: 15px; - padding-bottom: 15px; - border-bottom: 0; - - .panel-title { color: #fff; } - p { color: fadeout(#fff, 20%); } - } - - .panel-body { padding-top: 20px; } -} - - -// Collapsible Panels -.panel-group { - .panel { - border-radius: 0; - - > .panel-heading { - padding: 0; - .border-top-radius(0); - - .panel-title { - font-size: @panel-title-size; - - @media(max-width: 480px) { line-height: 18px; } - - > a { - display: block; - position: relative; - padding: 18px @panel-body-padding 15px; - color: lighten(@brand-quirk, 20%); - color: @brand-success; - background-color: #fff; - .transition(@transition-base); - - &:hover, - &:focus { color: @brand-success; } - - &:after { - content: '\f078'; - font-family: 'FontAwesome'; - font-size: 11px; - font-weight: normal; - color: lighten(@brand-quirk, 50%); - position: absolute; - top: 15px; - right: 20px; - display: none; - } - - &.collapsed { - padding: 15px @panel-body-padding; - color: lighten(@brand-quirk, 20%); - - &:after { - content: '\f054'; - color: #fff; - } - - &:hover, - &:focus { color: @brand-quirk; } - } - } - } - - + .panel-collapse > .panel-body { border-top: 0; } - } - - + .panel { - margin-top: 0; - border-top: 1px solid @border-color-base; - } - - .panel-collapse { - &.in, - &.collapsing { - > .panel-body { padding-top: 0; } - } - } - - &:first-child { - &, > .panel-heading .panel-title > a { - .border-top-radius(@border-radius-base); - } - } - - &:last-child { - &, > .panel-heading .panel-title > a.collapsed { - .border-bottom-radius(@border-radius-base + 1px); - } - } - } - - .panel-default, - .panel-primary, - .panel-success, - .panel-warning, - .panel-danger, - .panel-info, - .panel-inverse { - - > .panel-heading { - .panel-title { - > a { - margin-top: -1px; - - &:after { display: block; } - - &.collapsed { - color: fadeout(#fff, 20%); - margin-top: 0; - - &:hover, - &:focus { color: #fff; } - } - } - } - } - - &:first-child > .panel-heading { - .border-top-radius(@border-radius-base + 1px); - .panel-title > a { margin-top: 0; } - } - - &:last-child > .panel-heading { - &, .panel-title > a.collapsed { - .border-bottom-radius(@border-radius-base + 1px); - } - } - - .panel-collapse { - &.in, - &.collapsing { - > .panel-body { - padding-top: 0; - margin-bottom: -1px; - } - } - } - } - - .panel-default { - .panel-group-variant(@panel-default-heading-bg); - > .panel-heading .panel-title > a { - &, &:hover, &:focus { color: lighten(@brand-quirk, 10%); } - } - } - - // Panel Group Color Variant - .panel-primary { .panel-group-variant(@brand-primary); } - .panel-success { .panel-group-variant(@brand-success); } - .panel-warning { .panel-group-variant(@brand-warning); } - .panel-danger { .panel-group-variant(@brand-danger); } - .panel-info { .panel-group-variant(@brand-info); } - .panel-inverse { .panel-group-variant(lighten(@brand-quirk, 20%)); } - -} - - - -/***** PROGRESS BARS *****/ - -.progress { .box-shadow(none); } -.progress-bar { .box-shadow(none); } - - -/***** POPOVER *****/ - -.popover { padding: 0; } -.popover-title { - border-bottom: 0; - padding: 15px 15px 0; - text-transform: uppercase; - //letter-spacing: .5px; - font-family: @font-family-primary; -} - -.popover-content { - padding: 15px; - line-height: 20px; -} - - - - -/***** NAV *****/ - -.nav > li > a { - @media(max-width: 480px) { - padding-left: 15px; - padding-right: 15px; - } -} - -.nav-stacked { - > li { - font-weight: 500; - &.active > a { - &, - &:hover, - &:focus { - background-color: @brand-success; - } - } - } -} - - - -/***** NAVBAR *****/ - -.navbar { - background-color: #fff; - border-radius: @border-radius-base; -} - -.navbar-brand { - padding: (@padding-base-vertical + 2) @padding-base-horizontal; - - h3 { - margin: 0; - color: @brand-success; - } -} - -.navbar-nav { - > li { - > a { - text-transform: uppercase; - font-family: @font-family-primary; - font-weight: 700; - color: lighten(@brand-quirk, 40%); - padding-left: 15px; - padding-right: 15px; - .transition(@transition-base); - - @media (min-width: @screen-sm-min) { - padding-left: 25px; - padding-right: 25px; - } - - &:hover, - &:focus { - color: lighten(@brand-quirk, 20%); - background-color: transparent; - } - } - - &.active > a { - color: @brand-success; - } - } -} - -.navbar-inverse { - background-color: @brand-quirk; - border-color: transparent; - - .navbar-collapse, - .navbar-form { border-color: transparent; } - .navbar-collapse { .box-shadow(none); } - .navbar-toggle { - border-color: transparent; - &:hover, - &:focus { - background-color: transparent; - color: #fff; - } - } - - .navbar-nav { - > li { - > a { color: lighten(@brand-quirk, 30%); } - &.active > a { - &, - &:hover, - &:focus { - color: @brand-success; - background-color: transparent; - } - } - } - } -} - - - -/***** TABS *****/ - -.nav-tabs { - background-color: @nav-tabs-bg; - border-bottom: 0; - .border-top-radius(@border-radius-base); - - > li { - margin: 0; - - > a { - color: fadeout(#fff, 20%); - text-transform: uppercase; - letter-spacing: .2px; - font-family: @font-family-primary; - font-weight: 700; - font-size: 12px; - margin: 0; - border: 0; - .transition(@transition-base); - - &:hover, - &:focus { - color: #fff; - background-color: @nav-tabs-bg-hover; - border: 0; - } - } - - &.active > a { - &, - &:hover, - &:focus { - border: 0; - border-radius: 0; - background-color: #fff; - color: @nav-tabs-active-color; - } - } - - &.active:first-child > a { border-top-left-radius: @border-radius-base; } - } - - // Nav Justified - &.nav-justified { - > li > a { border: 0; } - - > .active { - &:last-child > a { border-top-right-radius: @border-radius-base; } - > a { - &, - &:hover, - &:focus { - border: 0; - } - } - } - } -} - -.tab-pane { - padding: 20px; - background-color: #fff; - .border-bottom-radius(@border-radius-base); -} - - - -/***** TABLES *****/ - -.table { - border-collapse: separate; - border-radius: @border-radius-base; - - > thead, - > tfoot { - > tr { - > th { - padding-top: 11px; - padding-bottom: 11px; - vertical-align: bottom; - border-bottom: 0; - text-transform: uppercase; - letter-spacing: .5px; - font-family: @font-family-primary; - background-color: @bg-color-base; - color: lighten(@brand-quirk, 10%); - font-size: 12px; - } - } - } - - > thead > tr:first-child { - .border-top-radius(@border-radius-base); - - > th:first-child { border-top-left-radius: @border-radius-base; } - > th:last-child { border-top-right-radius: @border-radius-base; } - } - - > tfoot > tr:last-child { - .border-bottom-radius(@border-radius-base); - - > th:first-child { border-bottom-left-radius: @border-radius-base; } - > th:last-child { border-bottom-right-radius: @border-radius-base; } - } - - > tbody > tr:last-child { - > th, - > td { - &:first-child { border-bottom-left-radius: @border-radius-base; } - &:last-child { border-bottom-right-radius: @border-radius-base; } - } - } - - > tfoot + tbody > tr:last-child { - > th, - > td { - &:first-child { border-bottom-left-radius: 0; } - &:last-child { border-bottom-right-radius: 0; } - } - } - - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - .ckbox { - margin: 0; - display: inline-block; - - span:before { border-color: transparent; } - - input { - margin-right: 0; - &:checked { - + span:before { border-color: transparent; } - + span:after { display: block; } - } - } - } - } - } - } -} - -.table-bordered { - border: 0; - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - border-bottom: 0; - border-right: 0; - - &:first-child { border-left: 0; } - } - } - } - - > thead > tr:first-child > th { border-top: 0; } -} - - - -/***** TYPE *****/ - -.text-success { .text-emphasis-variant(@brand-success); } -.text-info { .text-emphasis-variant(@brand-info); } -.text-warning { .text-emphasis-variant(@brand-warning); } -.text-danger { .text-emphasis-variant(@brand-danger); } - -.well { - border: 0; - .box-shadow(none); -} - -.close { font-weight: 500; } - - -/***** MODAL *****/ - -.modal { - z-index: 2050; - &.in .modal-dialog { transform: translate(-50%,-50%); } -} -.modal-dialog { - position: absolute; - top: 50%; - left: 50%; - margin: 0; - transform: translate(-50%,-50%); -} diff --git a/dashboard/skins/less/demo.less b/dashboard/skins/less/demo.less deleted file mode 100644 index 146ad83d..00000000 --- a/dashboard/skins/less/demo.less +++ /dev/null @@ -1,159 +0,0 @@ - -// Button List -.btn-demo { - .btn { - float: left; - margin: 10px 10px 0 0; - min-width: 100px; - - &.btn-icon { min-width: 0; } - } - - .clearfix(); -} - -// Icons -.fontawesome-icon-list { - .col-md-3 { margin-bottom: 8px; } - - i { - font-size: 14px; - width: 16px; - margin-right: 8px; - text-align: center; - color: @brand-quirk; - } -} - -// Fonts -.fonticon-list { - list-style: none; - margin: 20px 0; - padding: 0; -} - -.fontawesome-list, -.weathericon-list { - list-style: none; - padding: 0; -} - -.fonticon-list, -.fontawesome-list, -.weathericon-list { - li { - display: block; - margin-bottom: 5px; - - span { - color: #333333; - vertical-align: middle; - margin-right: 8px; - min-width: 20px; - display: inline-block; - width: 20px; - } - } -} - -.weathericon-list li span { font-size: 16px; } - - -// Alerts -.tooltip-example, -.popover-example { - .btn { margin: 0 5px 5px 0; } -} - -// Graphs - -.flot-chart { - width: 100%; - height: 300px; -} - -// Navigation -.nav-wrapper { - border-radius: @border-radius-base; - padding: 1px 0; - margin-bottom: 20px; - - &.white { background-color: #fff; } - &.quirk { background-color: lighten(@brand-quirk, 10%); } -} - -.demo-navwrapper { - > div { - @media (max-width: 480px) { - width: auto; - float: none; - display: block; - } - } -} - - -// Calendar -.calendar-widget { - margin-bottom: 20px; - .ui-datepicker-inline { border-color: transparent; } - .ui-datepicker-inline { max-width: none; } -} - -// Gritter -.gritter-demo { - .gritter-item-wrapper > .gritter-item { - z-index: 0; - p { - line-height: 22px; - margin-bottom: 0; - } - &:before { top: 13px; } - } -} - -// Sign In Demo -.signin-demo { - position: static; - transform: none; - width: auto; - background-color: lighten(@brand-quirk, 10%); - - .panel-heading { padding-top: 10px; } - - .panel-title { - color: #fff; - text-align: center; - margin: 20px 0 0; - text-transform: none; - font-weight: 200; - font-size: 18px; - font-family: @font-family-base; - letter-spacing: .5px; - } - - .input-group-addon { - border-color: transparent; - background-color: #fff; - padding-right: 0; - } - - .form-control { - border-color: transparent; - background-color: #fff; - } -} - -// Colorpicker -.demo-colorpicker { - > div { - margin-bottom: 20px; - &:last-child { margin-bottom: 0; } - } -} - - -// Misc -.paddingtop10 { padding-top: 10px; } -.paddingtop15 { padding-top: 15px; } -.paddingtop20 { padding-top: 20px; } diff --git a/dashboard/skins/less/headerpanel.less b/dashboard/skins/less/headerpanel.less deleted file mode 100644 index 56b80ec2..00000000 --- a/dashboard/skins/less/headerpanel.less +++ /dev/null @@ -1,507 +0,0 @@ - -/* Header Panel */ - -.headerpanel { - position: fixed; - top: 0; - left: 0; - right: 0; - height: @header-height; - background-color: @header-bg; - z-index: 2000; - - .logopanel { - position: absolute; - left: -@leftpanel-width; - width: @leftpanel-width; - height: @header-height; - padding: 18px 15px; - background-color: @logopanel-bg; - - h2 { - margin: 0; - font-weight: 500; - - > a { - .transition(@transition-base); - &:hover { color: lighten(@brand-success, 10%); } - } - } - - @media (min-width: @screen-md-min) { - left: 0 !important; - } - } -} - -.headerbar { - position: relative; - padding-left: @header-height; - - @media (min-width: @screen-md-min) { - margin-left: @leftpanel-width; - left: 0 !important; - } -} - -.menutoggle { - position: absolute; - width: @header-height; - height: @header-height; - top: 0; - left: 0; - font-size: 21px; - cursor: pointer; - color: @header-text; - .transition(@transition-base); - - i { - position: absolute; - top: 50%; - left: 50%; - margin-top: -11px; - margin-left: -10px; - } - - &:hover, - &:focus { - color: @header-color; - } -} - -.searchpanel { - position: absolute; - top: 0; - left: @header-height; - width: 230px; - - @media (max-width: 480px) { - display: none; - } - - .input-group { - margin-top: 12px; - .form-control { - border: 0; - color: #fff; - background-color: lighten(@brand-quirk, 10%); - } - .btn { - border: 0; - //margin-left: 1px; - background-color: lighten(@brand-quirk, 10%); - font-size: 14px; - color: #fff; - padding-top: 7px; - line-height: normal; - padding-left: 15px; - padding-right: 17px; - } - } -} - -.header-right { - float: right; - padding-right: 20px; -} - -.headermenu { - list-style: none; - margin: 0; - padding: 0; - - .dropdown-toggle:hover, - .dropdown-toggle:focus, - .dropdown-toggle:active, - .dropdown-toggle.active, - .open .dropdown-toggle.dropdown-toggle { - background-color: lighten(@header-bg, 3%); - } - - > li { - display: inline-block; - float: left; - position: relative; - - .btn { - border-radius: 0; - background-color: transparent; - color: @header-text; - height: @header-height; - border: 0; - padding-left: 5px; - padding-right: 5px; - - &:hover, - &:focus { - color: @header-color; - } - - &:active { .box-shadow(none); } - } - - .alert-notice { - .fa { - position: relative; - &:after { - position: absolute; - content: ''; - top: -2px; - right: -2px; - width: 10px; - height: 10px; - background-color: #ff564e; - border-radius: 50px; - opacity: .75; - } - } - } - - > .btn-group { - margin-bottom:0; - - > .btn-notice { - font-size: 21px; - - + .dropdown-menu { - min-width: 350px; - - @media (max-width: 480px) { - min-width: 0; - position: fixed; - top: @header-height; - right: 0; - left: 0; - bottom: 0; - border: 0; - overflow: auto; - - &:after { - display: none; - } - } - } - } - - > .btn-logged { - padding: 5px 12px 3px; - border: 0; - - img { - vertical-align: middle; - margin-right: 5px; - width: 20px; - border-radius: 50px; - } - - .caret { - margin-left: 5px; - margin-top: -2px; - } - - + .dropdown-menu { - min-width: 180px; - > li > a { - padding: 8px 10px; - color: lighten(@brand-quirk,20%); - - &:hover, - &:focus { - background-color: @header-bg; - color: @header-color; - } - - > i { - width: 16px; - margin-right: 5px; - } - } - } - } - } - - .btn-chat { font-size: 21px; } - } - - .dropdown-menu { - border-color: fadeout(@brand-quirk, 90%); - border-top: 0; - margin-top: 0; - margin-right: -8px; - padding: 5px; - background-color: #fff; - .border-top-radius(0); - .border-bottom-radius(@border-radius-base); - .box-shadow(none); - - &:after { - border-bottom: 8px solid #fff; - border-left: 8px solid transparent; - border-right: 8px solid transparent; - content: ""; - display: inline-block; - right: 17px; - position: absolute; - top: -7px; - } - - .title { - text-transform: uppercase; - font-weight: bold; - font-size: 11px; - margin: 0 0 5px; - padding: 10px; - letter-spacing: .5px; - } - - > li > a { - font-size: @font-size-base; - border-radius: @border-radius-base; - } - - .list-group { - margin-left: -5px; - margin-right: -5px; - margin-bottom: -5px; - - > .list-group-item { - border-left: 0; - border-right: 0; - - &:first-child { .border-top-radius(0); } - &:last-child { - .border-bottom-radius(@border-radius-base); - border-bottom: 0; - } - - } - } - } - - // Dropdown Notification - .dm-notice { - padding: 5px 20px 10px; - - @media (max-width: 480px) { - padding: 0; - margin-right: 0; - } - - .nav-tabs { - background-color: transparent; - - > li { - > a { - font-size: 12px; - font-family: @font-family-primary; - text-transform: uppercase; - font-weight: bold; - letter-spacing: .5px; - border-radius: 0; - border-width: 0; - padding-left: 0; - padding-right: 0; - border-bottom: 1px solid @border-color-base; - color: lighten(@brand-quirk, 10%); - cursor: pointer; - - @media (max-width: 480px) { - font-size: 11px; - } - - &:hover, - &:focus { - background-color: transparent; - color: @brand-quirk; - } - } - - &.active > a { - &, - &:hover, - &:focus { - color: @brand-success; - border: 0; - border-bottom: 1px solid @brand-success; - background-color: transparent; - } - } - } - - @media (max-width: @screen-xs-max) { - display: table; - > li { - display: table-cell; - > a { margin: 0; } - } - } - } - - .tab-pane { - padding: 20px 0 10px; - - @media (max-width: 480px) { - padding: 10px; - } - - .panel-title { - margin: 15px 0 0; - padding: 7px 0; - letter-spacing: .5px; - background-color: lighten(@brand-quirk, 70%); - color: lighten(@brand-quirk, 45%); - text-align: center; - border-radius: @border-radius-base; - font-size: 11px; - } - - .btn-more { - text-align: center; - display: block; - background-color: @brand-success; - color: #fff; - padding: 6px 0; - border-radius: @border-radius-base; - letter-spacing: .5px; - margin-top: 10px; - - &:hover, - &:focus { - background-color: darken(@brand-success, 2%); - } - - > i { - font-size: 14px; - line-height: 0; - margin-left: 3px; - vertical-align: middle; - } - } - } - - .list-group { - margin: 5px 0; - - .list-group-item { - padding-left: 0; - padding-right: 0; - border-color: @border-color-base; - - h4, p { - margin: 0; - text-align: center; - text-transform: uppercase; - font-weight: 700; - } - - h4 { - color: @brand-quirk; - font-size: 14px; - } - - p { - font-size: 11px; - letter-spacing: .5px; - color: lighten(@brand-quirk, 40%); - } - - h5 { - margin: 0; - font-weight: 700; - font-size: @font-size-base; - } - - small { - font-size: 11px; - display: block; - margin: 2px 0 0; - } - - &:first-child { border-top: 0; } - &:last-child { padding-bottom: 0; } - } - } - - .notice-list { - margin: 0 0 20px; - - .list-group-item { - h5 > a { - color: lighten(@brand-quirk, 15%); - font-weight: 700; - font-size: @font-size-base; - &:hover, - &:focus { - color: @brand-quirk; - } - } - - h5 + small { - color: lighten(@brand-quirk, 55%); - display: block; - } - - span { - margin-top: 5px; - display: block; - } - - .fa { - color: lighten(@brand-quirk, 40%); - border: 1px solid lighten(@brand-quirk, 40%); - padding: 9px; - vertical-align: middle; - font-size: 14px; - width: 34px; - height: 34px; - border-radius: 100px; - text-align: center; - opacity: .75; - } - - &:first-child { padding-top: 0; } - &:last-child { padding-bottom: 0; } - - &.unread { - .fa { - color: @brand-success; - border-color: @brand-success; - } - - h5 > a { - color: @brand-success; - &:hover, - &:focus { color: lighten(@brand-quirk, 20%); } - } - } - } - } - } -} - -.today-day { - margin: 0; - font-weight: 400; - color: lighten(@brand-quirk, 10%); -} - -.today-date { - margin-top: 8px; - color: lighten(@brand-quirk, 25%); - font-weight: 500; -} - -.today-weather { - margin: 20px 0 5px; - text-transform: uppercase; - font-weight: bold; - font-family: @font-family-primary; - color: @brand-quirk; - - + p { font-size: 11px; } - - > i { - color: lighten(@brand-quirk, 30%); - margin-right: 5px; - } -} diff --git a/dashboard/skins/less/leftpanel.less b/dashboard/skins/less/leftpanel.less deleted file mode 100644 index e3b8808f..00000000 --- a/dashboard/skins/less/leftpanel.less +++ /dev/null @@ -1,485 +0,0 @@ - - -/************ LEFT PANEL ***********/ - -.leftpanel { - background-color: @leftpanel-bg; - width: @leftpanel-width; - position: fixed; - top: 64px; - bottom: 0; - left: -@leftpanel-width; - z-index: 100; - overflow-y: auto; - overflow-x: hidden; - - .tab-pane { - padding: 0; - background-color: transparent; - } - - .media-list-contacts { - .media { border-color: @leftpanel-border; } - } - - @media (min-width: @screen-md-min) { - left: 0 !important; - } -} - - -/***** LEFTPANEL PROFILE *****/ - -.leftpanel-profile { - padding: 15px; - background-color: lighten(@brand-quirk, 10%); - - .media-object { - width: 48px; - padding: 3px; - border: 2px solid lighten(@brand-quirk, 30%); - } - .media-left { padding-right: 15px; } - .media-heading { - margin: 7px 0 2px; - color: fadeout(#fff,10%); - font-weight: 500; - letter-spacing: 1px; - font-size: 14px; - - > a { - color: fadeout(#fff, 50%); - &:hover, - &:focus { - cursor: pointer; - color: fadeout(#fff, 30%); - } - } - } - .media-body { - color: fadeout(#fff, 50%); - } -} - - -.leftpanel-userinfo { - background-color: lighten(@brand-quirk, 15%); - padding-top: 10px; - position: absolute; - left: 0; - right: 0; - z-index: 100; - .border-bottom-radius(@border-radius-base); - - .sidebar-title { margin-top: 0; } - - address { - color: fadeout(#fff, 10%); - padding: 0 15px; - margin-bottom: 20px; - } - - .list-group-item { - border-left: 0; - border-right: 0; - border-color: lighten(@brand-quirk, 18%); - background-color: transparent; - color: fadeout(#fff, 10%); - - &:first-child { .border-top-radius(0); } - &:last-child { .border-bottom-radius(0); } - - label { - margin: 0; - color: fadeout(#fff, 60%); - } - - .clearfix(); - - .social-icons a { - color: fadeout(#fff, 30%); - margin-left: 5px; - font-size: 14px; - line-height: 0; - > i { line-height: 0; } - - &:hover, - &:focus { color: #fff; } - } - } -} - - -/***** LEFT NAVIGATION *****/ - -.nav-quirk { - margin: 0 0 30px; - background-color: #fff; - - > li { - border-top: 1px solid @leftpanel-border; - text-transform: uppercase; - font-family: @font-family-primary; - - > a { - color: lighten(@brand-quirk, 20%); - padding: 12px 14px; - border-radius: 0; - font-weight: 700; - .transition(@transition-base); - - .badge { - background-color: transparent; - color: lighten(@brand-quirk, 50%); - font-size: @font-size-base; - text-transform: none; - padding: 0; - font-weight: normal; - margin-top: 3px; - margin-right: 2px; - } - - > i { - width: 16px; - font-size: 14px; - text-align: center; - margin-right: 7px; - color: @brand-success; - vertical-align: top; - margin-top: 1.5555px; - .transition(@transition-base); - } - - &:hover, - &:focus { - color: @brand-quirk; - background-color: lighten(@bg-color-base, 13%); - } - } - - + li { margin: 0; } - - &:last-child { border-bottom: 1px solid @leftpanel-border; } - - &.nav-parent { - > a { position: relative; } - > a:after { - content: '\f107'; - font-family: 'FontAwesome'; - font-size: 16px; - font-weight: 400; - color: lighten(@brand-quirk, 60%); - position: absolute; - top: 10px; - right: 15px; - } - } - - &.nav-active > ul { display: block; } - - &.active { - border-top-color: transparent; - - + li { border-top-width: 0; } - > a { - color: #fff; - background-color: @brand-success; - #gradient .horizontal(@brand-success; @brand-primary); - - .badge { - background-color: transparent; - color: fadeout(#fff, 50%); - } - - > i { color: #fff; } - &:after { color: #fff; } - } - - .children { - display: block; - border-top: 0; - border-bottom: 1px solid @leftpanel-border; - - &:before { - border-top: 7px solid @brand-success; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - content: ""; - display: inline-block; - position: absolute; - left: 15px; - top: 0; - } - } - } - } - - .children { - list-style: none; - display: none; - margin: 0; - padding: 0; - position: relative; - border-top: 1px solid @leftpanel-border; - background-color: lighten(@bg-color-base, 10%); - - > li { - margin-left: 21px; - border-left: 1px solid @border-color-base; - font-family: @font-family-base; - text-transform: none; - letter-spacing: normal; - display: block; - font-size: 12px; - - &:first-child { padding-top: 7px; } - &:last-child { padding-bottom: 7px; } - - > a { - display: block; - font-weight: 400; - padding: 5px 0 5px 18px; - color: lighten(@brand-quirk, 30%); - position: relative; - height: 28px; - .transition(@transition-base); - - &:before { - content: ''; - position: absolute; - width: 5px; - height: 5px; - left: -3px; - top: 50%; - background-color: lighten(@brand-quirk, 50%); - margin-top: -3px; - border-radius: 50px; - .transition(@transition-base); - } - - &:after { - content: ''; - width: 30px; - height: 30px; - border: 1px solid #a0a8b9; - position: absolute; - left: -15px; - top: 50%; - margin-top: -15px; - border-radius: 50px; - opacity: 0; - .transition(@transition-base); - } - - &:hover, - &:focus, - &:active { - text-decoration: none; - color: lighten(@brand-quirk, 15%); - - &:before { background-color: lighten(@brand-quirk, 30%); } - &:after { - opacity: 1; - border-color: lighten(@brand-quirk, 30%); - width: 11px; - height: 11px; - left: -6px; - margin-top: -6px; - } - } - } - - &.active { - > a { - color: @brand-success; - - &:before { background-color: @brand-success; } - &:after { - opacity: 1; - border-color: @brand-success; - width: 11px; - height: 11px; - left: -6px; - margin-top: -6px; - } - } - } - } - } -} - - -/***** LEFT NAVIGATION STACKED STYLE VARIANT *****/ - -.nav-quirk-stacked { - > li { - - &:first-child { border-top: 1px solid @leftpanel-border; } - - > a { - padding: 12px 0; - letter-spacing: .5px; - color: lighten(@brand-quirk, 15%); - - &:hover, - &:focus { - color: @brand-quirk; - > i { color: @brand-quirk; } - } - } - - &.nav-parent { - > a:after { - top: 9px; - right: 5px; - } - } - - &.active { - border-top-color: @leftpanel-border; - - + li { border-top-width: 1px; } - - > a { - &, - &:hover, - &:focus { - background-color: transparent; - background-image: none; - color: @brand-success; - > i { color: @brand-success; } - } - } - - .children { - border-bottom: 0; - border-top: 1px solid @leftpanel-border; - - &:before { display: none; } - } - - &.nav-parent > a:after { color: @brand-success; } - } - } - - .children { - background-color: transparent; - > li { - margin-left: 8px; - border-left-color: @leftpanel-border; - } - } -} - - -/***** LEFT NAVIGATION PILL STYLE VARIANT *****/ - -.nav-quirk-pills { - > li { - &:last-child { border-bottom: 0; } - - > a { - padding: 10px; - border-radius: @border-radius-base; - - &:hover, - &:focus { - background-color: lighten(@brand-quirk, 72%); - > i { color: inherit; } - } - } - - + li { - border-top: 0; - margin-top: 1px; - } - - &.nav-parent { - a:after { - top: 7px; - right: 10px; - } - } - - &.active { - .children { - border-bottom: 0; - &:before { display: none; } - } - } - - .children { - background-color: transparent; - border-top: 0; - - > li { - margin-left: 18px; - border-left: 0; - - &:first-child { padding-top: 0; } - &:last-child { padding-bottom: 0; } - - > a:after { top: 50%; } - } - } - } -} - - -/***** NAV MAIL *****/ - -.nav-mail > li { - > a { - .badge { color: @brand-danger; } - > i { color: lighten(@brand-quirk, 45%); } - } -} - -.nav-label > li { - text-transform: none; - > a { - font-weight: normal; - > i { - &.primary { color: @brand-primary; } - &.success { color: @brand-success; } - &.warning { color: @brand-warning; } - &.danger { color: @brand-danger; } - } - } -} - -/***** LEFTPANEL CONTACT *****/ - -.input-search-contact { - padding: 0; - margin-bottom: 20px; - margin-top: -15px; - - input { - border: 0; - padding-left: 15px; - border-bottom: 1px solid @leftpanel-border; - border-radius: 0; - background-color: transparent; - - &:focus { border-color: @leftpanel-border; } - } - - > .input-group-btn > .btn { - border: 0; - border-bottom: 1px solid @leftpanel-border; - background-color: transparent; - border-radius: 0; - font-size: 14px; - line-height: 0; - padding-top: 6px; - color: lighten(@brand-quirk, 40%); - } -} - - -/***** LEFTPANEL SETTINGS *****/ - -.list-group-settings { - > .list-group-item { border-color: @leftpanel-border; } -} diff --git a/dashboard/skins/less/loading-animation.less b/dashboard/skins/less/loading-animation.less deleted file mode 100644 index a27768ea..00000000 --- a/dashboard/skins/less/loading-animation.less +++ /dev/null @@ -1,356 +0,0 @@ -.spinner-wrapper{ - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(255, 255, 255, 0.5); -} -.spinner-windows8{ - position: relative; - display: block; - margin: 0 auto; - width: 50px; - height:50px; - margin-top: 100px; - .wBall { - position: absolute; - width: 48px; - height: 48px; - opacity: 0; - -moz-transform: rotate(225deg); - -moz-animation: orbit 2.75s infinite; - -webkit-transform: rotate(225deg); - -webkit-animation: orbit 2.75s infinite; - -ms-transform: rotate(225deg); - -ms-animation: orbit 2.75s infinite; - -o-transform: rotate(225deg); - -o-animation: orbit 2.75s infinite; - transform: rotate(225deg); - animation: orbit 2.75s infinite; - .wInnerBall{ - position: absolute; - width: 6px; - height: 6px; - background: #000000; - left:0px; - top:0px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - -ms-border-radius: 6px; - -o-border-radius: 6px; - border-radius: 6px; - z-index: 2; - } - &:first-child { - -moz-animation-delay: 0.6s; - -webkit-animation-delay: 0.6s; - -ms-animation-delay: 0.6s; - -o-animation-delay: 0.6s; - animation-delay: 0.6s; - } - &:nth-child(2) { - -moz-animation-delay: 0.12s; - -webkit-animation-delay: 0.12s; - -ms-animation-delay: 0.12s; - -o-animation-delay: 0.12s; - animation-delay: 0.12s; - } - &:nth-child(3) { - -moz-animation-delay: 0.24s; - -webkit-animation-delay: 0.24s; - -ms-animation-delay: 0.24s; - -o-animation-delay: 0.24s; - animation-delay: 0.24s; - } - &:nth-child(4) { - -moz-animation-delay: 0.36s; - -webkit-animation-delay: 0.36s; - -ms-animation-delay: 0.36s; - -o-animation-delay: 0.36s; - animation-delay: 0.36s; - } - &:nth-child(5) { - -moz-animation-delay: 0.48s; - -webkit-animation-delay: 0.48s; - -ms-animation-delay: 0.48s; - -o-animation-delay: 0.48s; - animation-delay: 0.48s; - } - } -} - -@-moz-keyframes orbit { - 0% { - opacity: 1; - z-index:99; - -moz-transform: rotate(180deg); - -moz-animation-timing-function: ease-out; - } - - 7% { - opacity: 1; - -moz-transform: rotate(300deg); - -moz-animation-timing-function: linear; - -moz-origin:0%; - } - - 30% { - opacity: 1; - -moz-transform:rotate(410deg); - -moz-animation-timing-function: ease-in-out; - -moz-origin:7%; - } - - 39% { - opacity: 1; - -moz-transform: rotate(645deg); - -moz-animation-timing-function: linear; - -moz-origin:30%; - } - - 70% { - opacity: 1; - -moz-transform: rotate(770deg); - -moz-animation-timing-function: ease-out; - -moz-origin:39%; - } - - 75% { - opacity: 1; - -moz-transform: rotate(900deg); - -moz-animation-timing-function: ease-out; - -moz-origin:70%; - } - - 76% { - opacity: 0; - -moz-transform:rotate(900deg); - } - - 100% { - opacity: 0; - -moz-transform: rotate(900deg); - } - -} - -@-webkit-keyframes orbit { - 0% { - opacity: 1; - z-index:99; - -webkit-transform: rotate(180deg); - -webkit-animation-timing-function: ease-out; - } - - 7% { - opacity: 1; - -webkit-transform: rotate(300deg); - -webkit-animation-timing-function: linear; - -webkit-origin:0%; - } - - 30% { - opacity: 1; - -webkit-transform:rotate(410deg); - -webkit-animation-timing-function: ease-in-out; - -webkit-origin:7%; - } - - 39% { - opacity: 1; - -webkit-transform: rotate(645deg); - -webkit-animation-timing-function: linear; - -webkit-origin:30%; - } - - 70% { - opacity: 1; - -webkit-transform: rotate(770deg); - -webkit-animation-timing-function: ease-out; - -webkit-origin:39%; - } - - 75% { - opacity: 1; - -webkit-transform: rotate(900deg); - -webkit-animation-timing-function: ease-out; - -webkit-origin:70%; - } - - 76% { - opacity: 0; - -webkit-transform:rotate(900deg); - } - - 100% { - opacity: 0; - -webkit-transform: rotate(900deg); - } - -} - -@-ms-keyframes orbit { - 0% { - opacity: 1; - z-index:99; - -ms-transform: rotate(180deg); - -ms-animation-timing-function: ease-out; - } - - 7% { - opacity: 1; - -ms-transform: rotate(300deg); - -ms-animation-timing-function: linear; - -ms-origin:0%; - } - - 30% { - opacity: 1; - -ms-transform:rotate(410deg); - -ms-animation-timing-function: ease-in-out; - -ms-origin:7%; - } - - 39% { - opacity: 1; - -ms-transform: rotate(645deg); - -ms-animation-timing-function: linear; - -ms-origin:30%; - } - - 70% { - opacity: 1; - -ms-transform: rotate(770deg); - -ms-animation-timing-function: ease-out; - -ms-origin:39%; - } - - 75% { - opacity: 1; - -ms-transform: rotate(900deg); - -ms-animation-timing-function: ease-out; - -ms-origin:70%; - } - - 76% { - opacity: 0; - -ms-transform:rotate(900deg); - } - - 100% { - opacity: 0; - -ms-transform: rotate(900deg); - } - -} - -@-o-keyframes orbit { - 0% { - opacity: 1; - z-index:99; - -o-transform: rotate(180deg); - -o-animation-timing-function: ease-out; - } - - 7% { - opacity: 1; - -o-transform: rotate(300deg); - -o-animation-timing-function: linear; - -o-origin:0%; - } - - 30% { - opacity: 1; - -o-transform:rotate(410deg); - -o-animation-timing-function: ease-in-out; - -o-origin:7%; - } - - 39% { - opacity: 1; - -o-transform: rotate(645deg); - -o-animation-timing-function: linear; - -o-origin:30%; - } - - 70% { - opacity: 1; - -o-transform: rotate(770deg); - -o-animation-timing-function: ease-out; - -o-origin:39%; - } - - 75% { - opacity: 1; - -o-transform: rotate(900deg); - -o-animation-timing-function: ease-out; - -o-origin:70%; - } - - 76% { - opacity: 0; - -o-transform:rotate(900deg); - } - - 100% { - opacity: 0; - -o-transform: rotate(900deg); - } - -} - -@keyframes orbit { - 0% { - opacity: 1; - z-index:99; - transform: rotate(180deg); - animation-timing-function: ease-out; - } - - 7% { - opacity: 1; - transform: rotate(300deg); - animation-timing-function: linear; - origin:0%; - } - - 30% { - opacity: 1; - transform:rotate(410deg); - animation-timing-function: ease-in-out; - origin:7%; - } - - 39% { - opacity: 1; - transform: rotate(645deg); - animation-timing-function: linear; - origin:30%; - } - - 70% { - opacity: 1; - transform: rotate(770deg); - animation-timing-function: ease-out; - origin:39%; - } - - 75% { - opacity: 1; - transform: rotate(900deg); - animation-timing-function: ease-out; - origin:70%; - } - - 76% { - opacity: 0; - transform:rotate(900deg); - } - - 100% { - opacity: 0; - transform: rotate(900deg); - } - -} \ No newline at end of file diff --git a/dashboard/skins/less/lobi-variables.less b/dashboard/skins/less/lobi-variables.less deleted file mode 100644 index bf01cca4..00000000 --- a/dashboard/skins/less/lobi-variables.less +++ /dev/null @@ -1,22 +0,0 @@ - -@lobipanel-basic-z-index : 10000; -@lobipanel-panel-title-padding-horizontal : 15px; -@lobipanel-panel-title-font-size : 16px; -@lobipanel-panel-title-line-height : 30px; -@lobipanel-panel-margin-bottom : 15px; -@lobipanel-transition-duration : 0.2s; -@lobipanel-panel-control-font-size : 14px; -@lobipanel-panel-control-width : 30px; -@lobipanel-panel-control-border-left : 1px solid rgba(0, 0, 0, 0.05); -@lobipanel-panel-control-hover-bg : rgba(0, 0, 0, 0.15); -@lobipanel-panel-control-hover-text-shadow : 2px 2px 5px rgba(0, 0, 0, 0.6); -@lobipanel-panel-unpin-box-shadow : 2px 2px 15px 5px rgba(10, 10, 10, 0.5); -@lobipanel-panel-minimized-min-width : 170px; -@lobipanel-panel-minimized-margin-right : 5px; -@lobipanel-toolbar-height : 36px; -@lobipanel-toolbar-padding : 2px; -@lobipanel-toolbar-bg : rgba(34, 115, 182, 0.51); - -@lobipanel-resize-width : 10px; -@lobipanel-resize-height : @lobipanel-resize-width; -@lobipanel-resize-offset : -@lobipanel-resize-width/2; diff --git a/dashboard/skins/less/lobipanel.less b/dashboard/skins/less/lobipanel.less deleted file mode 100644 index 61da00aa..00000000 --- a/dashboard/skins/less/lobipanel.less +++ /dev/null @@ -1,7 +0,0 @@ - -@import "../bootstrap/less/variables.less"; -@import "../bootstrap/less/mixins.less"; - -@import "variables.less"; -@import "loading-animation.less"; -@import "main.less"; \ No newline at end of file diff --git a/dashboard/skins/less/main.less b/dashboard/skins/less/main.less deleted file mode 100644 index ff7bb4cd..00000000 --- a/dashboard/skins/less/main.less +++ /dev/null @@ -1,264 +0,0 @@ -.tooltip{ - z-index: 20000; -} -body.lobipanel-minimized{ - padding-bottom: @lobipanel-toolbar-height; -} - -.lobipanel{ - position: relative; - margin-bottom: @lobipanel-panel-margin-bottom; - >.panel-heading{ - padding: 5px; - position: relative; - .border-top-radius(0px); - >.panel-title{ - float: left; - max-width: calc(%(~"100% - %a", @lobipanel-panel-control-width)); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-size: @lobipanel-panel-title-font-size; - line-height: @lobipanel-panel-title-line-height; - padding-left: @lobipanel-panel-title-padding-horizontal; - h1, h2, h3, h4, h5, h6{ - margin: 0; - line-height: @lobipanel-panel-title-line-height; - } - input{ - color: inherit; - line-height: @lobipanel-panel-title-line-height; - border-radius: 2px; - padding: 0 5px; - width: 100%; - background-color: rgba(0, 0, 0, 0.2); - border: 1px solid @brand-primary; - outline: 0; - &:focus{ - background-color: rgba(0, 0, 0, 0.15); - } - } - } - .dropdown{ - display: inline-block; - float: right; - position: relative; - .dropdown-menu{ - left: auto; - right: 0; - min-width: initial; - margin-top: 0; - border-radius: 0; - >li>a{ - .control-title{ - display: inline-block; - margin-left: 15px; - } - } - } - .dropdown-toggle{ - border: none; - outline: 0; - background-color: transparent; - text-align: center; - padding: 0; - width: @lobipanel-panel-control-width; - font-size: @lobipanel-panel-control-font-size; - .transition(all @lobipanel-transition-duration); - .panel-control-icon{ - top: 0; - line-height: @lobipanel-panel-title-line-height; - } - &:hover, - &:hover:focus{ - text-shadow: @lobipanel-panel-control-hover-text-shadow; - background-color: @lobipanel-panel-control-hover-bg; - } - } - &.open{ - .dropdown-toggle{ - text-shadow: @lobipanel-panel-control-hover-text-shadow; - background-color: @lobipanel-panel-control-hover-bg; - } - } - } - .clearfix(); - } - @media screen and (min-width: @screen-sm-min){ - .panel-heading{ - .panel-title{ - max-width: calc(%(~"100% - %a", @lobipanel-panel-control-width * 6)); - } - .lobipanel-dropdown-screen-lg(); - } - } - >.panel-body{ - overflow: auto; - position: relative; - } - .panel-loader{ - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: #fff; - opacity: 0.8; - } - &.panel-collapsed{ - >.panel-heading{ - border-bottom: none; - .dropdown{ - .dropdown-menu{ - >li{ - >a{ - &[data-func="unpin"], - &[data-func="reload"], - &[data-func="expand"]{ - display: none; - } - } - } - } - } - } - } - &.panel-expanded, - &.panel-unpin, - &.panel-minimized.panel-unpin{ - margin-bottom: 0; - } - &.panel-unpin{ - overflow: hidden; - position: fixed; - z-index: @lobipanel-basic-z-index; - .box-shadow(@lobipanel-panel-unpin-box-shadow); - >.panel-heading{ - cursor: move; - } - &.panel-minimized{ - float: left; - position: initial; - border-radius: 0; - .box-shadow(none); - min-width: @lobipanel-panel-minimized-min-width; - margin-right: @lobipanel-panel-minimized-margin-right; - >.panel-heading{ - padding: 0; - cursor: pointer; - border-bottom: none; - .panel-title{ - max-width: calc(%(~"100% - %a", @lobipanel-panel-control-width * 2)); - h1,h2,h3,h4,h5,h6{ - overflow: hidden; - text-overflow: ellipsis; - } - } - .lobipanel-dropdown-screen-lg(); - .dropdown{ - .dropdown-menu{ - >li{ - >a{ - display: none; - &[data-func="close"], - &[data-func="expand"]{ - display: inline-block; - } - } - } - } - } - } - >.panel-body, - >.panel-footer{ - display: none !important; - } - } - } - &.panel-expanded{ - >.panel-heading{ - cursor: initial; - .dropdown{ - .dropdown-menu{ - >li{ - >a{ - &[data-func="unpin"], - &[data-func="minimize"]{ - display: none; - } - } - } - } - } - } - &.panel-unpin{ - >.panel-heading{ - .panel-control[data-func="minimize"]{ - display: block; - } - } - } - } -} -.lobipanel-minimized-toolbar{ - position: fixed; - height: @lobipanel-toolbar-height; - padding: @lobipanel-toolbar-padding; - bottom: 0; - left: 0; - right: 0; - z-index: 20000; - background: @lobipanel-toolbar-bg; -} -.lobipanel-placeholder{ - background-color: #f9f5d1; - border: 1px dashed #919191; - margin-bottom: @lobipanel-panel-margin-bottom; -} - -.lobipanel-dropdown-screen-lg(){ - .dropdown{ - .dropdown-menu{ - position: static; - display: inline-block; - border: none; - padding: 0; - margin: 0; - min-width: initial; - width: auto; - .box-shadow(none); - background: transparent; - >li{ - display: inline-block; - >a{ - cursor: pointer; - color: inherit; - padding: 0; - outline: 0; - text-align: center; - width: @lobipanel-panel-control-width; - font-size: @lobipanel-panel-control-font-size; - .transition(all @lobipanel-transition-duration); - .panel-control-icon{ - top: 0; - line-height: @lobipanel-panel-title-line-height; - } - .control-title{ - display: none; - } - &:hover, &:focus:hover{ - text-shadow: @lobipanel-panel-control-hover-text-shadow; - background-color: @lobipanel-panel-control-hover-bg; - } - &:focus{ - text-shadow: none; - background-color: transparent; - } - } - } - } - .dropdown-toggle{ - display: none; - } - } -} \ No newline at end of file diff --git a/dashboard/skins/less/mainpanel.less b/dashboard/skins/less/mainpanel.less deleted file mode 100644 index 0e95f15a..00000000 --- a/dashboard/skins/less/mainpanel.less +++ /dev/null @@ -1,72 +0,0 @@ - -/***** MAIN PANEL *****/ - - -.mainpanel { - padding-top: @header-height; - - @media (min-width: @screen-md-min) { - margin-left: @leftpanel-width; - } - - @media (max-width: 991px) { - position: relative; - } -} - -.breadcrumb-quirk { - padding: 0; - background-color: transparent; - margin-bottom: 20px; - - > li { - font-size: 12px; - > a { - color: @color-gray; - - &:hover, - &:focus { - color: darken(@color-gray, 10%); - } - } - - + li:before { - content: '\f105'; - font-family: 'FontAwesome'; - color: lighten(@brand-quirk, 40%); - margin-right: 5px; - } - - i { - font-size: 14px; - display: inline-block; - vertical-align: top; - margin-top: 1px; - } - - &.active { - color: lighten(@brand-quirk, 15%); - font-weight: 500; - } - } -} - -.contentpanel { - padding: 20px; - position: relative; - - @media (max-width: 320px) { - padding-left: 10px; - padding-right: 10px; - } -} - -.contentpanel:after { - clear: both; - display: block; - content: ''; -} - -form .form-group:last-child { - margin-bottom:0; -} diff --git a/dashboard/skins/less/mixins.less b/dashboard/skins/less/mixins.less deleted file mode 100644 index 16456200..00000000 --- a/dashboard/skins/less/mixins.less +++ /dev/null @@ -1,378 +0,0 @@ -// Mixins - -.transition() { - -moz-transition: all 0.2s ease-out 0s; - -webkit-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} - -// Alerts -.alert-link-color(@color) { - .alert-link { - color: darken(@color, 2%); - &:hover, - &:focus { - color: darken(@color, 8%); - } - } -} - - -// Toggle -.toggle-variant(@color) { - .toggle-on.active { - background-color: @color; - + .toggle-blob { border: 3px solid @color; } - } -} - - -// Checkbox color variant -.ckbox-variant(@ckbox-border; @ckbox-checked-bg; @ckbox-color) { - input[type='checkbox'] { - &:checked + span { - &:before { - background-color: @ckbox-checked-bg; - border-color: @ckbox-checked-bg; - } - &:after { color: @ckbox-color; } - } - } -} - - -// Radio box color variant -.rdiobox-variant(@rdio-border; @rdio-dot-bg) { - input[type='radio'] { - &:checked + span { - &:before { - border-color: @rdio-border; - } - &:after { background-color: @rdio-dot-bg; } - } - } -} - -// Modified button variant from bootstrap -.btn-variant(@color; @background; @border) { - color: @color; - background-color: @background; - border-color: @border; - - &:focus, - &.focus { - color: @color; - background-color: darken(@background, 7%); - border-color: darken(@border, 20%); - .box-shadow(none); - } - &:hover { - color: @color; - background-color: darken(@background, 5%); - border-color: darken(@border, 7%); - } - &:active, - &.active, - .open > .dropdown-toggle& { - color: @color; - background-color: darken(@background, 7%); - border-color: darken(@border, 7%); - .box-shadow(none); - - &:hover, - &:focus, - &.focus { - color: @color; - background-color: darken(@background, 7%); - border-color: darken(@border, 10%); - } - } - &:active, - &.active, - .open > .dropdown-toggle& { - background-image: none; - } - &.disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &.focus, - &:active, - &.active { - background-color: @background; - border-color: @border; - } - } - - .badge { - color: @background; - background-color: @color; - } -} - - -// Button stroke variant -.btn-stroke-variant(@color) { - border-color: @color; - color: @color; - - &:hover, - &:focus, - &.focus, - &:active, - &.active, - .open > .dropdown-toggle& { - color: darken(@color, 10%); - border-color: darken(@color, 10%); - } -} - - -// Nav Tabs Color Variant -.nav-variant(@color) { - background-color: @color; - > li { - > a { - &:hover, - &:focus { - background-color: darken(@color, 5%); - } - } - - &.active > a { - &, - &:hover, - &:focus { color: @color; } - } - } -} - -// Nav Color Variant -.nav-quirk-variant(@color) { - > li { - > a > i { color: @color; } - &.active { - > a { - &, - &:hover, - &:focus { - color: #fff; - background-color: @color; - background-image: none; - } - } - - .children { - &:before { border-top-color: @color; } - } - } - } - - .children { - > li.active > a { - color: @color; - - &:before { background-color: @color; } - &:after { border-color: @color; } - } - } -} - -// Nav Color Dark Version Variant -.nav-quirk-dark-variant(@color) { - background-color: lighten(@brand-quirk, 10%); - > li { - > a > i { color: @color; } - &, - &:last-child { border-color: lighten(@brand-quirk, 15%); } - - > a { - color: lighten(@brand-quirk, 40%); - &:hover, - &:focus { - background-color: lighten(@brand-quirk, 5%); - color: #fff; - } - } - - &.active { - > a { - &, - &:hover, - &:focus { - color: #fff; - background-color: @color; - background-image: none; - } - } - - .children { - &:before { border-top-color: @color; } - } - } - } -} - - -// Panel Group Color Variant -.panel-group-variant(@color) { - > .panel-heading { - background-color: transparent; - - .panel-title { - > a { - &, - &:hover, - &:focus { color: @color; } - - &.collapsed { - background-color: @color; - &:hover, - &:focus { background-color: darken(@color, 5%); } - } - } - } - } - - + .panel { border-color: lighten(@color, 7%); } -} - - -// Panel Full Colored Variant -.panel-full-variant(@color) { - - background-color: @color; - color: fadeout(#fff, 20%); - - .panel-options > li > a { - color: fadeout(#fff, 30%); - &:hover, - &:focus { color: #fff; } - } - - .panel-heading { - background-color: transparent; - .panel-title { color: #fff; } - } - - .form-control { border-color: transparent; } - .panel-body { - .panel-title, h1,h2,h3,h4,h5,h6 { - color: #fff; - font-weight: 500; - } - - a { - color: fadeout(#fff, 30%); - &:hover, - &:focus { color: #fff; } - } - } - - .panel-footer { - padding-top: 0; - background-color: transparent; - } -} - -// jQuery Gritter -.add-gritter-icon(@classname; @content) { - .gritter-item-wrapper.with-icon.@{classname} > .gritter-item:before { - content: '\@{content}'; - } -} - - -// Jquery UI Slider Color Variant -.slider-variant(@color) { - .ui-slider-range { background-color: @color; } - .ui-slider-handle { - border-color: @color; - &:after { background-color: @color; } - } -} - - -// Table Color Variant -.table-variant(@color) { - background-color: lighten(@color, 54%); - > thead, - > tfoot { - > tr { - > th { - border-color: fadeout(#fff, 70%); - background-color: @color; - color: #fff; - } - } - } - - > tbody > tr { - > th, - > td { - color: fadeout(darken(@color, 20%), 20%); - } - } - - > tbody > tr.info { - > th, - > td { - background-color: lighten(@color, 48%); - } - } - - &.table-striped { - > tbody > tr:nth-of-type(odd) { - background-color: lighten(@color, 50%); - } - } - - &.table-hover { - > tbody > tr:hover { - background-color: lighten(@color, 48%); - } - - > tbody > tr.info:hover { - > th, - > td { - background-color: lighten(@color, 46%); - } - } - } - - &.table-striped-col { - > thead, - > tfoot { - > tr { - th, - td { - &:nth-of-type(even) { - background-color: darken(@color, 3%); - } - } - } - } - - > tbody { - > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) { - th, - td { - &:nth-of-type(even) { - background-color: lighten(@color, 50%); - } - } - } - } - } -} - -// Quick Access Page Icon Blocks -.panel-quick-page-hover(@color, @color-hover) { - background-color: @color; - .transition(@transition-base); - - &:hover, - &:focus { background-color: @color-hover; } -} diff --git a/dashboard/skins/less/pages.less b/dashboard/skins/less/pages.less deleted file mode 100644 index cfc7a812..00000000 --- a/dashboard/skins/less/pages.less +++ /dev/null @@ -1,879 +0,0 @@ - - -/********** PAGES **********/ - - -/***** ASSET MANAGER *****/ - -.well-asset-options { - background-color: lighten(@brand-quirk, 20%); - - @media (max-width: 360px) { - display: none; - } - - .btn-toolbar { - margin: 0; - - @media (max-width: 1024px) { - float: none !important; - margin-bottom: 20px; - } - } - - .btn { - @media (max-width: 1024px) { - padding-left: 10px; - padding-right: 10px; - } - } -} - -.btn-toolbar-media-manager { - margin-bottom: 20px; - - .btn { - border-color: transparent; - - &:hover, - &:focus { - border-color: transparent; - } - - > i { - font-size: 14px; - vertical-align: baseline; - line-height: 0; - margin-right: 5px; - } - - + .btn { margin-left: 1px; } - } -} - -.filemanager { - .thmb { - background-color: #fff; - border-radius: @border-radius-base; - padding: 10px; - margin-bottom: 20px; - position: relative; - - &:after { - clear: both; - display: block; - content: ''; - } - } - - .ckbox { - position: absolute; - top: 15px; - left: 15px; - display: none; - - span:before { border: 0; } - } - - .fm-group { - position: absolute; - top: 15px; - right: 15px; - display: none; - } - - .fm-toggle { - padding: 1px 4px; - line-height: normal; - background-color: #fff; - border-radius: @border-radius-base; - border: 0; - - &:hover, - &:focus, - &:active { background-color: #fff !important; } - } - - .fm-menu { - border-color: @border-color-base; - min-width: 120px; - a { color: @text-color; } - i { - margin-right: 7px; - width: 16px; - font-size: 14px; - } - } - - .thmb-prev { - background-color: #eee; - overflow: hidden; - a { display: block; } - } - - .fm-title { - margin-bottom: 2px; - font-weight: 500; - - a { - overflow-x: hidden; - text-overflow: ellipsis; - display: block; - } - } - -} - -.fm-sidebar { - padding-left: 10px; - - .panel-title a { - color: lighten(@brand-quirk, 50%); - font-size: 11px; - font-weight: 600; - letter-spacing: normal; - .transition(@transition-base); - - &:hover { - text-decoration: none; - color: lighten(@brand-quirk, 40%);; - } - } - - .tag-list { - list-style: none; - padding: 0; - margin: 0; - li { - float: left; - margin-right: 5px; - margin-bottom: 5px; - - a { - display: block; - padding: 2px 7px; - font-size: 11px; - background-color: #fcfcfc; - border-radius: @border-radius-base; - color: #666; - - &:hover { - color: #fff; - text-decoration: none; - background-color: @brand-primary; - } - } - } - } -} - -.folder-list { - list-style: none; - padding: 0; - margin: 0; - - li { - display: block; - border-bottom: 1px solid lighten(@brand-quirk, 75%); - - a { - display: block; - padding: 9px 0 10px; - color: lighten(@brand-quirk, 30%); - font-weight: 500; - .transition(@transition-base); - - &:hover { - color: @brand-quirk; - text-decoration: none; - } - } - - i { - margin-right: 10px; - width: 16px; - font-size: 14px; - } - - &:first-child > a { padding-top: 0; } - &:last-child { - border-bottom: 0; - > a { padding-bottom: 0; } - } - } -} - - -/****** PEOPLE DIRECTORY ******/ - -.people-list { - .people-options { - padding: 15px; - margin-bottom: 20px; - background-color: lighten(@brand-quirk, 15%); - border-radius: @border-radius-base; - - .btn-toolbar { - - @media (max-width: 480px) { - display: none; - } - - .btn { - font-size: 11px; - &.btn-danger { color: fadeout(#fff, 10%); } - > i { font-size: 14px; } - } - } - - .btn-default { - border-color: transparent; - &:hover, - &:focus { border-color: transparent; } - } - } - - .people-count { - padding-top: 10px; - font-weight: 400; - color: lighten(@brand-quirk, 50%); - - > strong { - font-weight: 500; - color: lighten(@brand-quirk, 70%); - margin: 0 3px; - } - } - - .people-pager { - margin-left: 15px; - > .btn { - font-size: 14px; - margin-left: 1px; - line-height: 17px; - border-color: transparent; - - &:first-child { margin-left: 0; } - &:hover, - &:focus { border-color: transparent; } - } - } -} - - -/***** TIMELINE *****/ - -.timeline-wrapper { - margin-left: 123px; - position: relative; - border-left: 2px solid lighten(@brand-quirk, 30%); - padding-left: 40px; - - @media (max-width: 640px) { - border-left: 0; - padding-left: 0; - margin-left: 0; - } - - .timeline-date { - position: relative; - background-color: lighten(@brand-quirk, 30%); - width: 250px; - padding: @padding-base-vertical 25px; - text-transform: uppercase; - font-weight: 600; - font-family: @font-family-primary; - color: #fff; - text-align: center; - letter-spacing: .5px; - border-radius: @border-radius-base; - margin-bottom: 40px; - margin-left: -165px; - - @media (max-width: 640px) { - padding-left: 10px; - padding-right: 10px; - width: auto; - margin-left: 0; - margin-top: 20px; - } - - > a { - color: fadeout(#fff, 20%); - .transition(@transition-base); - &:hover, - &:focus { - color: #fff; - } - } - } - - .panel-post-item { - position: relative; - - @media (max-width: 640px) { - margin-bottom: 0; - margin-top: 70px; - } - - &:before { - content: ''; - width: 40px; - height: 40px; - border-radius: 100px; - border: 2px solid lighten(@brand-quirk, 30%); - position: absolute; - top: 15px; - left: -62px; - background-color: @body-bg; - - @media (max-width: 640px) { - top: -55px; - left: 0; - } - } - - .panel-heading:before { - border-right: 8px solid #fff; - border-top: 8px solid transparent; - border-bottom: 8px solid transparent; - content: ""; - display: inline-block; - left: -8px; - position: absolute; - top: 27px; - - @media (max-width: 640px) { display: none; } - } - - &:after { - font-family: 'FontAwesome'; - position: absolute; - left: -48px; - font-size: 14px; - color: lighten(@brand-quirk, 30%); - - @media (max-width: 640px) { left: 13px; } - } - - &.status:after { - content: '\f040'; - top: 25px; - - @media (max-width: 640px) { top: -45px; } - } - - &.commented:after { - content: '\f075'; - top: 24px; - - @media (max-width: 640px) { top: -46px; } - } - - &.pictures:after { - content: '\f03e'; - top: 25px; - left: -50px; - - @media (max-width: 640px) { - left: 12px; - top: -45px; - } - } - - &.twitter:after { - content: '\f099'; - top: 25px; - left: -49px; - - @media (max-width: 640px) { - left: 13px; - top: -45px; - } - } - - .media-time { - position: absolute; - top: 20px; - left: -225px; - font-size: 22px; - letter-spacing: normal; - text-align: right; - font-weight: 400; - color: lighten(@brand-quirk, 20%); - width: 150px; - text-transform: uppercase; - - @media (max-width: 640px) { - left: 0; - top: -50px; - } - } - } -} - - -/***** PROFILE *****/ - -.profile-wrapper { - margin: 0; - display: table; - width: 100%; - - @media (max-width: 1024px) { - display: block; - width: auto; - } - - .profile-left, - .profile-right, - .profile-sidebar { - padding: 0; - float: none; - display: table-cell; - vertical-align: top; - - @media (max-width: @screen-sm-max) { - display: block; - } - } - - .profile-left { - background-color: lighten(@brand-quirk,15%); - .border-left-radius(@border-radius-base); - - @media (max-width: 1024px) { width: 30%; } - @media (max-width: @screen-sm-max) { - display: table; - width: 100%; - - .profile-left-heading, - .profile-left-body { - display: table-cell; - vertical-align: top; - } - - .profile-left-heading { width: 40%; } - .profile-left-body { width: 60%; } - } - - @media(max-width: 480px) { - .profile-left-heading, - .profile-left-body { - display: block; - width: auto; - } - } - } - - .profile-right { - background-color: #fff; - .border-right-radius(@border-radius-base); - - @media (max-width: 1024px) { width: 70%; } - @media (max-width: @screen-sm-max) { - width: 100%; - margin-top: 20px; - .border-top-radius(@border-radius-base); - } - - .profile-right-body { - background-color: transparent; - padding: 20px; - - .panel { - border-bottom: 1px solid @border-color-base; - padding-bottom: 40px; - margin-bottom: 35px; - } - .panel-heading { padding: 0 0 15px; } - .panel-body { - padding: 0 0 15px; - line-height: 18px; - } - .panel-footer { - padding: 0; - background-color: transparent; - } - - .form-group { margin: 15px 0 0; } - .form-control { - border-color: @input-border; - padding-left: @padding-base-horizontal; - .border-top-radius(@border-radius-base); - } - } - } - - .profile-sidebar { - padding-left: 20px; - - @media (min-width: @screen-md-min) and (max-width: 1024px) { - width: 100%; - display: block; - float: left; - margin-top: 20px; - padding-left: 0; - - .row > div { width: 50%; } - } - - @media (max-width: @screen-sm-max) { - padding-left: 0; - margin-top: 20px; - } - } -} - - - -/***** NOT FOUND PANEL *****/ - -.notfoundpanel { - width: 720px; - text-align: center; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -55%); - - @media (max-width: 640px) { - width: auto; - position: static; - transform: none; - padding: 20px; - } - - h1 { - font-size: 200px; - font-weight: 700; - line-height: 160px; - font-family: @font-family-primary; - color: lighten(@brand-quirk, 10%); - margin: 0 0 20px; - - @media (max-width: 640px) { - font-size: 100px; - line-height: 100px; - } - } - - h3 { - margin-top: 0; - font-weight: 300; - font-size: 30px; - color: lighten(@brand-quirk, 20%); - - @media (max-width: 640px) { - font-size: 24px; - } - } - - h4 { - margin: 30px 0 20px; - font-size: 14px; - font-weight: 500; - line-height: 21px; - color: lighten(@brand-quirk, 25%); - letter-spacing: .3px; - } - - form { - width: 350px; - margin: auto; - - @media (max-width: 360px) { width: 280px; } - } - - .list-inline { - text-align: left; - > li:last-child { - @media (max-width: 560px) { - display: block; - float: none !important; - text-align: left; - margin-top: 10px; - } - } - - > li { - @media (max-width: 360px) { - display: block; - float: none; - + li { margin-top: 5px; } - } - } - } -} - - -/***** SIGN IN/UP *****/ - -.signwrapper { - background-image: url(../images/photos/bg.jpg); - background-repeat: no-repeat; - background-position: center; - background-attachment: fixed; - background-size: cover; - - @media (max-width: @screen-xs-max) { - background-image: none; - background-color: fadeout(@brand-quirk, 10%); - } - - .input-group > .input-group-addon { - background-color: #fff; - border-color: transparent; - padding-right: 0; - > i { color: @brand-quirk; } - } - - .form-control { - border-color: transparent; - background-color: #fff; - } - - .panel-heading { padding-top: 10px; } - .panel-body { padding-bottom: 0; } - - .panel-title { - text-align: center; - color: #fff; - margin-top: 20px; - text-transform: none; - font-weight: 200; - font-size: 20px; - font-family: @font-family-base; - letter-spacing: .7px; - } - - .select2-dropdown { - z-index: 400; - border-color: transparent; - } - - .select2-container--default .select2-selection--single { border-color: transparent; } - - .btn-sign { - border-color: fadeout(#fff, 70%); - color: fadeout(#fff, 70%); - - &:hover, - &:focus { - border-color: fadeout(#fff, 30%); - color: fadeout(#fff, 30%); - } - } -} - -.sign-overlay { - background-image: url(../images/dot.png); - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 100; - opacity: 1; - - @media (max-width: @screen-xs-max) { display: none; } -} - -.signpanel { - background-color: fadeout(#000, 5%); - #gradient .horizontal(transparent; darken(@brand-quirk, 5%)); - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 200; - opacity: .75; - - @media (max-width: @screen-xs-max) { - background-image: none; - background-color: @brand-quirk; - opacity: 1; - } -} - -/***** SIGN IN *****/ - -.signin { - width: 400px; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%,-50%); - background-color: fadeout(@brand-quirk, 10%); - padding: 20px; - z-index: 300; - - @media (max-width: @screen-xs-max) { - top: 20px; - left: 0; - transform: none; - width: 400px; - position: relative; - margin: auto; - padding-top: 0; - } - - @media (max-width: 360px) { width: 320px; } - - h1 { - color: @brand-success; - text-align: center; - margin: 0; - font-weight: 500; - } - - .forgot { - margin: 10px 0 21px; - color: fadeout(#fff, 50%); - display: inline-block; - .transition(@transition-base); - - &:hover, - &:focus { - color: #fff; - } - } - - .btn-fb { - color: fadeout(#fff,20%); - - &:hover, - &:focus { - color: fadeout(#fff, 50%); - } - } - -} - -/***** SIGN UP *****/ - -.signup { - position: absolute; - top: 40px; - left: 50%; - transform: translateX(-50%); - z-index: 300; - width: 900px; - - @media (max-width: @screen-xs-max) { - top: 20px; - left: 0; - transform: none; - width: 400px; - position: relative; - margin: auto; - padding-top: 0; - } - - @media (max-width: 360px) { width: 300px; } - - h1 { - color: @brand-success; - text-align: center; - margin: 0; - font-weight: 500; - } - - .panel { - background-color: fadeout(@brand-quirk, 10%); - padding: 20px 20px 40px 20px; - - @media (max-width: 360px) { padding: 0; } - } - - .row > div { - padding-left: 7px; - padding-right: 7px; - - &:first-child { padding-left: 10px; } - &:last-child { - padding-right: 10px; - color: fadeout(#fff, 30%); - } - } - - .signtitle { - color: @brand-success; - font-weight: 200; - letter-spacing: .5px; - margin-top: 0; - } - - .sign-sidebar { - padding: 33px 40px 0; - - @media (max-width: @screen-xs-max) { display: none; } - - p { - line-height: 21px; - font-weight: 200; - letter-spacing: .5px; - font-size: 14px; - } - - h4 { - margin: 0 0 20px; - color: @brand-success; - } - - .panel-title { - text-align: left; - color: #fff; - } - - .reason { - font-weight: 700; - font-family: @font-family-primary; - font-size: 13px; - text-transform: uppercase; - letter-spacing: 1px; - margin-bottom: 10px; - color: #fff; - } - } -} - - -/***** DASHBOARD *****/ - -.dash-left, -.dash-right { - - .table { - > thead, - > tbody, - > tfoot { - > tr { - > th, - > td { - padding-left: 20px; - padding-right: 20px; - } - } - } - } - - @media (min-width: @screen-md-min) and (max-width: 1024px) { - width: 100%; - } -} - -.dash-right { - .col-sm-5 { - @media (max-width: @screen-sm-min) { width: 41.6667%; } - @media (max-width: 640px) { - width: 50%; - float: left; - } - @media (max-width: 560px) { - width: auto; - float: none; - } - } -} diff --git a/dashboard/skins/less/plugins-override.less b/dashboard/skins/less/plugins-override.less deleted file mode 100644 index 81e69efd..00000000 --- a/dashboard/skins/less/plugins-override.less +++ /dev/null @@ -1,1073 +0,0 @@ - - -/***** SELECT2 *****/ - -.select2-results__option { - padding: 6px (@padding-base-horizontal - 4px); - border-radius: @border-radius-base; - margin-bottom: 1px; -} - -.select2-container--default { - - .select2-selection--single { - background-color: @input-bg; - border-color: @input-border; - border-radius: @border-radius-base; - height: @input-height-base; - outline: none; - - .select2-selection__rendered { - color: @input-color; - line-height: @input-height-base - 2px; - padding-left: @padding-base-horizontal; - } - - .select2-selection__placeholder { - color: @input-color-placeholder; - } - - .select2-selection__arrow { - width: 30px; - height: @input-height-base - 2px; - line-height: @input-height-base - 2px; - } - } - - .select2-selection--multiple { - background-color: @input-bg; - border-color: @input-border; - border-radius: @border-radius-base; - min-height: @input-height-base; - outline: none; - - .select2-selection__rendered { - padding: 0 4px; - } - - .select2-selection__choice { - margin-top: 4px; - margin-right: 4px; - padding: 4px 10px 4px 5px; - border-color: transparent; - border-radius: @border-radius-base; - background-color: @brand-success; - color: #fff; - } - - .select2-selection__choice__remove { - color: #fff; - margin-right: 6px; - opacity: .75; - font-size: 12px; - } - } - - &.select2-container--focus .select2-selection--multiple { - border-color: darken(@input-border, 10%); - } - - .select2-search--dropdown .select2-search__field { - border-color: darken(@input-border, 10%); - border-radius: @border-radius-base; - } - - .select2-results__option[aria-selected="true"] { - background-color: lighten(@body-bg, 5%); - } - - .select2-results__option--highlighted[aria-selected] { - background-color: @brand-success; - } - - .select2-results > .select2-results__options { - margin: 4px; - } - - .select2-search--inline .select2-search__field { - margin-top: 4px; - line-height: 25px; - padding-left: @padding-base-horizontal - 5px; - } - - &.select2-container--disabled .select2-selection--single { - background-color: @input-bg-disabled; - } -} - -.select2-container--open { - - .select2-selection--single, - .select2-selection--multiple { - background-color: #fff; - border-color: darken(@input-border, 10%); - } - - .select2-dropdown--above { - .border-top-radius(@border-radius-base); - } - - .select2-dropdown--below { - .border-bottom-radius(@border-radius-base); - } -} - -.select2-dropdown { - border-color: darken(@input-border, 10%); - z-index: 200; -} - -.select2-search--dropdown { - padding-bottom: 0; -} - -.has-error { - .select2-selection--single, - .select2-selection--multiple { - border-color: @brand-danger; - } -} - - -/***** TOGGLES *****/ - -.toggle-wrapper { - width: 60px; - display: inline-block; - margin-right: 5px; -} - -.toggle-slide { - .toggle-on, - .toggle-off, - .toggle-slide .toggle-blob { - text-align: center; - } -} - -.toggle-light { - .toggle-slide { .box-shadow(none); } - - .toggle-blob { - background-color: #fff; - background-image: none; - .box-shadow(none); - - &:hover, - &:focus { - background-color: #fff; - background-image: none; - } - } - - .toggle-on, - .toggle-off { - font-size: 11px; - font-weight: bold; - text-shadow: none; - .box-shadow(none); - } - - .toggle-on { - background-color: #d0d4e7; - text-indent: -5px !important; - - + .toggle-blob { border: 3px solid #d0d4e7; } - - &.active { - background-color: @brand-quirk; - + .toggle-blob { border: 3px solid @brand-quirk; } - } - } - - .toggle-off { - color: #fff; - background-color: #d0d4e7; - background-image: none; - text-indent: 5px !important; - } - - // Color Variants - &.primary { .toggle-variant(@brand-primary); } - &.success { .toggle-variant(@brand-success); } - &.warning { .toggle-variant(@brand-warning); } - &.danger { .toggle-variant(@brand-danger); } - &.info { .toggle-variant(@brand-info); } -} - -.toggle-modern { - .toggle-slide { - background: none; - text-shadow: none; - border-radius: @border-radius-base; - .box-shadow(none); - } - - .toggle-blob { - border-radius: @border-radius-base; - background-color: #fff; - background-image: none; - .box-shadow(none); - - &:hover, - &:focus { - background-color: #fff; - background-image: none; - } - } - - .toggle-on, - .toggle-off { - text-shadow: none; - font-weight: bold; - .box-shadow(none); - } - - .toggle-on, - .toggle-on.active { - background-color: @brand-quirk; - background-image: none; - } - - .toggle-on { - background-color: #d0d4e7; - - + .toggle-blob { border: 3px solid #d0d4e7; } - - &.active { - background-color: @brand-quirk; - + .toggle-blob { border: 3px solid @brand-quirk; } - } - } - - .toggle-off, - .toggle-off.active { - color: #fff; - background-color: #d0d4e7; - background-image: none; - text-shadow: none; - text-indent: 8px !important; - } - - // Color Variants - &.primary { .toggle-variant(@brand-primary); } - &.success { .toggle-variant(@brand-success); } - &.warning { .toggle-variant(@brand-warning); } - &.danger { .toggle-variant(@brand-danger); } - &.info { .toggle-variant(@brand-info); } -} - - -/***** DATEPICKER *****/ -.ui-datepicker { - background-color: #fff; - border: 1px solid darken(@input-border, 10%); - font-family: inherit; - font-size: inherit; - padding: 10px; - margin: 1px 0 0; - border-radius: @border-radius-base; - width: auto !important; - - .ui-datepicker-header { - font-weight: 700; - text-transform: uppercase; - color: @text-color; - padding: 0 0 5px; - letter-spacing: 1px; - border: 0; - background-color: transparent; - .border-top-radius(@border-radius-base); - - .ui-datepicker-next, - .ui-datepicker-prev { - color: darken(@input-bg, 10%); - top: 1px; - - &:before { - font-family: 'FontAwesome'; - position: absolute; - top: 2px; - } - } - - .ui-datepicker-next { - &,&:before { right: 0; } - &:before { content: '\f054'; } - } - - .ui-datepicker-prev { - &,&:before { left: 0; } - &:before { content: '\f053'; } - } - - .ui-datepicker-next-hover, - .ui-datepicker-prev-hover { - color: darken(@input-bg, 20%); - cursor: pointer; - top: 1px; - border: 0; - background-color: transparent; - } - } - - .ui-datepicker-title { color: @brand-success; } - - .ui-datepicker-calendar { - margin: 0; - background-color: transparent; - .border-bottom-radius(@border-radius-base); - - th { - text-transform: uppercase; - font-size: 11px; - font-weight: 700; - letter-spacing: 1px; - padding: 6px 10px; - color: lighten(@text-color, 10%); - - @media (max-width: 320px) { - padding: 4px 0; - letter-spacing: normal; - } - } - - td { - border: 1px solid #fff; - padding: 0; - background-color: @input-bg; - - &:last-child { border-right: 0; } - } - - td span, - td a { - .transition(all 0.2s ease-out 0s); - padding: @padding-small-vertical @padding-small-horizontal; - background-color: lighten(@body-bg, 10%); - color: @text-color; - padding: 6px 10px; - display: block; - font-weight: 400; - font-size: 12px; - border: 0; - border-radius: 1px; - } - - td a:hover { - background-color: @body-bg; - color: @text-color; - } - - .ui-datepicker-today a { - background-color: @body-bg; - color: @text-color; - } - } -} - -.ui-datepicker-multi { - .ui-datepicker-group { - padding-right: 15px; - width: auto; - - table { margin: 0; } - } - .ui-datepicker-group-last { padding-right: 0; } -} - -.ui-datepicker-inline { - max-width: 300px; - border-color: @input-border; -} - - -/***** TIME PICKER *****/ - -.ui-timepicker-wrapper { - min-width: 100px; - margin-top: -1px; - border-color: darken(@input-border, 10%); - z-index: 100; - .box-shadow(none); - .border-bottom-radius(@border-radius-base); -} - -.ui-timepicker-list { - margin: 3px; - li { - padding: 5px 7px; - border-radius: @border-radius-base; - - &:hover, - &:focus { - background-color: @brand-success; - } - } -} - - -/***** DROPZONE *****/ - -.dropzone { - border-style: dashed; - border-radius: @border-radius-base; - border-color: #d0d4e7; - background-color: lighten(@body-bg, 10%); - - .dz-message { - font-size: 14px; - font-weight: 700; - font-family: @font-family-primary; - text-transform: uppercase; - color: @text-color; - margin-top: 45px; - opacity: .3; - } - - .dz-preview { - .dz-image { - border-radius: @border-radius-base; - background-color: @body-bg; - } - - &:hover .dz-image img { - -webkit-filter: none; - filter: none; - display: none; - } - - .dz-details { - &,.dz-size { font-size: 12px; } - .dz-filename:hover span { - border-color: transparent; - border-radius: 2px; - } - } - - .dz-error-message { - border-radius: @border-radius-base; - font-size: 12px; - } - } -} - - -/***** COLORPICKER *****/ - -.colorpicker { - &.dropdown-menu { - padding: 5px; - border-color: @input-border-focus; - .box-shadow(none); - } -} - -.colorpicker-lg { - .colorpicker-saturation { - width: 200px; - height: 200px; - } - - .colorpicker-hue, - .colorpicker-alpha { - width: 30px; - height: 200px; - } - - .colorpicker-color, - .colorpicker-color div { - height: 30px; - } -} - - -/***** JQUERY STEPS *****/ - -.wizard { - margin-bottom: 20px; - > .content { - - // Change the min-height value depends - // on how long is your content or forms. - min-height: 180px; - - background-color: #fff; - border-radius: 0; - margin: 0; - - > .body { - width: 100%; - height: 100%; - padding: 20px; - - label.error { - display: inline; - margin: 3px 0 0; - font-size: 11px; - color: @brand-danger; - } - - .has-error .form-control { - border-color: @brand-danger; - } - } - } - - > .steps { - > ul > li { - display: table-cell; - width: 1%; - float: none; - - > a { - margin: 0; - border-radius: 0; - padding: @nav-link-padding; - text-transform: uppercase; - font-family: @font-family-primary; - font-weight: 700; - font-size: 12px; - background-color: @nav-tabs-bg; - color: fadeout(#fff, 20%); - text-align: center; - letter-spacing: .2px; - - &:hover, - &:focus { - color: #fff; - margin: 0; - border-radius: 0; - padding: @nav-link-padding; - background-color: @nav-tabs-bg-hover; - } - } - - &:first-child > a { border-top-left-radius: @border-radius-base; } - &:last-child > a { border-top-right-radius: @border-radius-base; } - } - - .number { - font-size: @font-size-base; - margin-right: 5px; - } - - .disabled a { - &, - &:hover, - &:focus, - &:active { - background-color: @nav-tabs-bg; - color: fadeout(#fff, 20%); - } - } - - .done a { - background-color: lighten(@brand-quirk, 20%); - &:hover, - &:focus, - &:active { - background-color: lighten(@brand-quirk, 15%); - } - } - - .current a { - &, - &:hover, - &:focus, - &:active { - background-color: #fff; - color: @nav-tabs-active-color; - } - } - } - - > .actions { - padding: 15px 15px 10px; - background-color: lighten(@bg-color-base, 10%); - .border-bottom-radius(@border-radius-base); - - a { - padding: @padding-base-vertical @padding-base-horizontal; - border-radius: @border-radius-base; - background-color: @brand-primary; - min-width: 100px; - height: 38px; - text-align: center; - letter-spacing: .5px; - - &:hover, - &:focus { - border-radius: @border-radius-base; - padding: @padding-base-vertical @padding-base-horizontal; - background-color: darken(@brand-primary, 5%); - } - - &:active { background-color: darken(@brand-primary, 8%); } - } - - > ul { margin: 0; padding: 0; } - - > ul > li { - display: inline-block; - margin-right: 0; - - &:last-child a { - background-color: @brand-success; - &:hover, - &:focus { - background-color: darken(@brand-success, 5%); - } - } - } - - .disabled a { - &, - &:hover, - &:focus { - background-color: @bg-color-base; - color: darken(@bg-color-base, 8%); - } - } - } - - // Vertical Orientation - &.vertical { - background-color: @nav-tabs-bg; - border-radius: @border-radius-base; - - .content { - margin: 0; - width: 70%; - min-height: 250px; - - @media (max-width: 639px) { width: 100%; } - } - - > .steps > ul > li { - display: block; - > a { - text-align: left; - } - } - - > .steps { - @media (max-width: 639px) { width: 100%; } - } - - .actions { - margin: 0; - width: 100%; - } - } - - - // Style 1 - &.wizard-style2 { - > .steps { - counter-reset: ordered; - - > ul > li { - position: relative; - - @media (max-width: 480px) { - display: block; - float: none; - width: auto; - } - - > a { - text-align: left; - padding-left: 60px; - padding-right: 0; - - &:before { - content: counters(ordered, ".", decimal); - counter-increment: ordered; - position: absolute; - top: 50%; - left: 15px; - width: 36px; - height: 36px; - margin-top: -18px; - background-color: fadeout(#fff, 20%); - color: @nav-tabs-bg; - border-radius: 100px; - font-size: 18px; - font-family: @font-family-base; - text-align: center; - padding-top: 8px; - line-height: 20px; - } - - &:after { - border-left: 31px solid @nav-tabs-bg; - border-top: 31px solid transparent; - border-bottom: 31px solid transparent; - content: ""; - display: inline-block; - position: absolute; - right: -31px; - top: 50%; - margin-top: -31px; - z-index: 50; - } - - &:hover, - &:focus { - &:after { border-left-color: @nav-tabs-bg-hover; } - } - - > small { - display: block; - text-transform: none; - font-weight: normal; - font-family: @font-family-base; - font-size: @font-size-base; - } - } - - + li > a { - padding-left: 85px; - - @media (max-width: 480px) { - padding-left: 60px; - } - - &:before { - left: 40px; - - @media (max-width: 639px) { left: 15px; } - } - } - - &:last-child > a:after { display: none; } - } - - .number { display: none; } - - .done a { - &:before { - background-color: #fff; - color: lighten(@brand-quirk, 20%); - } - &:after { border-left-color: lighten(@brand-quirk, 20%); } - - &:hover, - &:focus { - &:after { border-left-color: lighten(@brand-quirk, 15%); } - } - } - - .current a { - &, - &:hover, - &:focus { - background-color: #fff; - color: @brand-success; - > small { color: @text-color; } - &:before { - background-color: @brand-success; - color: #fff; - } - &:after { border-left-color: #fff; } - } - } - - .disabled a { - &, - &:hover, - &:focus { - &:after { border-left-color: @nav-tabs-bg; } - } - } - } - - &.vertical { - > .steps { - > ul > li { - + li > a { - padding-left: 60px; - - &:before { left: 15px; } - &:after { display: none; } - } - - &:last-child > a { border-top-right-radius: 0; } - } - - .current a, - .done a { - &:after { display: none; } - } - } - } - } -} - - -/***** WYSIHTML5 *****/ - -ul.wysihtml5-toolbar a.btn.wysihtml5-command-active { - background-color: lighten(@brand-quirk, 70%); - .box-shadow(none); -} - -.note-editor { - border-color: @input-border; - border-radius: @border-radius-base; - - .note-toolbar { - border-bottom-color: @input-border; - &.btn-toolbar { margin-left: 0; } - } - - .note-statusbar .note-resizebar { - border-top-color: @input-border; - .border-bottom-radius(@border-radius-base); - } -} - - -/***** JQUERY.GRITTER *****/ - -.gritter-top, -.gritter-bottom { display: none; } - -.gritter-item { - position: relative; - background-image: none; - background-color: fadeout(darken(@brand-quirk, 10%), 5%); - border-radius: @border-radius-base; - padding: 15px; - font-family: @font-family-base; - font-size: @font-size-base; - line-height: @line-height-base; - color: fadeout(#fff, 35%); - z-index: 3000; - - a:hover { text-decoration: underline; } -} - -.gritter-title { - font-weight: 700; - text-shadow: none; - text-transform: uppercase; - font-family: @font-family-primary; - letter-spacing: .5px; - font-size: 12px; - color: #fff; -} - -.gritter-close { - left: auto; - right: 3px; - background: none; - - &:before { - text-indent: 0; - content: '\f00d'; - position: absolute; - font-family: 'FontAwesome'; - top: 0; - right: 7px; - color: #fff; - font-size: 16px; - opacity: .3; - } -} - -// Using Icons -.gritter-item-wrapper { - &.with-icon { - > .gritter-item { - padding-left: 60px; - position: relative; - - &:before { - font-family: 'FontAwesome'; - color: #fff; - position: absolute; - top: 15px; - left: 15px; - font-size: 28px; - font-family: 'FontAwesome'; - } - } - } - - &.primary > .gritter-item { background-color: fadeout(@brand-primary, 10%); } - &.success > .gritter-item { background-color: fadeout(@brand-success, 10%); } - &.warning > .gritter-item { background-color: fadeout(@brand-warning, 10%); } - &.danger > .gritter-item { background-color: fadeout(@brand-danger, 10%); } - &.info > .gritter-item { background-color: fadeout(@brand-info, 10%); } -} - -// Icons -.add-gritter-icon(send-o, f1d9); -.add-gritter-icon(question-circle, f059); -.add-gritter-icon(check-circle, f058); -.add-gritter-icon(exclamation-circle, f06a); -.add-gritter-icon(times-circle, f057); - - - -/***** JQUERY UI SLIDER *****/ - - -.ui-slider { - background-color: @bg-color-base; - border-radius: 50px; - border: 0; - - .ui-slider-handle { - background-color: #fff; - border: 2px solid lighten(@brand-quirk, 45%); - width: 18px; - height: 18px; - border-radius: 50px; - top: -6px; - cursor: pointer; - outline: none; - - &:after { - content: ''; - position: absolute; - width: 8px; - height: 8px; - background-color: lighten(@brand-quirk, 45%); - top: 3px; - left: 3px; - border-radius: 50px; - } - } - - .ui-slider-range { - border-radius: 50px; - background-color: lighten(@brand-quirk, 45%); - } -} - -.ui-slider-horizontal { - height: 6px; - margin: 15px 0; -} - -// Slider Color Variant -.slider-primary { .slider-variant(@brand-primary); } -.slider-success { .slider-variant(@brand-success); } -.slider-warning { .slider-variant(@brand-warning); } -.slider-danger { .slider-variant(@brand-danger); } -.slider-info { .slider-variant(@brand-info); } - - -.ui-slider-vertical { - width: 6px; - display: inline-block; - - .ui-slider-handle { - top: auto; - left: -6px; - } -} - - - -/***** DATA TABLES *****/ - -.table.dataTable { - margin-bottom: 20px !important; - margin-top: 0 !important; - - thead { - .sorting, - .sorting_asc, - .sorting_desc { - &:after { - top: 12px; - font-size: 12px; - font-weight: normal; - } - } - } - - td.details-control { - cursor: pointer; - - &:before { - font-family: 'FontAwesome'; - content: '\f105'; - display: block; - text-align: center; - } - } - - tr.shown { - td.details-control:before { content: '\f107'; } - - + tr > td { - padding: 20px; - background-color: lighten(@brand-quirk, 76%); - - h4 { - margin: 0 0 15px; - - > small { - display: block; - font-size: 12px; - text-transform: none; - margin-top: 5px; - color: lighten(@text-color, 10%); - } - } - } - } -} - -.dataTables_length label { margin-bottom: 20px; } - -.dataTables_filter { - label { margin-bottom: 20px; } - - .form-control { - font-size: inherit; - height: 38px; - padding: @padding-base-vertical @padding-base-horizontal; - } -} - -.dataTables_paginate .pagination { - > .paginate_button { - > a { - padding-left: 14px; - padding-right: 14px; - } - - &.next, - &.previous { - font-family: @font-family-primary; - font-size: 12px; - text-transform: uppercase; - - > a { padding: 10px 15px 9px; } - } - } -} - - -/***** SUMMERNOTE *****/ - -.note-toolbar { padding-left: 0; } - - -/***** MAP *****/ - -.gm-style-mtc > div { .box-shadow(none) !important; } - - -/***** MORRIS CHART *****/ - -.morris-hover.morris-default-style { - border: 0; - border-radius: @border-radius-base; -} diff --git a/dashboard/skins/less/quick.less b/dashboard/skins/less/quick.less deleted file mode 100644 index cf556eb1..00000000 --- a/dashboard/skins/less/quick.less +++ /dev/null @@ -1,41 +0,0 @@ -// Core Font -@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,400italic,600,600italic,700,700italic,300italic,300); -@import url(http://fonts.googleapis.com/css?family=Raleway:400,100,200,300,500,600,700,800); - -// Core UI Framework -@import "../bower_components/bootstrap/less/bootstrap.less"; - -// Bootstrap Overrides -@import "bootstrap-override.less"; - -// Plugins Overrides -@import "plugins-override.less"; - -// Core -@import "variables.less"; -@import "mixins.less"; - -// Reset -@import "scaffolding.less"; - -// Header Styles -@import "headerpanel.less"; - -// Leftpanel Styles -@import "leftpanel.less"; - -// Sidebar -@import "sidebar.less"; - -// Widgets -@import "widgets.less"; - -// Template Styles -@import "mainpanel.less"; -@import "ui-elements.less"; -@import "table.less"; -@import "pages.less"; -@import "addons.less"; - -// For Demo Only Styles -@import "demo.less"; diff --git a/dashboard/skins/less/scaffolding.less b/dashboard/skins/less/scaffolding.less deleted file mode 100644 index 427a13cd..00000000 --- a/dashboard/skins/less/scaffolding.less +++ /dev/null @@ -1,42 +0,0 @@ - -body { - @media (min-width: @screen-md-min) { - overflow: visible !important; - } -} - -a:hover, -a:focus { - outline: none; -} - -code { - background-color: transparent; - padding: 0; -} -p code { - font-family: @font-family-base; - font-size: @font-size-base; - letter-spacing: 0.2px; -} - -label { font-weight: normal; } - -hr { - margin: 20px 0; - border-color: @border-color-base; - - &.darken { border-color: darken(@border-color-base, 8%); } - &.hr15 { margin: 15px 0 !important; } - &.fadeout { - border-color: #fff; - opacity: .1; - } -} - -blockquote { - color: lighten(@brand-quirk, 15%); - font-weight: 400; - font-size: 16px; - font-family: @font-family-serif; -} diff --git a/dashboard/skins/less/sidebar.less b/dashboard/skins/less/sidebar.less deleted file mode 100644 index 8c94ddb4..00000000 --- a/dashboard/skins/less/sidebar.less +++ /dev/null @@ -1,87 +0,0 @@ - -.sidebar { - position: absolute; - top: @header-height; - bottom: 0; - padding: 15px; - - &.left { left: 0; } - &.right { right: 0; } - - &.email { - width: @leftpanel-width; - background-color: #fff; - } -} - -.sidebar-title { - text-transform: uppercase; - font-size: 11px; - color: lighten(@brand-quirk, 50%); - line-height: normal; - padding: 0 15px; - font-weight: 500; - letter-spacing: .5px; -} - -.nav-sidebar.nav-justified { - background-color: lighten(@brand-quirk, 30%);; - margin-bottom: 20px; - .border-top-radius(0); - - > li { - > a { - border-radius: 0; - background-color: lighten(@brand-quirk, 20%); - color: #fff; - padding: 8px 10px; - font-size: 14px; - vertical-align: bottom; - - &:hover, - &:focus { - cursor: pointer; - background-color: lighten(@brand-quirk, 15%); - } - - i { position: relative; } - } - - &:first-child > a { border-left: 0; } - + li > a { margin-left: 1px; } - - &.unread > a > i:after { - content: ''; - position: absolute; - top: -2px; - right: -4px; - width: 10px; - height: 10px; - border-radius: 50px; - background-color: @brand-danger; - opacity: .9; - } - } - - > .active { - &:first-child > a { border-top-left-radius: 0; } - > a { - &, - &:hover, - &:focus { - background-color: #fff; - color: @brand-quirk; - } - } - } - - @media (max-width: @screen-xs-max) { - display: table; - > li { - display: table-cell; - > a { margin: 0; } - } - } -} - -.sidebar-btn-wrapper { margin: 0 15px 20px; } diff --git a/dashboard/skins/less/table.less b/dashboard/skins/less/table.less deleted file mode 100644 index 7ebb4554..00000000 --- a/dashboard/skins/less/table.less +++ /dev/null @@ -1,90 +0,0 @@ - -.table { - > thead > tr { - > td, - > th { - padding-top: 13px; - padding-bottom: 13px; - } - } - - > .success > tr { - > th, - > td { - background-color: lighten(@brand-quirk, 20%); - color: #fff; - border-color: fadeout(#fff,75%); - } - - &:first-child { - .border-top-radius(0); - > th, - > td { - &:first-child { border-top-left-radius: 0; } - &:last-child { border-top-right-radius: 0; } - } - } - } -} - -.table-options { - list-style: none; - margin: 0; - padding: 0; - text-align: center; - - > li { - display: inline-block; - margin-left: 5px; - - &:first-child { margin-left: 0; } - - > a { - color: lighten(@brand-quirk, 50%); - font-size: 14px; - line-height: 0; - .transition(@transition-base); - - > i { line-height: 0; } - - &:hover, - &:focus { - color: lighten(@brand-quirk, 30%); - } - } - } -} - -// Table Striped Columns -.table-striped-col { - > thead, - > tfoot { - > tr { - th, - td { - &:nth-of-type(even) { - background-color: lighten(@bg-color-base, 4%); - } - } - } - } - - > tbody { - > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) { - th, - td { - &:nth-of-type(even) { - background-color: lighten(@bg-color-base, 10%); - } - } - } - } -} - - -// Table Primary Color -.table-primary { .table-variant(@brand-primary); } -.table-success { .table-variant(@brand-success); } -.table-warning { .table-variant(darken(@brand-warning, 20%)); } -.table-danger { .table-variant(darken(@brand-danger, 15%)); } -.table-inverse { .table-variant(lighten(@brand-quirk, 20%)); } diff --git a/dashboard/skins/less/ui-elements.less b/dashboard/skins/less/ui-elements.less deleted file mode 100644 index 11a780ea..00000000 --- a/dashboard/skins/less/ui-elements.less +++ /dev/null @@ -1,391 +0,0 @@ - -/***** TEMPLATE BUTTONS *****/ - -.btn-quirk { - text-transform: uppercase; - font-weight: 700; - font-family: @font-family-primary; - letter-spacing: .5px; -} - -.btn-stroke { - background-color: transparent; - border-width: 2px; - padding: (@padding-base-vertical - 1px) (@padding-base-horizontal - 1px); - - &:hover, - &:focus, - &.focus, - &:active, - &.active, - .open > .dropdown-toggle& { - background-color: transparent; - } - - &.btn-primary { .btn-stroke-variant(@brand-primary); } - &.btn-success { .btn-stroke-variant(@brand-success); } - &.btn-warning { .btn-stroke-variant(@brand-warning); } - &.btn-danger { .btn-stroke-variant(@brand-danger); } - &.btn-info { .btn-stroke-variant(@brand-info); } - - &:active { - background-color: transparent !important; - } - -} - -.btn-stroke-thin { - border-width: 1px; - font-weight: 600; -} - -.btn-icon { - width: 38px; - height: 38px; - padding: 0; - border-radius: 100px; - - &.btn-stroke { - padding: 0; - } -} - -// Make button wide by adding a minimum width -.btn-wide { min-width: 100px; } - -// Custom button for compose button in email -.btn-compose { - display: block; - margin: 0 15px; -} - -// Custom Button Color -.btn-default-active { .btn-variant(#fff; lighten(@brand-quirk, 60%); transparent); } - -// Facebook -.btn-fb { .btn-variant(#fff; #3A5795; transparent); } - - - -/***** TABS & ACCORDIONS *****/ - -.tab-side-wrapper { - background-color: #fff; - position: relative; - margin: 0 0 20px; - min-height: 136px; - border-radius: @border-radius-base; - - .tab-left, - .tab-right { - padding: 0; - position: absolute; - bottom: 0; - top: 0; - background-color: @nav-tabs-bg; - } - - .tab-left { .border-left-radius(@border-radius-base); } - - .nav-stacked { - > li { - > a { - border-radius: 0; - text-transform: uppercase; - color: fadeout(#fff, 20%); - font-family: @font-family-primary; - font-size: 12px; - - &:hover, - &:focus { - color: #fff; - background-color: @nav-tabs-bg-hover; - } - } - - &:first-child > a { border-top-left-radius: @border-radius-base; } - &:last-child > a { border-bottom-left-radius: @border-radius-base; } - - &.active { - > a { - &, - &:hover, - &:focus { - background-color: #fff; - color: lighten(@brand-quirk, 30%); - } - } - } - - + li { margin: 0; } - } - } - - .tab-right { - right: 0; - .border-right-radius(@border-radius-base); - - .nav-stacked > li { - &:first-child > a { - border-top-left-radius: 0; - border-top-right-radius: @border-radius-base; - } - - &:last-child > a { - border-bottom-left-radius: 0; - border-bottom-right-radius: @border-radius-base; - } - } - } - - .tab-main { padding: 0; } - .tab-pane { background-color: transparent; } -} - -// Nav Tabs Color Variant -.nav-primary { .nav-variant(@brand-primary); } -.nav-success { .nav-variant(@brand-success); } -.nav-warning { .nav-variant(@brand-warning); } -.nav-danger { .nav-variant(@brand-danger); } -.nav-info { .nav-variant(@brand-info); } -.nav-inverse { .nav-variant(lighten(@brand-quirk, 10%)); } - - -// Nav Line -.nav-line { - background-color: transparent; - border-bottom: @nav-line-border-width solid @border-color-base; - - > li { - > a { - color: lighten(@brand-quirk, 30%); - padding-top: 0; - padding-bottom: 10px; - - &:hover, - &:focus { - background-color: transparent; - color: @brand-quirk; - } - - @media (max-width: 480px) { - padding-left: 5px; - padding-right: 5px; - } - } - - &.active > a { - &, - &:hover, - &:focus { - color: @brand-success; - background-color: transparent; - .box-shadow(0 @nav-line-border-width 0 @brand-success); - } - } - } - - + .tab-content > .tab-pane { - padding: 20px 0 0; - background-color: transparent; - } - - &.nav-justified { - border-bottom: @nav-line-border-width solid @border-color-base; - - @media (max-width: 480px) { border-bottom: 0; } - } -} - - -/***** GRAPHS & CHARTS *****/ - -.tooltipflot { - background-color: rgba(0,0,0,0.75); - font-size: 11px; - color: #fff; - padding: 3px 10px; - border-radius: @border-radius-base; -} - -.jqstooltip { - min-height: 25px; - border: 0; - min-width: 30px; - height: auto !important; - width: auto !important; -} - -.panel-morris .body-chart { - height: 300px; - > svg { - width: 100% !important; - } -} - -.tinystat { - display: inline-block; - .chart { margin-right: 5px; } - - .chart, - .datainfo { - display: inline-block; - vertical-align: middle; - } - - .text-muted { - text-transform: uppercase; - font-size: 10px; - } - - h4 { - margin: 0; - color: @brand-quirk; - font-weight: bold; - line-height: normal; - font-size: 16px; - } -} - - - -/***** PANELS & WIDGETS *****/ - -.panel-options { - position: absolute; - top: 15px; - right: 20px; - padding: 0; - margin: 0; - - > li { - display: block; - float: left; - list-style: none; - - > a { - color: lighten(@brand-quirk, 60%); - .transition(@transition-base); - - > i { - display: inline-block; - vertical-align: middle; - - &.fa-refresh { font-size: 11px; } - &.fa-remove { font-size: 13px; } - } - - &:hover, - &:focus { - cursor: pointer; - color: lighten(@brand-quirk, 40%); - } - } - - + li { margin-left: 5px; } - } -} - -.panel-inverse { .panel-variant(transparent; #fff; lighten(@brand-quirk, 20%); transparent); } - -.panel-default, -.panel-primary, -.panel-success, -.panel-warning, -.panel-danger, -.panel-info, -.panel-inverse { - .panel-options > li { - > a { - color: fadeout(#fff, 50%); - - &:hover, - &:focus { - color: fadeout(#fff, 20%); - } - } - } -} - -// Panel Full Colored Variant -.panel-primary-full { .panel-full-variant(@brand-primary); } -.panel-success-full { .panel-full-variant(@brand-success); } -.panel-warning-full { .panel-full-variant(@brand-warning); } -.panel-danger-full { .panel-full-variant(@brand-danger); } -.panel-info-full { .panel-full-variant(@brand-info); } -.panel-inverse-full { .panel-full-variant(@brand-quirk); } - - -// Separator -.or { - color: fadeout(#fff, 20%); - font-size: 11px; - text-align: center; - margin: 20px 0; - font-weight: 700; - letter-spacing: 1px; - text-transform: uppercase; - position: relative; - - &:after { - content: ''; - position: absolute; - width: 45%; - height: 1px; - background-color: fadeout(#fff,90%); - top: 8px; - right: 0; - } - - &:before { - content: ''; - position: absolute; - width: 45%; - height: 1px; - background-color: fadeout(#fff,90%); - top: 8px; - left: 0; - } -} - -// BG Colors -.bg-white { background-color: #fff; } - -// Typo -.page-title { - font-weight: 400; - margin: 0 0 20px; - line-height: normal; - color: @brand-quirk; - padding: 15px 0 17px; - border-top: 1px solid darken(@border-color-base, 8%); - border-bottom: 1px solid darken(@border-color-base, 8%); -} - - -// Well -.well { - &.primary, - &.success, - &.warning, - &.danger, - &.info, - &.inverse { - color: fadeout(#fff, 20%); - - h1,h2,h3,h4,h5,h6 { - color: #fff; - margin-top: 0; - font-weight: 500; - } - - p:last-child { margin-bottom: 0; } - } - - &.primary { background-color: @brand-primary; } - &.success { background-color: @brand-success; } - &.warning { background-color: @brand-warning; } - &.danger { background-color: @brand-danger; } - &.info { background-color: @brand-info; } - &.inverse { background-color: @brand-quirk; } -} diff --git a/dashboard/skins/less/variables.less b/dashboard/skins/less/variables.less deleted file mode 100644 index 564b3df3..00000000 --- a/dashboard/skins/less/variables.less +++ /dev/null @@ -1,243 +0,0 @@ - -// Colors - -@brand-quick: #262b36; -@brand-default: #2e3036; -@brand-primary: #2574ab; -@brand-success: #259DAB; -@brand-warning: #e6ad5c; - -@border-color-base: lighten(@brand-quirk, 70%); -@bg-color-base: #d8dce3; - -@color-gray: #545b68; -@color-green: #409a32; - - -// Alerts - -@alert-success-bg: #9ed566; -@alert-success-border: transparent; -@alert-success-text: darken(@alert-success-bg, 35%); - -@alert-info-bg: #56c2e8; -@alert-info-border: transparent; -@alert-info-text: darken(@alert-info-bg, 40%); - -@alert-warning-bg: #fdcc51; -@alert-warning-border: transparent; -@alert-warning-text: darken(@alert-warning-bg, 40%); - -@alert-danger-bg: #e55869; -@alert-danger-border: transparent; -@alert-danger-text: #fff; //darken(@alert-danger-bg, 25%); - - -// Badge - -@badge-font-weight: normal; - - -// Buttons - -@btn-default-color: @text-color; -@btn-default-bg: #fff; -@btn-default-border: @input-border; - -@btn-primary-border: transparent; -@btn-success-border: transparent; -@btn-warning-border: transparent; -@btn-danger-border: transparent; -@btn-info-border: transparent; - - - -// Forms - -@input-color: @brand-quirk; -@input-bg: lighten(@body-bg, 12%); -@input-bg-disabled: lighten(@body-bg, 5%); -@input-border: lighten(@brand-quirk, 60%); - -@input-height-base: 38px; -@input-height-large: 42px; -@input-height-small: 32px; - -@input-color-placeholder: lighten(@brand-quirk, 50%); -@input-border-radius-large: @border-radius-base; -@input-border-radius-small: @border-radius-base; - -@input-group-addon-bg: lighten(@body-bg, 10%); - -@ckbox-size: 14px; -@rdiobox-size: 14px; -@ckbox-border-color: @border-color-base; -@ckbox-color: #fff; - -@rdio-border-color: @text-color; - - -// Form States - -@state-success-text: #1aa71c; -@state-success-bg: #dff0d8; -@state-success-border: darken(@brand-success, 10%); - -@state-info-text: #3b83a6; -@state-info-bg: #d9edf7; -@state-info-border: darken(@brand-info, 10%); - -@state-warning-text: #9c732c; -@state-warning-bg: #fcf8e3; -@state-warning-border: darken(@brand-warning, 10%); - -@state-danger-text: @brand-danger; -@state-danger-bg: #f2dede; -@state-danger-border: darken(@brand-danger, 10%); - -// Grid - -@grid-gutter-width: 20px; - - -// Header - -@header-color: lighten(@brand-quirk, 50%); -@header-bg: @brand-quirk; -@header-text: #778395; -@header-height: 64px; - -@logopanel-bg: darken(@header-bg, 3%); - - -// Left Panel - -@leftpanel-bg: #fff; -@leftpanel-border: lighten(@brand-quirk, 75%); -@leftpanel-hover: lighten(@body-bg, 10%); -@leftpanel-width: 220px; - - -// Media Queries Breakpoints - -@screen-lg-min: 1650px; // macbook air 11 inches - - -// Navs - -@nav-link-padding: 14px 25px; -@nav-line-border-width: 1px; - -@nav-tabs-bg: lighten(@brand-quirk, 50%); -@nav-tabs-bg-hover: lighten(@brand-quirk, 45%); -@nav-tabs-active-color: lighten(@brand-quirk, 25%); - - -// Pagination - -@pagination-color: lighten(@brand-quirk, 20%); -@pagination-border: transparent; -@pagination-bg: @bg-color-base; - -@pagination-hover-border: transparent; -@pagination-hover-bg: darken(@bg-color-base, 10%); - -@pagination-active-bg: @brand-success; -@pagination-active-border: transparent; - -@pagination-disabled-color: lighten(@text-color, 30%); -@pagination-disabled-border: transparent; -@pagination-disabled-bg: lighten(@bg-color-base, 10%); - -@pager-border-radius: @border-radius-base; -@pager-disabled-color: lighten(@brand-quirk, 50%); - - -// Panels - -@panel-heading-padding: 20px; -@panel-body-padding: 20px; - -@panel-default-text: @brand-quirk; -@panel-default-border: lighten(@brand-quirk, 67%); -@panel-default-heading-bg: lighten(@brand-quirk, 50%); - -@panel-footer-padding: 20px; - -@panel-primary-heading-bg: @brand-primary; -@panel-success-heading-bg: @brand-success; -@panel-warning-heading-bg: @brand-warning; -@panel-danger-heading-bg: @brand-danger; -@panel-info-heading-bg: @brand-info; -@panel-inverse-heading-bg: @brand-quirk; - -@panel-title-size: 12px; - - -// Popover - -@popover-title-bg: #fff; - - -// Progress Bars - -@progress-bg: lighten(@bg-color-base, 5%); - - -// Scaffolding - -@body-bg: @bg-color-base; - -@link-color: @brand-success; -@link-hover-color: lighten(@brand-quirk, 20%); -@link-hover-decoration: none; - -@transition-base: all 0.2s ease-out 0s; - -@border-radius-base: 2px; -@border-radius-large: 2px; -@border-radius-small: 2px; - -@padding-base-horizontal: 12px; -@padding-base-vertical: 10px; - -@padding-large-vertical: 11px; -@padding-large-horizontal: 14px; - -@padding-small-vertical: 5px; -@padding-small-horizontal: 8px; - -@padding-xs-vertical: 3px; -@padding-xs-horizontal: 5px; - - -// Table - -@table-bg: lighten(@bg-color-base, 8%); -@table-bg-hover: lighten(@bg-color-base, 5%); -@table-bg-accent: lighten(@bg-color-base, 12%); - -@table-cell-padding: 10px 15px; -@table-border-color: #fff; - - -// Typography - -@headings-color: @brand-quirk; -@headings-font-weight: bold; - -@font-family-opensans: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -@font-family-raleway: 'Raleway', 'Helvetica Neue', Helvetica, sans-serif; - -@font-family-base: @font-family-sans-serif; -@font-family-primary: @font-family-opensans; - -@text-color: #696c74; -@font-size-base: 12px; -@font-size-large: 16px; -@text-muted: lighten(@text-color, 25%); - - -// Wells - -@well-bg: @bg-color-base; diff --git a/dashboard/skins/less/widgets.less b/dashboard/skins/less/widgets.less deleted file mode 100644 index 9684a468..00000000 --- a/dashboard/skins/less/widgets.less +++ /dev/null @@ -1,352 +0,0 @@ - - -/***** NAVIGATION *****/ - -.nav-dark-quirk { - background-color: lighten(@brand-quirk, 10%); - > li { - &, - &:last-child { border-color: lighten(@brand-quirk, 15%); } - - > a { - color: lighten(@brand-quirk, 40%); - &:hover, - &:focus { - background-color: lighten(@brand-quirk, 5%); - color: #fff; - } - } - } -} - -// Light -.nav-quirk-primary { .nav-quirk-variant(@brand-primary); } -.nav-quirk-success { .nav-quirk-variant(@brand-success); } -.nav-quirk-warning { .nav-quirk-variant(@brand-warning); } -.nav-quirk-danger { .nav-quirk-variant(@brand-danger); } -.nav-quirk-info { .nav-quirk-variant(@brand-info); } - -// Dark -.nav-dark-primary { .nav-quirk-dark-variant(@brand-primary); } -.nav-dark-success { .nav-quirk-dark-variant(@brand-success); } -.nav-dark-warning { .nav-quirk-dark-variant(@brand-warning); } -.nav-dark-danger { .nav-quirk-dark-variant(@brand-danger); } -.nav-dark-info { .nav-quirk-dark-variant(@brand-info); } - - -/***** DASHBOARD: PANEL ANNOUNCEMENTS *****/ - -.panel-announcement { - background-color: #fff; - margin-bottom: 20px; - - .panel-heading { padding-bottom: 5px; } - .panel-title { color: @brand-danger; } - - .panel-body { - h2 { - margin: 0 0 10px; - font-weight: 500; - line-height: 24px; - font-size: 18px; - letter-spacing: normal; - } - - h4 { - margin: 0; - font-weight: 400; - font-size: 12px; - color: fadeout(@brand-quirk, 30%); - line-height: 20px; - - > a { - color: @brand-success; - &:hover, - &:focus { - color: lighten(@brand-success, 10%); - } - } - } - } -} - -.list-announcement { - .panel-body { - padding: 0; - - ul { - margin-bottom: 0; - - > li { - padding: 10px 20px; - border-bottom: 1px solid lighten(@brand-quirk, 75%); - letter-spacing: normal; - - a { - color: @brand-quirk; - font-weight: 500; - } - - small { - margin-top: 4px; - display: block; - color: fadeout(@brand-quirk, 55%); - - a { - font-weight: 400; - color: @brand-success; - float: right; - } - } - } - } - } - - .panel-footer { - padding: 14px 20px; - background-color: #fff; - } -} - - -/***** DASHBOARD: QUICK PAGE ACCESS *****/ - - -.panel-quick-page { - margin: 0 0 20px; - > div { - padding: 0; - .panel { - border-radius: 0; - margin-left: 1px; - margin-bottom: 1px; - - &:hover, - &:focus { - cursor: pointer; - position: relative; - - } - } - - @media (max-width: 360px) { width: 50%; } - - .panel-heading { - @media (max-width: 560px) { - padding: 10px; - } - } - - .panel-title { - @media (max-width: 560px) { - font-size: 11px; - } - } - - &:first-child .panel { - margin-left: 0; - border-top-left-radius: @border-radius-base; - } - - &:nth-child(2) .panel { - @media (max-width: 360px) { border-top-right-radius: @border-radius-base; } - } - - &:nth-child(3) .panel { - @media (max-width: @screen-sm-max) { - border-top-right-radius: @border-radius-base; - } - - @media (max-width: 360px) { border-top-right-radius: 0; } - } - - &:nth-child(4) .panel { - border-top-right-radius: @border-radius-base; - @media (max-width: @screen-sm-max) { - margin-left: 0; - border-top-right-radius: 0; - } - } - - &:nth-child(5) .panel { - margin-left: 0; - border-bottom-left-radius: @border-radius-base; - @media (max-width: @screen-sm-max) { - margin-left: 1px; - .border-left-radius(0); - } - } - - &:nth-child(7) .panel { - @media (max-width: @screen-sm-max) { - margin-left: 0; - border-bottom-left-radius: @border-radius-base; - } - - @media (max-width: 360px) { border-bottom-left-radius: 0; } - } - - &:last-child .panel { border-bottom-right-radius: @border-radius-base; } - - @media (max-width: 360px) { - &:nth-child(odd) > .panel { margin-left: 0; } - &:nth-child(even) > .panel { margin-left: 1px; } - - &:last-child { - width: 100%; - > .panel { .border-bottom-radius(@border-radius-base); } - } - } - - } - - .hvr-shutter-out-vertical { display: block; } - - .page-user > .panel { .panel-quick-page-hover(lighten(@brand-success, 5%), @brand-success); } - .page-products > .panel { .panel-quick-page-hover(darken(@brand-info, 10%), darken(@brand-info, 15%)); } - .page-events > .panel { .panel-quick-page-hover(lighten(@brand-primary, 15%), lighten(@brand-primary, 5%)); } - .page-messages > .panel { .panel-quick-page-hover(lighten(@brand-primary, 5%), @brand-primary); } - .page-reports > .panel { .panel-quick-page-hover(lighten(spin(@brand-danger, -20), 5%), darken(spin(@brand-danger, -20), 5%)); } - - .page-statistics > .panel { .panel-quick-page-hover(lighten(@brand-danger, 10%), @brand-danger); } - .page-support > .panel { .panel-quick-page-hover(lighten(spin(@brand-info, 70), 5%), darken(spin(@brand-info, 70), 5%)); } - .page-privacy > .panel { .panel-quick-page-hover(lighten(@brand-quirk, 35%), lighten(@brand-quirk, 25%)); } - .page-settings > .panel { .panel-quick-page-hover(lighten(@brand-quirk, 30%), lighten(@brand-quirk, 20%)); } - - .panel-heading { padding: 15px 20px; } - .panel-title { color: #fff; } - .panel-body { padding-top: 0; } - - .page-icon { - margin: 0; - color: #fff; - font-size: 70px; - height: 70px; - line-height: 0; - text-align: center; - } -} - - -/***** PANEL BANDWIDTH *****/ - -.panel-site-traffic { - .panel-body { - .panel-title { - color: lighten(@brand-quirk, 40%); - font-size: 11px; - margin: 3px 0 0; - } - - .row > div { - @media (max-width: 480px) { - width: 100%; - float: none; - .clearfix(); - - & + div { margin-top: 15px; } - } - } - - h3 { - margin: 0 0 3px; - font-size: 32px; - } - - .icon { - font-size: 48px; - color: #fff; - margin-right: 20px; - border-radius: @border-radius-base; - width: 70px; - line-height: 54px; - } - - .ion-stats-bars { - background-color: @brand-primary; - padding: 7px 18px; - } - - .ion-eye { - background-color: @brand-info; - padding: 7px 15px; - } - - .ion-clock { - background-color: @brand-success; - padding: 7px 14px; - } - - h5 { - margin: 0; - font-weight: 300; - } - } -} - - -/***** DASHBOARD: PANEL STAT OBJECTS *****/ - -.panel-statistics { - margin: 0 0 20px; - - .panel { - margin: 0; - border-radius: 0; - min-height: 130px; - } - - > div { - padding: 0; - - &:first-child > .panel { border-top-left-radius: @border-radius-base; } - &:nth-child(2) > .panel { border-top-right-radius: @border-radius-base; } - &:nth-child(3) > .panel { border-bottom-left-radius: @border-radius-base; } - &:last-child > .panel { border-bottom-right-radius: @border-radius-base; } - - &:nth-child(odd) > .panel { margin-left: 0; } - &:nth-child(3) > .panel, - &:last-child > .panel { margin-bottom: 0; } - - - @media (max-width: 767px) { - &:nth-child(2) > .panel { - margin-bottom: 1px; - border-top-right-radius: 0; - } - &:nth-child(3) > .panel { border-bottom-left-radius: 0; } - &:first-child > .panel { border-top-right-radius: @border-radius-base; } - &:last-child > .panel { border-bottom-left-radius: @border-radius-base; } - } - } -} - -.panel-updates { - - h3 { - margin: 5px 0 5px; - font-size: 32px; - } - - .progress { - height: 5px; - margin-bottom: 15px; - } - - p, p + p { - margin: 0; - font-size: 11px; - letter-spacing: 0; - color: lighten(@brand-quirk, 20%); - } - - &.panel-success-full, - &.panel-danger-full { - .panel-body .panel-title { font-weight: 700; } - - .progress { background-color: fadeout(#fff, 70%); } - .progress-bar { background-color: #fff; } - - p { color: #fff; } - } -} diff --git a/dashboard/skins/lobipanel.css b/dashboard/skins/lobipanel.css deleted file mode 100644 index 58944cbc..00000000 --- a/dashboard/skins/lobipanel.css +++ /dev/null @@ -1,603 +0,0 @@ -.spinner-wrapper { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(255, 255, 255, 0.5); -} -.spinner-windows8 { - position: relative; - display: block; - margin: 0 auto; - width: 50px; - height: 50px; - margin-top: 100px; -} -.spinner-windows8 .wBall { - position: absolute; - width: 48px; - height: 48px; - opacity: 0; - -moz-transform: rotate(225deg); - -moz-animation: orbit 2.75s infinite; - -webkit-transform: rotate(225deg); - -webkit-animation: orbit 2.75s infinite; - -ms-transform: rotate(225deg); - -ms-animation: orbit 2.75s infinite; - -o-transform: rotate(225deg); - -o-animation: orbit 2.75s infinite; - transform: rotate(225deg); - animation: orbit 2.75s infinite; -} -.spinner-windows8 .wBall .wInnerBall { - position: absolute; - width: 6px; - height: 6px; - background: #000000; - left: 0px; - top: 0px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - -ms-border-radius: 6px; - -o-border-radius: 6px; - border-radius: 6px; - z-index: 2; -} -.spinner-windows8 .wBall:first-child { - -moz-animation-delay: 0.6s; - -webkit-animation-delay: 0.6s; - -ms-animation-delay: 0.6s; - -o-animation-delay: 0.6s; - animation-delay: 0.6s; -} -.spinner-windows8 .wBall:nth-child(2) { - -moz-animation-delay: 0.12s; - -webkit-animation-delay: 0.12s; - -ms-animation-delay: 0.12s; - -o-animation-delay: 0.12s; - animation-delay: 0.12s; -} -.spinner-windows8 .wBall:nth-child(3) { - -moz-animation-delay: 0.24s; - -webkit-animation-delay: 0.24s; - -ms-animation-delay: 0.24s; - -o-animation-delay: 0.24s; - animation-delay: 0.24s; -} -.spinner-windows8 .wBall:nth-child(4) { - -moz-animation-delay: 0.36s; - -webkit-animation-delay: 0.36s; - -ms-animation-delay: 0.36s; - -o-animation-delay: 0.36s; - animation-delay: 0.36s; -} -.spinner-windows8 .wBall:nth-child(5) { - -moz-animation-delay: 0.48s; - -webkit-animation-delay: 0.48s; - -ms-animation-delay: 0.48s; - -o-animation-delay: 0.48s; - animation-delay: 0.48s; -} -@-moz-keyframes orbit { - 0% { - opacity: 1; - z-index: 99; - -moz-transform: rotate(180deg); - -moz-animation-timing-function: ease-out; - } - 7% { - opacity: 1; - -moz-transform: rotate(300deg); - -moz-animation-timing-function: linear; - -moz-origin: 0%; - } - 30% { - opacity: 1; - -moz-transform: rotate(410deg); - -moz-animation-timing-function: ease-in-out; - -moz-origin: 7%; - } - 39% { - opacity: 1; - -moz-transform: rotate(645deg); - -moz-animation-timing-function: linear; - -moz-origin: 30%; - } - 70% { - opacity: 1; - -moz-transform: rotate(770deg); - -moz-animation-timing-function: ease-out; - -moz-origin: 39%; - } - 75% { - opacity: 1; - -moz-transform: rotate(900deg); - -moz-animation-timing-function: ease-out; - -moz-origin: 70%; - } - 76% { - opacity: 0; - -moz-transform: rotate(900deg); - } - 100% { - opacity: 0; - -moz-transform: rotate(900deg); - } -} -@-webkit-keyframes orbit { - 0% { - opacity: 1; - z-index: 99; - -webkit-transform: rotate(180deg); - -webkit-animation-timing-function: ease-out; - } - 7% { - opacity: 1; - -webkit-transform: rotate(300deg); - -webkit-animation-timing-function: linear; - -webkit-origin: 0%; - } - 30% { - opacity: 1; - -webkit-transform: rotate(410deg); - -webkit-animation-timing-function: ease-in-out; - -webkit-origin: 7%; - } - 39% { - opacity: 1; - -webkit-transform: rotate(645deg); - -webkit-animation-timing-function: linear; - -webkit-origin: 30%; - } - 70% { - opacity: 1; - -webkit-transform: rotate(770deg); - -webkit-animation-timing-function: ease-out; - -webkit-origin: 39%; - } - 75% { - opacity: 1; - -webkit-transform: rotate(900deg); - -webkit-animation-timing-function: ease-out; - -webkit-origin: 70%; - } - 76% { - opacity: 0; - -webkit-transform: rotate(900deg); - } - 100% { - opacity: 0; - -webkit-transform: rotate(900deg); - } -} -@-ms-keyframes orbit { - 0% { - opacity: 1; - z-index: 99; - -ms-transform: rotate(180deg); - -ms-animation-timing-function: ease-out; - } - 7% { - opacity: 1; - -ms-transform: rotate(300deg); - -ms-animation-timing-function: linear; - -ms-origin: 0%; - } - 30% { - opacity: 1; - -ms-transform: rotate(410deg); - -ms-animation-timing-function: ease-in-out; - -ms-origin: 7%; - } - 39% { - opacity: 1; - -ms-transform: rotate(645deg); - -ms-animation-timing-function: linear; - -ms-origin: 30%; - } - 70% { - opacity: 1; - -ms-transform: rotate(770deg); - -ms-animation-timing-function: ease-out; - -ms-origin: 39%; - } - 75% { - opacity: 1; - -ms-transform: rotate(900deg); - -ms-animation-timing-function: ease-out; - -ms-origin: 70%; - } - 76% { - opacity: 0; - -ms-transform: rotate(900deg); - } - 100% { - opacity: 0; - -ms-transform: rotate(900deg); - } -} -@-o-keyframes orbit { - 0% { - opacity: 1; - z-index: 99; - -o-transform: rotate(180deg); - -o-animation-timing-function: ease-out; - } - 7% { - opacity: 1; - -o-transform: rotate(300deg); - -o-animation-timing-function: linear; - -o-origin: 0%; - } - 30% { - opacity: 1; - -o-transform: rotate(410deg); - -o-animation-timing-function: ease-in-out; - -o-origin: 7%; - } - 39% { - opacity: 1; - -o-transform: rotate(645deg); - -o-animation-timing-function: linear; - -o-origin: 30%; - } - 70% { - opacity: 1; - -o-transform: rotate(770deg); - -o-animation-timing-function: ease-out; - -o-origin: 39%; - } - 75% { - opacity: 1; - -o-transform: rotate(900deg); - -o-animation-timing-function: ease-out; - -o-origin: 70%; - } - 76% { - opacity: 0; - -o-transform: rotate(900deg); - } - 100% { - opacity: 0; - -o-transform: rotate(900deg); - } -} -@keyframes orbit { - 0% { - opacity: 1; - z-index: 99; - transform: rotate(180deg); - animation-timing-function: ease-out; - } - 7% { - opacity: 1; - transform: rotate(300deg); - animation-timing-function: linear; - origin: 0%; - } - 30% { - opacity: 1; - transform: rotate(410deg); - animation-timing-function: ease-in-out; - origin: 7%; - } - 39% { - opacity: 1; - transform: rotate(645deg); - animation-timing-function: linear; - origin: 30%; - } - 70% { - opacity: 1; - transform: rotate(770deg); - animation-timing-function: ease-out; - origin: 39%; - } - 75% { - opacity: 1; - transform: rotate(900deg); - animation-timing-function: ease-out; - origin: 70%; - } - 76% { - opacity: 0; - transform: rotate(900deg); - } - 100% { - opacity: 0; - transform: rotate(900deg); - } -} -.tooltip { - z-index: 20000; -} -body.lobipanel-minimized { - padding-bottom: 36px; -} -.lobipanel { - position: relative; - margin-bottom: 15px; -} -.lobipanel > .panel-heading { - padding: 5px; - position: relative; - border-top-right-radius: 0px; - border-top-left-radius: 0px; -} -.lobipanel > .panel-heading > .panel-title { - float: left; - max-width: calc(100% - 30px); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-size: 16px; - line-height: 30px; - padding-left: 15px; -} -.lobipanel > .panel-heading > .panel-title h1, -.lobipanel > .panel-heading > .panel-title h2, -.lobipanel > .panel-heading > .panel-title h3, -.lobipanel > .panel-heading > .panel-title h4, -.lobipanel > .panel-heading > .panel-title h5, -.lobipanel > .panel-heading > .panel-title h6 { - margin: 0; - line-height: 30px; -} -.lobipanel > .panel-heading > .panel-title input { - color: inherit; - line-height: 30px; - border-radius: 2px; - padding: 0 5px; - width: 100%; - background-color: rgba(0, 0, 0, 0.2); - border: 1px solid #337ab7; - outline: 0; -} -.lobipanel > .panel-heading > .panel-title input:focus { - background-color: rgba(0, 0, 0, 0.15); -} -.lobipanel > .panel-heading .dropdown { - display: inline-block; - float: right; - position: relative; -} -.lobipanel > .panel-heading .dropdown .dropdown-menu { - left: auto; - right: 0; - min-width: initial; - margin-top: 0; - border-radius: 0; -} -.lobipanel > .panel-heading .dropdown .dropdown-menu > li > a .control-title { - display: inline-block; - margin-left: 15px; -} -.lobipanel > .panel-heading .dropdown .dropdown-toggle { - border: none; - outline: 0; - background-color: transparent; - text-align: center; - padding: 0; - width: 30px; - font-size: 14px; - -webkit-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; -} -.lobipanel > .panel-heading .dropdown .dropdown-toggle .panel-control-icon { - top: 0; - line-height: 30px; -} -.lobipanel > .panel-heading .dropdown .dropdown-toggle:hover, -.lobipanel > .panel-heading .dropdown .dropdown-toggle:hover:focus { - text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.6); - background-color: rgba(0, 0, 0, 0.15); -} -.lobipanel > .panel-heading .dropdown.open .dropdown-toggle { - text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.6); - background-color: rgba(0, 0, 0, 0.15); -} -.lobipanel > .panel-heading:before, -.lobipanel > .panel-heading:after { - content: " "; - display: table; -} -.lobipanel > .panel-heading:after { - clear: both; -} -@media screen and (min-width: 768px) { - .lobipanel .panel-heading .panel-title { - max-width: calc(100% - 180px); - } - .lobipanel .panel-heading .dropdown .dropdown-menu { - position: static; - display: inline-block; - border: none; - padding: 0; - margin: 0; - min-width: initial; - width: auto; - -webkit-box-shadow: none; - box-shadow: none; - background: transparent; - } - .lobipanel .panel-heading .dropdown .dropdown-menu > li { - display: inline-block; - } - .lobipanel .panel-heading .dropdown .dropdown-menu > li > a { - cursor: pointer; - color: inherit; - padding: 0; - outline: 0; - text-align: center; - width: 30px; - font-size: 14px; - -webkit-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; - } - .lobipanel .panel-heading .dropdown .dropdown-menu > li > a .panel-control-icon { - top: 0; - line-height: 30px; - } - .lobipanel .panel-heading .dropdown .dropdown-menu > li > a .control-title { - display: none; - } - .lobipanel .panel-heading .dropdown .dropdown-menu > li > a:hover, - .lobipanel .panel-heading .dropdown .dropdown-menu > li > a:focus:hover { - text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.6); - background-color: rgba(0, 0, 0, 0.15); - } - .lobipanel .panel-heading .dropdown .dropdown-menu > li > a:focus { - text-shadow: none; - background-color: transparent; - } - .lobipanel .panel-heading .dropdown .dropdown-toggle { - display: none; - } -} -.lobipanel > .panel-body { - overflow: auto; - position: relative; -} -.lobipanel .panel-loader { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: #fff; - opacity: 0.8; -} -.lobipanel.panel-collapsed > .panel-heading { - border-bottom: none; -} -.lobipanel.panel-collapsed > .panel-heading .dropdown .dropdown-menu > li > a[data-func="unpin"], -.lobipanel.panel-collapsed > .panel-heading .dropdown .dropdown-menu > li > a[data-func="reload"], -.lobipanel.panel-collapsed > .panel-heading .dropdown .dropdown-menu > li > a[data-func="expand"] { - display: none; -} -.lobipanel.panel-expanded, -.lobipanel.panel-unpin, -.lobipanel.panel-minimized.panel-unpin { - margin-bottom: 0; -} -.lobipanel.panel-unpin { - overflow: hidden; - position: fixed; - z-index: 10000; - -webkit-box-shadow: 2px 2px 15px 5px rgba(10, 10, 10, 0.5); - box-shadow: 2px 2px 15px 5px rgba(10, 10, 10, 0.5); -} -.lobipanel.panel-unpin > .panel-heading { - cursor: move; -} -.lobipanel.panel-unpin.panel-minimized { - float: left; - position: initial; - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; - min-width: 170px; - margin-right: 5px; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading { - padding: 0; - cursor: pointer; - border-bottom: none; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .panel-title { - max-width: calc(100% - 60px); -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .panel-title h1, -.lobipanel.panel-unpin.panel-minimized > .panel-heading .panel-title h2, -.lobipanel.panel-unpin.panel-minimized > .panel-heading .panel-title h3, -.lobipanel.panel-unpin.panel-minimized > .panel-heading .panel-title h4, -.lobipanel.panel-unpin.panel-minimized > .panel-heading .panel-title h5, -.lobipanel.panel-unpin.panel-minimized > .panel-heading .panel-title h6 { - overflow: hidden; - text-overflow: ellipsis; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu { - position: static; - display: inline-block; - border: none; - padding: 0; - margin: 0; - min-width: initial; - width: auto; - -webkit-box-shadow: none; - box-shadow: none; - background: transparent; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li { - display: inline-block; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a { - cursor: pointer; - color: inherit; - padding: 0; - outline: 0; - text-align: center; - width: 30px; - font-size: 14px; - -webkit-transition: all 0.2s; - -o-transition: all 0.2s; - transition: all 0.2s; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a .panel-control-icon { - top: 0; - line-height: 30px; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a .control-title { - display: none; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a:hover, -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a:focus:hover { - text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.6); - background-color: rgba(0, 0, 0, 0.15); -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a:focus { - text-shadow: none; - background-color: transparent; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-toggle { - display: none; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a { - display: none; -} -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a[data-func="close"], -.lobipanel.panel-unpin.panel-minimized > .panel-heading .dropdown .dropdown-menu > li > a[data-func="expand"] { - display: inline-block; -} -.lobipanel.panel-unpin.panel-minimized > .panel-body, -.lobipanel.panel-unpin.panel-minimized > .panel-footer { - display: none !important; -} -.lobipanel.panel-expanded > .panel-heading { - cursor: initial; -} -.lobipanel.panel-expanded > .panel-heading .dropdown .dropdown-menu > li > a[data-func="unpin"], -.lobipanel.panel-expanded > .panel-heading .dropdown .dropdown-menu > li > a[data-func="minimize"] { - display: none; -} -.lobipanel.panel-expanded.panel-unpin > .panel-heading .panel-control[data-func="minimize"] { - display: block; -} -.lobipanel-minimized-toolbar { - position: fixed; - height: 36px; - padding: 2px; - bottom: 0; - left: 0; - right: 0; - z-index: 20000; - background: rgba(34, 115, 182, 0.51); -} -.lobipanel-placeholder { - background-color: #f9f5d1; - border: 1px dashed #919191; - margin-bottom: 15px; -} diff --git a/dashboard/skins/quick.css b/dashboard/skins/quick.css deleted file mode 100644 index 9fd8e049..00000000 --- a/dashboard/skins/quick.css +++ /dev/null @@ -1,15193 +0,0 @@ -/*! - * Quick Box UI - * Last compiled on Friday, July 22nd, 2016 - */ - -@import url(//fonts.googleapis.com/css?family=Open+Sans:400,400italic,600,600italic,700,700italic,300italic,300); -/*!@import url(https://fonts.googleapis.com/css?family=Raleway:400,100,200,300,500,600,700,800);*/ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -mark { - background: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - box-sizing: content-box; - height: 0; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-appearance: textfield; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; - 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) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.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; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before, -.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"; -} -.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"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - background-color: #d8dce3; - color: #696c74; - font-family: Open Sans; - font-size: 16px; - font-weight: 400; - line-height: 1.42857; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #259dab; - text-decoration: none; -} -a:hover, -a:focus { - color: #505b72; - text-decoration: none; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 2px; -} -.img-thumbnail { - padding: 4px; - line-height: 1.42857143; - background-color: #d8dce3; - border: 1px solid #dddddd; - border-radius: 2px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 17px; - margin-bottom: 17px; - border: 0; - border-top: 1px solid #eeeeee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - 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; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: bold; - line-height: 1.1; - color: #262b36; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 17px; - margin-bottom: 8.5px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 8.5px; - margin-bottom: 8.5px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 31px; -} -h2, -.h2 { - font-size: 25px; -} -h3, -.h3 { - font-size: 21px; -} -h4, -.h4 { - font-size: 15px; -} -h5, -.h5 { - font-size: 12px; -} -h6, -.h6 { - font-size: 11px; -} -p { - margin: 0 0 8.5px; -} -.lead { - margin-bottom: 17px; - font-size: 13px; - font-weight: 300; - line-height: 1.4; -} -.fs10 { - font-size: 10px; -} -.fs12 { - font-size: 12px; -} -.fs14 { - font-size: 14px; -} -.fs16 { - font-size: 16px; -} -.fs18 { - font-size: 18px; -} -.fs21 { - font-size: 21px; -} -.fs24 { - font-size: 24px; -} -.fs26 { - font-size: 26px; -} -.fs28 { - font-size: 28px; -} -.fs32 { - font-size: 32px; -} -.fs36 { - font-size: 36px; -} -@media (min-width: 768px) { - .lead { - font-size: 18px; - } -} -small, -.small { - font-size: 70%; -} -mark, -.mark { - background-color: #fcf8e3; - padding: .2em; -} -.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; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #aaacb2; -} -.text-primary { - color: #2574ab; -} -a.text-primary:hover, -a.text-primary:focus { - color: #1c5881; -} -.text-success { - color: #4daf7c; -} -a.text-success:hover, -a.text-success:focus { - color: #137b15; -} -.text-info { - color: #3b83a6; -} -a.text-info:hover, -a.text-info:focus { - color: #2e6580; -} -.text-warning { - color: #9c732c; -} -a.text-warning:hover, -a.text-warning:focus { - color: #745621; -} -.text-danger { - color: #d9534f; -} -a.text-danger:hover, -a.text-danger:focus { - color: #c9302c; -} -.text-inverted { - color: #555; -} -a.text-inverted:hover, -a.text-inverted:focus { - color: #777; -} -.bg-primary { - color: #fff; - background-color: #2574ab; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #1c5881; -} -.bg-success { - background-color: #4daf7c; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 7.5px; - margin: 34px 0 17px; - border-bottom: 1px solid #eeeeee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 8.5px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} -.list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-top: 0; - margin-bottom: 17px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 8.5px 17px; - margin: 0 0 17px; - font-size: 15px; - border-left: 5px solid #eeeeee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #eeeeee; - border-left: 0; - text-align: right; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 17px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 2px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #ffffff; - background-color: #333333; - border-radius: 2px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; -} -pre { - background-color: transparent; - border: 0 solid #cccccc; - border-radius: 0; - color: #333; - display: inline-block; - font-size: 12px; - line-height: 1.42857; - margin: 0; - padding: 0; - position: relative; - word-break: break-all; - word-wrap: break-word; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - margin-right: auto; - margin-left: auto; - padding-left: 10px; - padding-right: 10px; -} -@media (min-width: 768px) { - .container { - width: 740px; - } -} -@media (min-width: 992px) { - .container { - width: 960px; - } -} -@media (min-width: 1650px) { - .container { - width: 1160px; - } -} -.container-fluid { - margin-right: auto; - margin-left: auto; - padding-left: 10px; - padding-right: 10px; -} -.row { - margin-left: -10px; - margin-right: -10px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 10px; - padding-right: 10px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0%; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 1650px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0%; - } -} -table { - background-color: #f0f1f4; -} -caption { - padding-top: 10px 15px; - padding-bottom: 10px 15px; - color: #aaacb2; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 17px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - /*padding: 10px 15px;*/ - padding: 5px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ffffff; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ffffff; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ffffff; -} -.table .table { - background-color: #d8dce3; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ffffff; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ffffff; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #fcfcfd; -} -.table-hover > tbody > tr:hover { - background-color: #e7e9ee; -} -table col[class*="col-"] { - position: static; - float: none; - display: table-column; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #e7e9ee; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #d8dce3; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #4daf7c; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - overflow-x: auto; - min-height: 0.01%; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 12.75px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ffffff; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 17px; - font-size: 18px; - line-height: inherit; - color: #333333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 11px; - font-size: 12px; - line-height: 1.42857143; - color: #262b36; -} -.form-control { - display: block; - width: 100%; - height: 38px; - padding: 10px 12px; - font-size: 12px; - line-height: 1.42857143; - color: #262b36; - background-color: #fcfcfd; - background-image: none; - border: 1px solid #bdc3d1; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); -} -.form-control::-moz-placeholder { - color: #9fa8bc; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #9fa8bc; -} -.form-control::-webkit-input-placeholder { - color: #9fa8bc; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #e7e9ee; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 38px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 32px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 42px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 17px; - 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; -} -.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; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 11px; - padding-bottom: 11px; - margin-bottom: 0; - min-height: 29px; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-left: 0; - padding-right: 0; -} -/*.input-sm { - height: 32px; - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -}*/ -.input-sm { - border-radius: 2px; - font-size: 11px !important; - height: 24px !important; - line-height: 1.1; - padding: 2px 8px !important; -} -select.input-sm { - height: 32px; - line-height: 32px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 32px; - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} -.form-group-sm select.form-control { - height: 32px; - line-height: 32px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 32px; - min-height: 28px; - padding: 6px 8px; - font-size: 11px; - line-height: 1.5; -} -.input-lg { - height: 42px; - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; - border-radius: 2px; -} -select.input-lg { - height: 42px; - line-height: 42px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 42px; - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; - border-radius: 2px; -} -.form-group-lg select.form-control { - height: 42px; - line-height: 42px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 42px; - min-height: 33px; - padding: 12px 14px; - font-size: 16px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 47.5px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 38px; - height: 38px; - line-height: 38px; - 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: 42px; - height: 42px; - line-height: 42px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 32px; - height: 32px; - line-height: 32px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #4daf7c; -} -.has-success .form-control { - border-color: #4daf7c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #137b15; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #45e247; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #45e247; -} -.has-success .input-group-addon { - color: #4daf7c; - border-color: #4daf7c; - background-color: #4daf7c; -} -.has-success .form-control-feedback { - color: #4daf7c; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #9c732c; -} -.has-warning .form-control { - border-color: #9c732c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #745621; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d1a75d; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d1a75d; -} -.has-warning .input-group-addon { - color: #9c732c; - border-color: #9c732c; - background-color: #fcf8e3; -} -.has-warning .form-control-feedback { - color: #9c732c; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #d9534f; -} -.has-error .form-control { - border-color: #d9534f; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #c9302c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #eba5a3; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #eba5a3; -} -.has-error .input-group-addon { - color: #d9534f; - border-color: #d9534f; - background-color: #f2dede; -} -.has-error .form-control-feedback { - color: #d9534f; -} -.has-feedback label ~ .form-control-feedback { - top: 22px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #aaacb2; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 11px; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 28px; -} -.form-horizontal .form-group { - margin-left: -10px; - margin-right: -10px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 11px; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 10px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 15.6666663px; - font-size: 16px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 11px; - } -} -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 10px 12px; - font-size: 12px; - line-height: 1.42857143; - border-radius: 2px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #696c74; - text-decoration: none; -} -.btn:active, -.btn.active { - outline: 0; - background-image: none; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #696c74; - background-color: #ffffff; - border-color: #bdc3d1; -} -.btn-default:focus, -.btn-default.focus { - color: #696c74; - background-color: #e6e6e6; - border-color: #727f9c; -} -.btn-default:hover { - color: #696c74; - background-color: #e6e6e6; - border-color: #99a3b7; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #696c74; - background-color: #e6e6e6; - border-color: #99a3b7; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #696c74; - background-color: #d4d4d4; - border-color: #727f9c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #ffffff; - border-color: #bdc3d1; -} -.btn-default .badge { - color: #ffffff; - background-color: #696c74; -} -.btn-primary { - color: #ffffff; - background-color: #2574ab; - border-color: transparent; -} -.btn-primary:focus, -.btn-primary.focus { - color: #ffffff; - background-color: #1c5881; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:hover { - color: #ffffff; - background-color: #1c5881; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #1c5881; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #ffffff; - background-color: #164464; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #2574ab; - border-color: transparent; -} -.btn-primary .badge { - color: #2574ab; - background-color: #ffffff; -} -.btn-success { - color: #ffffff; - background-color: #4daf7c; - border-color: transparent; -} -.btn-success:focus, -.btn-success.focus { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:hover { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #259dab; - border-color: transparent; -} -.btn-success .badge { - color: #4daf7c; - background-color: #ffffff; -} -.btn-info { - color: #ffffff; - background-color: #5bc0de; - border-color: transparent; -} -.btn-info:focus, -.btn-info.focus { - color: #ffffff; - background-color: #31b0d5; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:hover { - color: #ffffff; - background-color: #31b0d5; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #31b0d5; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #ffffff; - background-color: #269abc; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: transparent; -} -.btn-info .badge { - color: #5bc0de; - background-color: #ffffff; -} -.btn-warning { - color: #ffffff; - background-color: #e6ad5c; - border-color: transparent; -} -.btn-warning:focus, -.btn-warning.focus { - color: #ffffff; - background-color: #df9730; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:hover { - color: #ffffff; - background-color: #df9730; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #df9730; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #ffffff; - background-color: #cc851f; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #e6ad5c; - border-color: transparent; -} -.btn-warning .badge { - color: #e6ad5c; - background-color: #ffffff; -} -.btn-danger { - color: #ffffff; - background-color: #d9534f; - border-color: transparent; -} -.btn-danger:focus, -.btn-danger.focus { - color: #ffffff; - background-color: #c9302c; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:hover { - color: #ffffff; - background-color: #c9302c; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #c9302c; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #ffffff; - background-color: #ac2925; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: transparent; -} -.btn-danger .badge { - color: #d9534f; - background-color: #ffffff; -} -.btn-link { - color: #259dab; - font-weight: normal; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #505b72; - text-decoration: none; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; - border-radius: 2px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 3px 5px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.headermenu > li > .btn-group > .btn-logged.btn-donate { - border: 2px solid #222; - padding: 6px 12px; - color: #fff; -} -.headermenu > li > .btn-group > .btn-logged.btn-donate:hover { - border: 2px solid #fc575e !important; - padding: 6px 12px; -} -a.btn-donate { - color: #fff; -} -.chat-btn { - background: transparent none repeat scroll 0 0; - color: #333 !important; - font-size: 12px; - line-height: 14px; - padding: 2px 0 0 25%; - text-align: center; - width: 100% !important; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - transition-timing-function: ease; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 12px; - text-align: left; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 2px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 7.5px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - text-decoration: none; - color: #262626; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #ffffff; - text-decoration: none; - outline: 0; - background-color: #2574ab; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - left: auto; - right: 0; -} -.dropdown-menu-left { - left: 0; - right: auto; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 11px; - line-height: 1.42857143; - color: #777777; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.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, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 2px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-bottom-left-radius: 2px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.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, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - float: none; - display: table-cell; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 42px; - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; - border-radius: 2px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 42px; - line-height: 42px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 32px; - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; - border-radius: 2px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 32px; - line-height: 32px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 10px 12px; - font-size: 12px; - font-weight: normal; - line-height: 1; - color: #262b36; - text-align: center; - background-color: #f6f7f8; - border: 1px solid #bdc3d1; - border-radius: 2px; -} -.input-group-addon.input-sm { - padding: 5px 8px; - font-size: 11px; - border-radius: 2px; -} -.input-group-addon.input-lg { - padding: 11px 14px; - font-size: 16px; - border-radius: 2px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.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 { - border-bottom-right-radius: 0; - border-top-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 { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 14px 25px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eeeeee; -} -.nav > li.disabled > a { - color: #777777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777777; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eeeeee; - border-color: #259dab; -} -.nav .nav-divider { - height: 1px; - margin: 7.5px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #dddddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 2px 2px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eeeeee #eeeeee #dddddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555555; - background-color: #d8dce3; - border: 1px solid #dddddd; - border-bottom-color: transparent; - cursor: default; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav.nav-tabs.nav-justified li { - padding: 0; -} -.nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 2px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 2px 2px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #d8dce3; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 2px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #2574ab; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 2px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #dddddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #dddddd; - border-radius: 2px 2px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #d8dce3; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 17px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 2px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - overflow-x: visible; - padding-right: 10px; - padding-left: 10px; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -10px; - margin-left: -10px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - padding: 16.5px 10px; - font-size: 16px; - line-height: 17px; - height: 50px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -10px; - } -} -.navbar-toggle { - position: relative; - float: right; - margin-right: 10px; - padding: 9px 10px; - margin-top: 8px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 2px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 8.25px -10px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 17px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 17px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 16.5px; - padding-bottom: 16.5px; - } -} -.navbar-form { - margin-left: -10px; - margin-right: -10px; - padding: 10px 10px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 6px; - margin-bottom: 6px; -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-right-radius: 2px; - border-top-left-radius: 2px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 6px; - margin-bottom: 6px; -} -.navbar-btn.btn-sm { - margin-top: 9px; - margin-bottom: 9px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 16.5px; - margin-bottom: 16.5px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-left: 10px; - margin-right: 10px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -10px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777777; -} -.navbar-default .navbar-nav > li > a { - color: #777777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #dddddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #dddddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - background-color: #e7e7e7; - color: #555555; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777777; -} -.navbar-default .navbar-link:hover { - color: #333333; -} -.navbar-default .btn-link { - color: #777777; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; -} -.navbar-inverse { - background-color: #222222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #ffffff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #ffffff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - background-color: #080808; - color: #ffffff; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #9d9d9d; -} -.navbar-inverse .navbar-link:hover { - color: #ffffff; -} -.navbar-inverse .btn-link { - color: #9d9d9d; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #ffffff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 17px; - list-style: none; - background-color: #f5f5f5; - border-radius: 2px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - content: "/\00a0"; - padding: 0 5px; - color: #cccccc; -} -.breadcrumb > .active { - color: #777777; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 17px 0; - border-radius: 2px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 10px 12px; - /*line-height: 1.42857143;*/ - line-height: 14px; - text-decoration: none; - color: #505b72; - background-color: #d8dce3; - border: 1px solid transparent; - margin-left: -1px; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 3; - color: #505b72; - background-color: #bac1ce; - border-color: transparent; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #ffffff; - background-color: #259dab; - border-color: transparent; - cursor: default; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #b8b9be; - background-color: #f6f7f8; - border-color: transparent; - cursor: not-allowed; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 11px 14px; - font-size: 16px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 8px; - font-size: 11px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.pager { - padding-left: 0; - margin: 17px 0; - list-style: none; - text-align: center; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #d8dce3; - border: 1px solid transparent; - border-radius: 2px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #bac1ce; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #9fa8bc; - background-color: #d8dce3; - cursor: not-allowed; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #2574ab; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #1c5881; -} -.label-success { - background-color: #4daf7c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #03a678; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #e6ad5c; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #df9730; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 11px; - font-weight: normal; - color: #ffffff; - line-height: 1; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: #777777; - border-radius: 10px; -} -.badge-info { - background-color: #777777; - border-radius: 50%; - color: #ffffff; - display: inline-block; - font-size: 11px; - font-weight: normal; - height: 15px; - line-height: 5px; - min-width: 5px; - padding: 5px; - text-align: center; - vertical-align: middle; - white-space: nowrap; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #259dab; - background-color: #ffffff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eeeeee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 18px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 2px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-left: 60px; - padding-right: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 54px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 17px; - line-height: 1.42857143; - background-color: #d8dce3; - border: 1px solid #dddddd; - border-radius: 2px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-left: auto; - margin-right: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #259dab; -} -.thumbnail .caption { - padding: 9px; - color: #696c74; -} -.alert { - border: 1px solid transparent; - border-radius: 0; - font-size: 12px; - margin-bottom: 0; - padding: 7px; - text-align: left; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-default { - background-color: #e4e7ec; - border-color: transparent; - color: #0e4e64; -} -.alert-default hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-default .alert-link { - color: #082b37; -} -.alert-success { - background-color: #9ed566; - border-color: transparent; - color: #456b1d; -} -.alert-success hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-success .alert-link { - color: #2b4312; -} -.alert-info { - background-color: #56c2e8; - border-color: transparent; - color: #0e4e64; -} -.alert-info hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-info .alert-link { - color: #082b37; -} -.alert-warning { - background-color: #fdcc51; - border-color: transparent; - color: #815c01; -} -.alert-warning hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-warning .alert-link { - color: #4e3801; -} -.alert-danger { - background-color: #e55869; - border-color: transparent; - color: #ffffff; -} -.alert-danger hr { - border-top-color: rgba(0, 0, 0, 0); -} -.alert-danger .alert-link { - color: #e6e6e6; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 17px; - margin-bottom: 17px; - background-color: #e7e9ee; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 11px; - line-height: 17px; - color: #ffffff; - text-align: center; - background-color: #2574ab; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #4daf7c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #e6ad5c; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - zoom: 1; - overflow: hidden; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.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; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - margin-bottom: 20px; - padding-left: 0; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: transparent; - border: 0px solid #dddddd; -} -.list-group-item:first-child { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -a.list-group-item, -button.list-group-item { - color: #555555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - text-decoration: none; - color: #555555; - background-color: #f5f5f5; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - background-color: #eeeeee; - color: #777777; - cursor: not-allowed; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #ffffff; - background-color: #2574ab; - border-color: #2574ab; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #aed4ee; -} -.list-group-item-success { - color: #1aa71c; - background-color: #dff0d8; -} -a.list-group-item-success, -button.list-group-item-success { - color: #1aa71c; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #1aa71c; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #1aa71c; - border-color: #1aa71c; -} -.list-group-item-info { - color: #3b83a6; - background-color: #d9edf7; -} -a.list-group-item-info, -button.list-group-item-info { - color: #3b83a6; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #3b83a6; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #3b83a6; - border-color: #3b83a6; -} -.list-group-item-warning { - color: #9c732c; - background-color: #fcf8e3; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #9c732c; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #9c732c; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #9c732c; - border-color: #9c732c; -} -.list-group-item-danger { - color: #d9534f; - background-color: #f2dede; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #d9534f; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #d9534f; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #d9534f; - border-color: #d9534f; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 17px; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 2px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 20px; -} -.panel-heading { - padding: 20px; - border-bottom: 1px solid transparent; - border-top-right-radius: 1px; - border-top-left-radius: 1px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 14px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 5px; - background-color: #f5f5f5; - border-top: 1px solid #dddddd; - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-right-radius: 1px; - border-top-left-radius: 1px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-left: 20px; - padding-right: 20px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: 1px; - border-top-left-radius: 1px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 1px; - border-top-right-radius: 1px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 1px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 1px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 1px; - border-bottom-left-radius: 1px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: 1px; - border-bottom-right-radius: 1px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 1px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 1px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ffffff; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - border: 0; - margin-bottom: 0; -} -.panel-group { - margin-bottom: 17px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 2px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #dddddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #dddddd; -} -.panel-default { - border-color: #d2d6df; -} -.panel-default > .panel-heading { - color: #444; - background-color: #f1f1f1; - border-color: #cfd9db; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #cfd9db; -} -.panel-default > .panel-heading .badge { - color: #9fa8bc; - background-color: #f5f5f5; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #cfd9db; -} -.panel-primary { - border-color: #2574ab; -} -.panel-primary > .panel-heading { - color: #ffffff; - background-color: #2574ab; - border-color: #2574ab; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #2574ab; -} -.panel-primary > .panel-heading .badge { - color: #2574ab; - background-color: #ffffff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #2574ab; -} -.panel-success { - border-color: #4daf7c; -} -.panel-success > .panel-heading { - color: #1aa71c; - background-color: #4daf7c; - border-color: #4daf7c; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #4daf7c; -} -.panel-success > .panel-heading .badge { - color: #259dab; - background-color: #4daf7c; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #4daf7c; -} -.panel-info { - border-color: #31b0d5; -} -.panel-info > .panel-heading { - color: #3b83a6; - background-color: #5bc0de; - border-color: #31b0d5; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #31b0d5; -} -.panel-info > .panel-heading .badge { - color: #5bc0de; - background-color: #3b83a6; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #31b0d5; -} -.panel-warning { - border-color: #df9730; -} -.panel-warning > .panel-heading { - color: #9c732c; - background-color: #e6ad5c; - border-color: #df9730; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #df9730; -} -.panel-warning > .panel-heading .badge { - color: #e6ad5c; - background-color: #9c732c; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #df9730; -} -.panel-danger { - border-color: #c9302c; -} -.panel-danger > .panel-heading { - color: #d9534f; - background-color: #d9534f; - border-color: #c9302c; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #c9302c; -} -.panel-danger > .panel-heading .badge { - color: #d9534f; - background-color: #d9534f; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #c9302c; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #d8dce3; - border: 1px solid #c3c9d4; - border-radius: 2px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 2px; -} -.well-sm { - padding: 9px; - border-radius: 2px; -} -.close { - float: right; - font-size: 18px; - font-weight: bold; - line-height: 1; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -moz-transition: -moz-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #ffffff; - border: 1px solid #999999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 4px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; - outline: 0; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; - min-height: 16.42857143px; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - font-size: 14px; - font-weight: 300; - padding: 15px; - position: relative; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 350px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 11px; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - background-color: #000000; - border-radius: 2px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 12px; - background-color: #ffffff; - background-clip: padding-box; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 2px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 12px; - background-color: #ffffff; - border-bottom: 1px solid #f2f2f2; - border-radius: 1px 1px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top > .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top > .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #ffffff; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #ffffff; -} -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom > .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #ffffff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #ffffff; - bottom: -10px; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -moz-transition: -moz-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - -moz-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - left: 0; - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - left: 0; - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control:hover, -.carousel-control:focus { - outline: 0; - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.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; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #ffffff; - border-radius: 10px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); -} -.carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #ffffff; -} -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - content: " "; - display: table; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.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: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1650px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1650px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1650px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1650px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1649px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1650px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/***** ALERTS *****/ -.alert .close { - margin-top: -2px; -} -.alert-success .alert-link { - color: #3f631b; -} -.alert-success .alert-link:hover, -.alert-success .alert-link:focus { - color: #304b15; -} -.alert-info .alert-link { - color: #0c475b; -} -.alert-info .alert-link:hover, -.alert-info .alert-link:focus { - color: #093240; -} -.alert-warning .alert-link { - color: #765501; -} -.alert-warning .alert-link:hover, -.alert-warning .alert-link:focus { - color: #583f01; -} -.alert-danger .alert-link { - color: #fafafa; -} -.alert-danger .alert-link:hover, -.alert-danger .alert-link:focus { - color: #ebebeb; -} -/***** BUTTONS *****/ -.btn { - padding: 10px 12px 9px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: none; -} -.btn-default { - color: #696c74; - background-color: #ffffff; - border-color: #bdc3d1; -} -.btn-default:focus, -.btn-default.focus { - color: #696c74; - background-color: #ededed; - border-color: #818da7; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default:hover { - color: #696c74; - background-color: #f2f2f2; - border-color: #a8b0c2; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #696c74; - background-color: #ededed; - border-color: #a8b0c2; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #696c74; - background-color: #ededed; - border-color: #9fa8bc; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #ffffff; - border-color: #bdc3d1; -} -.btn-default .badge { - color: #ffffff; - background-color: #696c74; -} -.btn-primary { - color: #ffffff; - background-color: #2574ab; - border-color: transparent; -} -.btn-primary:focus, -.btn-primary.focus { - color: #ffffff; - background-color: #1f608e; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-primary:hover { - color: #ffffff; - background-color: #206696; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #1f608e; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #ffffff; - background-color: #1f608e; - border-color: rgba(0, 0, 0, 0); -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #2574ab; - border-color: transparent; -} -.btn-primary .badge { - color: #2574ab; - background-color: #ffffff; -} -.btn-success { - color: #ffffff; - background-color: #4daf7c; - border-color: transparent; -} -.btn-success:focus, -.btn-success.focus { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-success:hover { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #ffffff; - background-color: #03a678; - border-color: rgba(0, 0, 0, 0); -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #4daf7c; - border-color: transparent; -} -.btn-success .badge { - color: #4daf7c; - background-color: #ffffff; -} -.btn-warning { - color: #ffffff; - background-color: #e6ad5c; - border-color: transparent; -} -.btn-warning:focus, -.btn-warning.focus { - color: #ffffff; - background-color: #e19d3d; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-warning:hover { - color: #ffffff; - background-color: #e3a246; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #e19d3d; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #ffffff; - background-color: #e19d3d; - border-color: rgba(0, 0, 0, 0); -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #e6ad5c; - border-color: transparent; -} -.btn-warning .badge { - color: #e6ad5c; - background-color: #ffffff; -} -.btn-danger { - color: #ffffff; - background-color: #d9534f; - border-color: transparent; -} -.btn-danger:focus, -.btn-danger.focus { - color: #ffffff; - background-color: #d33632; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-danger:hover { - color: #ffffff; - background-color: #d43f3a; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #d33632; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #ffffff; - background-color: #d33632; - border-color: rgba(0, 0, 0, 0); -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: transparent; -} -.btn-danger .badge { - color: #d9534f; - background-color: #ffffff; -} -.btn-info { - color: #ffffff; - background-color: #5bc0de; - border-color: transparent; -} -.btn-info:focus, -.btn-info.focus { - color: #ffffff; - background-color: #3db5d8; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-info:hover { - color: #ffffff; - background-color: #46b8da; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #3db5d8; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #ffffff; - background-color: #3db5d8; - border-color: rgba(0, 0, 0, 0); -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: transparent; -} -.btn-info .badge { - color: #5bc0de; - background-color: #ffffff; -} -.btn-inverse { - color: #ffffff; - background-color: #2a2a2a; - border-color: transparent; -} -.btn-inverse:focus, -.btn-inverse.focus { - color: #ffffff; - background-color: #222; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-inverse:hover { - color: #ffffff; - background-color: #222; - border-color: rgba(0, 0, 0, 0); -} -.btn-inverse:active, -.btn-inverse.active, -.open > .dropdown-toggle.btn-inverse { - color: #ffffff; - background-color: #222; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 11px 14px 10px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 8px 4px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 3px 5px 2px; -} -.input-group-btn .btn:not(.btn-lg), -.input-group-btn .btn:not(.btn-sm), -.input-group-btn .btn:not(.btn-xs) { - min-height: 38px; -} -/***** BUTTON GROUPS *****/ -.btn-group .btn:not(.btn-default) + .btn:not(.btn-default), -.btn-group .btn:not(.btn-default) + .btn-group, -.btn-group .btn-group + .btn:not(.btn-default), -.btn-group .btn-group + .btn-group { - margin-left: 0; - border-left: 1px solid rgba(255, 255, 255, 0.2); -} -.btn-group .btn:not(.btn-default) + .btn-group { - margin-left: -1px; -} -/***** DROPDOWN *****/ -.dropdown-menu { - padding: 5px; - -webkit-box-shadow: none; - box-shadow: none; -} -.dropdown-menu > li > a { - padding: 5px 7px; - border-radius: 2px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #bdc3d1; - color: #fff; -} -.dropdown-menu .divider { - margin: 5px 0; -} -.dm-icon > li > a > i { - display: inline-block; - margin-right: 5px; -} -/***** FORMS *****/ -.form-control { - -webkit-box-shadow: none; - box-shadow: none; - -webkit-transition: none; - -o-transition: none; - transition: none; -} -.form-control:focus { - background-color: #fff; - border-color: #9fa8bc; - -webkit-box-shadow: none; - box-shadow: none; -} -.form-control[disabled], -.form-control[readonly] { - color: #9fa8bc; -} -.form-group { - margin-bottom: 20px; -} -.has-success .form-control, -.has-warning .form-control, -.has-error .form-control, -.has-success .form-control:focus, -.has-warning .form-control:focus, -.has-error .form-control:focus { - -webkit-box-shadow: none; - box-shadow: none; -} -/***** BADGES & LABELS *****/ -.badge { - font-size: 10px; - font-weight: 500; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} -.label { - font-weight: normal; -} -/***** MEDIA *****/ -.media-right, -.media > .pull-right { - padding-left: 20px; -} -.media-left, -.media > .pull-left { - padding-right: 20px; -} -/***** PAGINATION *****/ -.pagination > li > a, -.pagination > li > span { - font-weight: 700; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; - padding: 9px 14px; -} -.pagination > li + li > a, -.pagination > li + li > span { - margin-left: 1px; -} -.pagination-bordered > li + li > a, -.pagination-bordered > li + li > span { - margin-left: 5px; - border-radius: 2px; - background-color: transparent; - border-color: #dbdfe6; -} -.pagination-bordered > li + li > a:hover, -.pagination-bordered > li + li > span:hover, -.pagination-bordered > li + li > a:focus, -.pagination-bordered > li + li > span:focus { - background-color: #d8dce3; - border-color: #bdc3d1; -} -.pagination-bordered > .disabled > span, -.pagination-bordered > .disabled > span:hover, -.pagination-bordered > .disabled > span:focus, -.pagination-bordered > .disabled > a, -.pagination-bordered > .disabled > a:hover, -.pagination-bordered > .disabled > a:focus { - border-color: #dbdfe6; -} -.pager li { - text-transform: uppercase; - font-weight: 700; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -} -.pager li > a, -.pager li > span { - color: #3b4354; - padding: 9px 14px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -/***** PANELS *****/ -.panel { - border: 0; - border-radius: 2px; - margin-bottom: 20px; - background-color: #fff; - position: relative; - -webkit-box-shadow: none; - box-shadow: none; -} -.panel-heading { - margin-bottom: 0; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.panel-heading.min { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel-heading p { - margin: 7px 0 0; -} -.panel-heading + .panel-body { - padding-top: 0; -} -.panel-title { - text-transform: uppercase; - font-size: 18px; - font-weight: 400; - color: #313745; - letter-spacing: .2px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -} -.panel-body { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel-body p + p { - margin: 15px 0 0; -} -.panel-body .list-inline > li:first-child { - padding-left: 0; -} -.panel-body .list-inline > li:last-child { - padding-right: 0; -} -.panel-body.inverse { - background-color: #3b4354; - color: rgba(255, 255, 255, 0.8); -} -.panel-default > .panel-heading > p { - color: #696c74; -} -.panel-footer { - background-color: #f0f1f4; - border-color: transparent; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel-default .panel-options, -.panel-primary .panel-options, -.panel-success .panel-options, -.panel-warning .panel-options, -.panel-danger .panel-options, -.panel-info .panel-options, -.panel-inverse .panel-options { - top: 11px; -} -.panel-default .panel-heading, -.panel-primary .panel-heading, -.panel-success .panel-heading, -.panel-warning .panel-heading, -.panel-danger .panel-heading, -.panel-info .panel-heading, -.panel-inverse .panel-heading { - padding-top: 15px; - padding-bottom: 15px; - border-bottom: 0; -} -/*.panel-default .panel-heading .panel-title,*/ -.panel-primary .panel-heading .panel-title, -.panel-success .panel-heading .panel-title, -.panel-warning .panel-heading .panel-title, -.panel-danger .panel-heading .panel-title, -.panel-info .panel-heading .panel-title, -.panel-inverse .panel-heading .panel-title { - color: #fff; -} -.panel-default .panel-heading .panel-title { - color: #444; -} -.panel-default .panel-heading p, -.panel-primary .panel-heading p, -.panel-success .panel-heading p, -.panel-warning .panel-heading p, -.panel-danger .panel-heading p, -.panel-info .panel-heading p, -.panel-inverse .panel-heading p { - color: rgba(255, 255, 255, 0.8); -} -.panel-default .panel-body, -.panel-primary .panel-body, -.panel-success .panel-body, -.panel-warning .panel-body, -.panel-danger .panel-body, -.panel-info .panel-body, -.panel-inverse .panel-body { - padding-top: 20px; -} -.panel-group .panel { - border-radius: 0; -} -.panel-group .panel > .panel-heading { - padding: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.panel-group .panel > .panel-heading .panel-title { - font-size: 12px; -} -@media (max-width: 480px) { - .panel-group .panel > .panel-heading .panel-title { - line-height: 18px; - } -} -.panel-group .panel > .panel-heading .panel-title > a { - display: block; - position: relative; - padding: 18px 20px 15px; - color: #505b72; - color: #259dab; - background-color: #fff; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-group .panel > .panel-heading .panel-title > a:hover, -.panel-group .panel > .panel-heading .panel-title > a:focus { - color: #259dab; -} -.panel-group .panel > .panel-heading .panel-title > a:after { - content: '\f078'; - font-family: 'FontAwesome'; - font-size: 11px; - font-weight: normal; - color: #9fa8bc; - position: absolute; - top: 15px; - right: 20px; - display: none; -} -.panel-group .panel > .panel-heading .panel-title > a.collapsed { - padding: 15px 20px; - color: #505b72; -} -.panel-group .panel > .panel-heading .panel-title > a.collapsed:after { - content: '\f054'; - color: #fff; -} -.panel-group .panel > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel > .panel-heading .panel-title > a.collapsed:focus { - color: #262b36; -} -.panel-group .panel > .panel-heading + .panel-collapse > .panel-body { - border-top: 0; -} -.panel-group .panel + .panel { - margin-top: 0; - border-top: 1px solid #dbdfe6; -} -.panel-group .panel .panel-collapse.in > .panel-body, -.panel-group .panel .panel-collapse.collapsing > .panel-body { - padding-top: 0; -} -.panel-group .panel:first-child, -.panel-group .panel:first-child > .panel-heading .panel-title > a { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.panel-group .panel:last-child, -.panel-group .panel:last-child > .panel-heading .panel-title > a.collapsed { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-group .panel-default > .panel-heading .panel-title > a, -.panel-group .panel-primary > .panel-heading .panel-title > a, -.panel-group .panel-success > .panel-heading .panel-title > a, -.panel-group .panel-warning > .panel-heading .panel-title > a, -.panel-group .panel-danger > .panel-heading .panel-title > a, -.panel-group .panel-info > .panel-heading .panel-title > a, -.panel-group .panel-inverse > .panel-heading .panel-title > a { - margin-top: -1px; -} -.panel-group .panel-default > .panel-heading .panel-title > a:after, -.panel-group .panel-primary > .panel-heading .panel-title > a:after, -.panel-group .panel-success > .panel-heading .panel-title > a:after, -.panel-group .panel-warning > .panel-heading .panel-title > a:after, -.panel-group .panel-danger > .panel-heading .panel-title > a:after, -.panel-group .panel-info > .panel-heading .panel-title > a:after, -.panel-group .panel-inverse > .panel-heading .panel-title > a:after { - display: block; -} -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed { - color: rgba(255, 255, 255, 0.8); - margin-top: 0; -} -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed:focus, -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed:focus { - color: #fff; -} -.panel-group .panel-default:first-child > .panel-heading, -.panel-group .panel-primary:first-child > .panel-heading, -.panel-group .panel-success:first-child > .panel-heading, -.panel-group .panel-warning:first-child > .panel-heading, -.panel-group .panel-danger:first-child > .panel-heading, -.panel-group .panel-info:first-child > .panel-heading, -.panel-group .panel-inverse:first-child > .panel-heading { - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel-group .panel-default:first-child > .panel-heading .panel-title > a, -.panel-group .panel-primary:first-child > .panel-heading .panel-title > a, -.panel-group .panel-success:first-child > .panel-heading .panel-title > a, -.panel-group .panel-warning:first-child > .panel-heading .panel-title > a, -.panel-group .panel-danger:first-child > .panel-heading .panel-title > a, -.panel-group .panel-info:first-child > .panel-heading .panel-title > a, -.panel-group .panel-inverse:first-child > .panel-heading .panel-title > a { - margin-top: 0; -} -.panel-group .panel-default:last-child > .panel-heading, -.panel-group .panel-primary:last-child > .panel-heading, -.panel-group .panel-success:last-child > .panel-heading, -.panel-group .panel-warning:last-child > .panel-heading, -.panel-group .panel-danger:last-child > .panel-heading, -.panel-group .panel-info:last-child > .panel-heading, -.panel-group .panel-inverse:last-child > .panel-heading, -.panel-group .panel-default:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-primary:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-success:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-warning:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-danger:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-info:last-child > .panel-heading .panel-title > a.collapsed, -.panel-group .panel-inverse:last-child > .panel-heading .panel-title > a.collapsed { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-group .panel-default .panel-collapse.in > .panel-body, -.panel-group .panel-primary .panel-collapse.in > .panel-body, -.panel-group .panel-success .panel-collapse.in > .panel-body, -.panel-group .panel-warning .panel-collapse.in > .panel-body, -.panel-group .panel-danger .panel-collapse.in > .panel-body, -.panel-group .panel-info .panel-collapse.in > .panel-body, -.panel-group .panel-inverse .panel-collapse.in > .panel-body, -.panel-group .panel-default .panel-collapse.collapsing > .panel-body, -.panel-group .panel-primary .panel-collapse.collapsing > .panel-body, -.panel-group .panel-success .panel-collapse.collapsing > .panel-body, -.panel-group .panel-warning .panel-collapse.collapsing > .panel-body, -.panel-group .panel-danger .panel-collapse.collapsing > .panel-body, -.panel-group .panel-info .panel-collapse.collapsing > .panel-body, -.panel-group .panel-inverse .panel-collapse.collapsing > .panel-body { - padding-top: 0; - margin-bottom: -1px; -} -.panel-group .panel-default > .panel-heading { - background-color: transparent; -} -.panel-group .panel-default > .panel-heading .panel-title > a, -.panel-group .panel-default > .panel-heading .panel-title > a:hover, -.panel-group .panel-default > .panel-heading .panel-title > a:focus { - color: #9fa8bc; -} -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed { - background-color: #9fa8bc; -} -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-default > .panel-heading .panel-title > a.collapsed:focus { - background-color: #909bb1; -} -.panel-group .panel-default + .panel { - border-color: #b4bbca; -} -.panel-group .panel-default > .panel-heading .panel-title > a, -.panel-group .panel-default > .panel-heading .panel-title > a:hover, -.panel-group .panel-default > .panel-heading .panel-title > a:focus { - color: #3b4354; -} -.panel-group .panel-primary > .panel-heading { - background-color: transparent; -} -.panel-group .panel-primary > .panel-heading .panel-title > a, -.panel-group .panel-primary > .panel-heading .panel-title > a:hover, -.panel-group .panel-primary > .panel-heading .panel-title > a:focus { - color: #2574ab; -} -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed { - background-color: #2574ab; -} -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-primary > .panel-heading .panel-title > a.collapsed:focus { - background-color: #206696; -} -.panel-group .panel-primary + .panel { - border-color: #2b88c8; -} -.panel-group .panel-success > .panel-heading { - background-color: transparent; -} -.panel-group .panel-success > .panel-heading .panel-title > a, -.panel-group .panel-success > .panel-heading .panel-title > a:hover, -.panel-group .panel-success > .panel-heading .panel-title > a:focus { - color: #4daf7c; -} -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed { - background-color: #4daf7c; -} -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-success > .panel-heading .panel-title > a.collapsed:focus { - background-color: #4daf7c; -} -.panel-group .panel-success + .panel { - border-color: #4daf7c; -} -.panel-group .panel-warning > .panel-heading { - background-color: transparent; -} -.panel-group .panel-warning > .panel-heading .panel-title > a, -.panel-group .panel-warning > .panel-heading .panel-title > a:hover, -.panel-group .panel-warning > .panel-heading .panel-title > a:focus { - color: #e6ad5c; -} -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed { - background-color: #e6ad5c; -} -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-warning > .panel-heading .panel-title > a.collapsed:focus { - background-color: #e3a246; -} -.panel-group .panel-warning + .panel { - border-color: #ebbd7b; -} -.panel-group .panel-danger > .panel-heading { - background-color: transparent; -} -.panel-group .panel-danger > .panel-heading .panel-title > a, -.panel-group .panel-danger > .panel-heading .panel-title > a:hover, -.panel-group .panel-danger > .panel-heading .panel-title > a:focus { - color: #d9534f; -} -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed { - background-color: #d9534f; -} -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-danger > .panel-heading .panel-title > a.collapsed:focus { - background-color: #d43f3a; -} -.panel-group .panel-danger + .panel { - border-color: #df706c; -} -.panel-group .panel-info > .panel-heading { - background-color: transparent; -} -.panel-group .panel-info > .panel-heading .panel-title > a, -.panel-group .panel-info > .panel-heading .panel-title > a:hover, -.panel-group .panel-info > .panel-heading .panel-title > a:focus { - color: #5bc0de; -} -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed { - background-color: #5bc0de; -} -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-info > .panel-heading .panel-title > a.collapsed:focus { - background-color: #46b8da; -} -.panel-group .panel-info + .panel { - border-color: #79cbe4; -} -.panel-group .panel-inverse > .panel-heading { - background-color: transparent; -} -.panel-group .panel-inverse > .panel-heading .panel-title > a, -.panel-group .panel-inverse > .panel-heading .panel-title > a:hover, -.panel-group .panel-inverse > .panel-heading .panel-title > a:focus { - color: #505b72; -} -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed { - background-color: #505b72; -} -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed:hover, -.panel-group .panel-inverse > .panel-heading .panel-title > a.collapsed:focus { - background-color: #464f63; -} -.panel-group .panel-inverse + .panel { - border-color: #5f6b87; -} -/***** PROGRESS BARS *****/ -.progress { - -webkit-box-shadow: none; - box-shadow: none; -} -.progress-bar { - -webkit-box-shadow: none; - box-shadow: none; -} -/***** POPOVER *****/ -.popover { - padding: 0; -} -.popover-title { - border-bottom: 0; - padding: 15px 15px 0; - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -} -.popover-content { - padding: 15px; - line-height: 20px; -} -/***** NAV *****/ -@media (max-width: 480px) { - .nav > li > a { - padding-left: 15px; - padding-right: 15px; - } -} -.nav-stacked > li { - font-weight: 500; -} -.nav-stacked > li.active > a, -.nav-stacked > li.active > a:hover, -.nav-stacked > li.active > a:focus { - background-color: #2f2f2f; -} -/***** NAVBAR *****/ -.navbar { - background-color: #fff; - border-radius: 2px; -} -.navbar-brand { - padding: 12px 12px; -} -.navbar-brand h3 { - margin: 0; - color: #259dab; -} -.navbar-nav > li > a { - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 700; - color: #818da7; - padding-left: 15px; - padding-right: 15px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -@media (min-width: 768px) { - .navbar-nav > li > a { - padding-left: 25px; - padding-right: 25px; - } -} -.navbar-nav > li > a:hover, -.navbar-nav > li > a:focus { - color: #505b72; - background-color: transparent; -} -.navbar-nav > li.active > a { - color: #259dab; -} -.navbar-inverse { - background-color: #262b36; - border-color: transparent; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: transparent; -} -.navbar-inverse .navbar-collapse { - -webkit-box-shadow: none; - box-shadow: none; -} -.navbar-inverse .navbar-toggle { - border-color: transparent; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: transparent; - color: #fff; -} -.navbar-inverse .navbar-nav > li > a { - color: #657390; -} -.navbar-inverse .navbar-nav > li.active > a, -.navbar-inverse .navbar-nav > li.active > a:hover, -.navbar-inverse .navbar-nav > li.active > a:focus { - color: #259dab; - background-color: transparent; -} -/***** TABS *****/ -.nav-tabs { - /*background-color: #9fa8bc;*/ - background-color: rgba(103, 128, 159, 0.8); - border-bottom: 0; - border-top-right-radius: 0px; - border-top-left-radius: 0px; -} -.nav-tabs > li { - margin: 0; -} -.nav-tabs > li > a { - /*color: rgba(255, 255, 255, 0.8);*/ - color: #fff !important; - text-transform: uppercase; - letter-spacing: .2px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 700; - font-size: 12px; - margin: 0; - border: 0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-tabs > li > a:hover, -.nav-tabs > li > a:focus { - color: #fff; - background-color: #909bb1; - border: 0; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - border: 0; - border-radius: 0; - background-color: #fff; - color: #4daf7c !important; -} -.nav-tabs > li.active:first-child > a { - border-top-left-radius: 0px; -} -.nav-tabs.nav-justified > li > a { - border: 0; -} -.nav-tabs.nav-justified > .active:last-child > a { - border-top-right-radius: 0px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 0; -} -.tab-pane { - /*padding: 20px;*/ - background-color: #fff; - border-bottom-right-radius: 0px; - border-bottom-left-radius: 0px; -} -/***** TABLES *****/ -.table { - border-collapse: separate; - border-radius: 2px; -} -.table > thead > tr > th, -.table > tfoot > tr > th { - padding-top: 11px; - padding-bottom: 11px; - vertical-align: bottom; - border-bottom: 0; - text-transform: uppercase; - letter-spacing: .5px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - background-color: #d8dce3; - color: #3b4354; - font-size: 12px; -} -.table > thead > tr:first-child { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.table > thead > tr:first-child > th:first-child { - border-top-left-radius: 0px; -} -.table > thead > tr:first-child > th:last-child { - border-top-right-radius: 0px; -} -.table > tfoot > tr:last-child { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.table > tfoot > tr:last-child > th:first-child { - border-bottom-left-radius: 2px; -} -.table > tfoot > tr:last-child > th:last-child { - border-bottom-right-radius: 2px; -} -.table > tbody > tr:last-child > th:first-child, -.table > tbody > tr:last-child > td:first-child { - border-bottom-left-radius: 2px; -} -.table > tbody > tr:last-child > th:last-child, -.table > tbody > tr:last-child > td:last-child { - border-bottom-right-radius: 2px; -} -.table > tfoot + tbody > tr:last-child > th:first-child, -.table > tfoot + tbody > tr:last-child > td:first-child { - border-bottom-left-radius: 0; -} -.table > tfoot + tbody > tr:last-child > th:last-child, -.table > tfoot + tbody > tr:last-child > td:last-child { - border-bottom-right-radius: 0; -} -.table > thead > tr > th .ckbox, -.table > tbody > tr > th .ckbox, -.table > tfoot > tr > th .ckbox, -.table > thead > tr > td .ckbox, -.table > tbody > tr > td .ckbox, -.table > tfoot > tr > td .ckbox { - margin: 0; - display: inline-block; -} -.table > thead > tr > th .ckbox span:before, -.table > tbody > tr > th .ckbox span:before, -.table > tfoot > tr > th .ckbox span:before, -.table > thead > tr > td .ckbox span:before, -.table > tbody > tr > td .ckbox span:before, -.table > tfoot > tr > td .ckbox span:before { - border-color: transparent; -} -.table > thead > tr > th .ckbox input, -.table > tbody > tr > th .ckbox input, -.table > tfoot > tr > th .ckbox input, -.table > thead > tr > td .ckbox input, -.table > tbody > tr > td .ckbox input, -.table > tfoot > tr > td .ckbox input { - margin-right: 0; -} -.table > thead > tr > th .ckbox input:checked + span:before, -.table > tbody > tr > th .ckbox input:checked + span:before, -.table > tfoot > tr > th .ckbox input:checked + span:before, -.table > thead > tr > td .ckbox input:checked + span:before, -.table > tbody > tr > td .ckbox input:checked + span:before, -.table > tfoot > tr > td .ckbox input:checked + span:before { - border-color: transparent; -} -.table > thead > tr > th .ckbox input:checked + span:after, -.table > tbody > tr > th .ckbox input:checked + span:after, -.table > tfoot > tr > th .ckbox input:checked + span:after, -.table > thead > tr > td .ckbox input:checked + span:after, -.table > tbody > tr > td .ckbox input:checked + span:after, -.table > tfoot > tr > td .ckbox input:checked + span:after { - display: block; -} -.table-bordered { - border: 0; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border-bottom: 0; - border-right: 0; -} -.table-bordered > thead > tr > th:first-child, -.table-bordered > tbody > tr > th:first-child, -.table-bordered > tfoot > tr > th:first-child, -.table-bordered > thead > tr > td:first-child, -.table-bordered > tbody > tr > td:first-child, -.table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.table-bordered > thead > tr:first-child > th { - border-top: 0; -} -/***** TYPE *****/ -.text-success { - color: #4daf7c; -} -a.text-success:hover, -a.text-success:focus { - color: #03a678; -} -.text-info { - color: #5bc0de; -} -a.text-info:hover, -a.text-info:focus { - color: #31b0d5; -} -.text-warning { - color: #e6ad5c; -} -a.text-warning:hover, -a.text-warning:focus { - color: #df9730; -} -.text-danger { - color: #d9534f !important; -} -a.text-danger:hover, -a.text-danger:focus { - color: #c9302c; -} -.well { - border: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.close { - font-weight: 500; -} -/***** MODAL *****/ -.modal { - z-index: 2050; -} -.modal.in .modal-dialog { - transform: translate(-50%, -50%); -} -.modal-dialog { - position: absolute; - top: 50%; - left: 50%; - margin: 0; - transform: translate(-50%, -50%); -} -/***** SELECT2 *****/ -.select2-results__option { - padding: 0px 8px; - border-radius: 2px; - margin-bottom: 1px; - font-size: 12px; -} -.select2-container--default .select2-selection--single { - background-color: #fcfcfd; - border-color: #bdc3d1; - border-radius: 2px; - height: 28px; - outline: none; -} -.select2-container--default .select2-selection--single .select2-selection__rendered { - color: #262b36; - line-height: 28px; - padding-left: 12px; -} -.select2-container--default .select2-selection--single .select2-selection__placeholder { - color: #9fa8bc; -} -.select2-container--default .select2-selection--single .select2-selection__arrow { - width: 30px; - height: 28px; - line-height: 28px; -} -.select2-container--default .select2-selection--multiple { - background-color: #fcfcfd; - border-color: #bdc3d1; - border-radius: 2px; - min-height: 28px; - outline: none; -} -.select2-container--default .select2-selection--multiple .select2-selection__rendered { - padding: 0 4px; -} -.select2-container--default .select2-selection--multiple .select2-selection__choice { - margin-top: 4px; - margin-right: 4px; - padding: 4px 10px 4px 5px; - border-color: transparent; - border-radius: 2px; - background-color: #259dab; - color: #fff; -} -.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - color: #fff; - margin-right: 6px; - opacity: .75; - font-size: 12px; -} -.select2-container--default.select2-container--focus .select2-selection--multiple { - border-color: #9fa8bc; -} -.select2-container--default .select2-search--dropdown .select2-search__field { - border-color: #9fa8bc; - border-radius: 2px; -} -.select2-container--default .select2-results__option[aria-selected="true"] { - background-color: #e7e9ee; -} -.select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: #259dab; -} -.select2-container--default .select2-results > .select2-results__options { - margin: 4px; -} -.select2-container--default .select2-search--inline .select2-search__field { - margin-top: 4px; - line-height: 25px; - padding-left: 7px; -} -.select2-container--default.select2-container--disabled .select2-selection--single { - background-color: #e7e9ee; -} -.select2-container--open .select2-selection--single, -.select2-container--open .select2-selection--multiple { - background-color: #fff; - border-color: #9fa8bc; -} -.select2-container--open .select2-dropdown--above { - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.select2-container--open .select2-dropdown--below { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.select2-dropdown { - border-color: #9fa8bc; - z-index: 200; -} -.select2-search--dropdown { - padding-bottom: 0; -} -.has-error .select2-selection--single, -.has-error .select2-selection--multiple { - border-color: #d9534f; -} -/***** TOGGLES *****/ -.toggle-wrapper { - width: 100px; - display: inline-block; - margin-right: 5px; -} -.toggle-slide .toggle-on, -.toggle-slide .toggle-off, -.toggle-slide .toggle-slide .toggle-blob { - text-align: center; -} -.toggle-light .toggle-slide { - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-light .toggle-blob { - background-color: #fff; - background-image: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-light .toggle-blob:hover, -.toggle-light .toggle-blob:focus { - background-color: #fff; - background-image: none; -} -.toggle-light .toggle-on, -.toggle-light .toggle-off { - font-size: 11px; - font-weight: bold; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-light .toggle-on { - background-color: #d0d4e7; - text-indent: -5px !important; -} -.toggle-light .toggle-on + .toggle-blob { - border: 3px solid #d0d4e7; -} -.toggle-light .toggle-on.active { - background-color: #262b36; -} -.toggle-light .toggle-on.active + .toggle-blob { - border: 3px solid #262b36; -} -.toggle-light .toggle-off { - color: #fff; - background-color: #d0d4e7; - background-image: none; - text-indent: 5px !important; -} -.toggle-light.primary .toggle-on.active { - background-color: #2574ab; -} -.toggle-light.primary .toggle-on.active + .toggle-blob { - border: 3px solid #2574ab; -} -.toggle-light.success .toggle-on.active { - background-color: #03a678; -} -.toggle-light.success .toggle-on.active + .toggle-blob { - border: 3px solid #03a678; -} -.toggle-light.warning .toggle-on.active { - background-color: #e6ad5c; -} -.toggle-light.warning .toggle-on.active + .toggle-blob { - border: 3px solid #e6ad5c; -} -.toggle-light.danger .toggle-on.active { - background-color: #d9534f; -} -.toggle-light.danger .toggle-on.active + .toggle-blob { - border: 3px solid #d9534f; -} -.toggle-light.info .toggle-on.active { - background-color: #5bc0de; -} -.toggle-light.info .toggle-on.active + .toggle-blob { - border: 3px solid #5bc0de; -} -.toggle-modern .toggle-slide { - background: none; - text-shadow: none; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-modern .toggle-blob { - border-radius: 0px; - background-color: #fff; - background-image: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-modern .toggle-blob:hover, -.toggle-modern .toggle-blob:focus { - background-color: #fff; - background-image: none; -} -.toggle-modern .toggle-on, -.toggle-modern .toggle-off { - text-shadow: none; - font-weight: normal; - -webkit-box-shadow: none; - box-shadow: none; -} -.toggle-modern .toggle-on, -.toggle-modern .toggle-on.active { - background-color: #262b36; - background-image: none; -} -.toggle-modern .toggle-on { - background-color: #d0d4e7; -} -.toggle-modern .toggle-on + .toggle-blob { - border: 3px solid #d0d4e7; -} -.toggle-modern .toggle-on.active { - /*background-color: #262b36;*/ - background-color: #2a2a2a; -} -.toggle-modern .toggle-on.active + .toggle-blob { - border: 3px solid #262b36; -} -.toggle-modern .toggle-off, -.toggle-modern .toggle-off.active { - /*color: #fff; - background-color: #d0d4e7;*/ - color: #666; - background-color: #d8dce3; - background-image: none; - text-shadow: none; - text-indent: 8px !important; -} -.toggle-modern.primary .toggle-on.active { - background-color: #2574ab; -} -.toggle-modern.primary .toggle-on.active + .toggle-blob { - border: 3px solid #2574ab; -} -.toggle-modern.success .toggle-on.active { - background-color: #03a678; -} -.toggle-modern.success .toggle-on.active + .toggle-blob { - border: 3px solid #03a678; -} -.toggle-modern.warning .toggle-on.active { - background-color: #e6ad5c; -} -.toggle-modern.warning .toggle-on.active + .toggle-blob { - border: 3px solid #e6ad5c; -} -.toggle-modern.danger .toggle-on.active { - background-color: #d9534f; -} -.toggle-modern.danger .toggle-on.active + .toggle-blob { - border: 3px solid #d9534f; -} -.toggle-modern.info .toggle-on.active { - background-color: #5bc0de; -} -.toggle-modern.info .toggle-on.active + .toggle-blob { - border: 3px solid #5bc0de; -} -/***** DATEPICKER *****/ -.ui-datepicker { - background-color: #fff; - border: 1px solid #9fa8bc; - font-family: inherit; - font-size: inherit; - padding: 10px; - margin: 1px 0 0; - border-radius: 2px; - width: auto !important; -} -.ui-datepicker .ui-datepicker-header { - font-weight: 700; - text-transform: uppercase; - color: #696c74; - padding: 0 0 5px; - letter-spacing: 1px; - border: 0; - background-color: transparent; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next, -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev { - color: #dee1e7; - top: 1px; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next:before, -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before { - font-family: 'FontAwesome'; - position: absolute; - top: 2px; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next, -.ui-datepicker .ui-datepicker-header .ui-datepicker-next:before { - right: 0; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next:before { - content: '\f054'; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev, -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before { - left: 0; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev:before { - content: '\f053'; -} -.ui-datepicker .ui-datepicker-header .ui-datepicker-next-hover, -.ui-datepicker .ui-datepicker-header .ui-datepicker-prev-hover { - color: #c0c7d2; - cursor: pointer; - top: 1px; - border: 0; - background-color: transparent; -} -.ui-datepicker .ui-datepicker-title { - color: #259dab; -} -.ui-datepicker .ui-datepicker-calendar { - margin: 0; - background-color: transparent; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.ui-datepicker .ui-datepicker-calendar th { - text-transform: uppercase; - font-size: 11px; - font-weight: 700; - letter-spacing: 1px; - padding: 6px 10px; - color: #82858e; -} -@media (max-width: 320px) { - .ui-datepicker .ui-datepicker-calendar th { - padding: 4px 0; - letter-spacing: normal; - } -} -.ui-datepicker .ui-datepicker-calendar td { - border: 1px solid #fff; - padding: 0; - background-color: #fcfcfd; -} -.ui-datepicker .ui-datepicker-calendar td:last-child { - border-right: 0; -} -.ui-datepicker .ui-datepicker-calendar td span, -.ui-datepicker .ui-datepicker-calendar td a { - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; - padding: 5px 8px; - background-color: #f6f7f8; - color: #696c74; - padding: 6px 10px; - display: block; - font-weight: 400; - font-size: 12px; - border: 0; - border-radius: 1px; -} -.ui-datepicker .ui-datepicker-calendar td a:hover { - background-color: #d8dce3; - color: #696c74; -} -.ui-datepicker .ui-datepicker-calendar .ui-datepicker-today a { - background-color: #d8dce3; - color: #696c74; -} -.ui-datepicker-multi .ui-datepicker-group { - padding-right: 15px; - width: auto; -} -.ui-datepicker-multi .ui-datepicker-group table { - margin: 0; -} -.ui-datepicker-multi .ui-datepicker-group-last { - padding-right: 0; -} -.ui-datepicker-inline { - max-width: 300px; - border-color: #bdc3d1; -} -/***** TIME PICKER *****/ -.ui-timepicker-wrapper { - min-width: 100px; - margin-top: -1px; - border-color: #9fa8bc; - z-index: 100; - -webkit-box-shadow: none; - box-shadow: none; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.ui-timepicker-list { - margin: 3px; -} -.ui-timepicker-list li { - padding: 5px 7px; - border-radius: 2px; -} -.ui-timepicker-list li:hover, -.ui-timepicker-list li:focus { - background-color: #259dab; -} -/***** DROPZONE *****/ -.dropzone { - border-style: dashed; - border-radius: 2px; - border-color: #d0d4e7; - background-color: #f6f7f8; -} -.dropzone .dz-message { - font-size: 14px; - font-weight: 700; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - text-transform: uppercase; - color: #696c74; - margin-top: 45px; - opacity: .3; -} -.dropzone .dz-preview .dz-image { - border-radius: 2px; - background-color: #d8dce3; -} -.dropzone .dz-preview:hover .dz-image img { - -webkit-filter: none; - filter: none; - display: none; -} -.dropzone .dz-preview .dz-details, -.dropzone .dz-preview .dz-details .dz-size { - font-size: 12px; -} -.dropzone .dz-preview .dz-details .dz-filename:hover span { - border-color: transparent; - border-radius: 2px; -} -.dropzone .dz-preview .dz-error-message { - border-radius: 2px; - font-size: 12px; -} -/***** COLORPICKER *****/ -.colorpicker.dropdown-menu { - padding: 5px; - border-color: #66afe9; - -webkit-box-shadow: none; - box-shadow: none; -} -.colorpicker-lg .colorpicker-saturation { - width: 200px; - height: 200px; -} -.colorpicker-lg .colorpicker-hue, -.colorpicker-lg .colorpicker-alpha { - width: 30px; - height: 200px; -} -.colorpicker-lg .colorpicker-color, -.colorpicker-lg .colorpicker-color div { - height: 30px; -} -/***** JQUERY STEPS *****/ -.wizard { - margin-bottom: 20px; -} -.wizard > .content { - min-height: 180px; - background-color: #fff; - border-radius: 0; - margin: 0; -} -.wizard > .content > .body { - width: 100%; - height: 100%; - padding: 20px; -} -.wizard > .content > .body label.error { - display: inline; - margin: 3px 0 0; - font-size: 11px; - color: #d9534f; -} -.wizard > .content > .body .has-error .form-control { - border-color: #d9534f; -} -.wizard > .steps > ul > li { - display: table-cell; - width: 1%; - float: none; -} -.wizard > .steps > ul > li > a { - margin: 0; - border-radius: 0; - padding: 14px 25px; - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 700; - font-size: 12px; - background-color: #9fa8bc; - color: rgba(255, 255, 255, 0.8); - text-align: center; - letter-spacing: .2px; -} -.wizard > .steps > ul > li > a:hover, -.wizard > .steps > ul > li > a:focus { - color: #fff; - margin: 0; - border-radius: 0; - padding: 14px 25px; - background-color: #909bb1; -} -.wizard > .steps > ul > li:first-child > a { - border-top-left-radius: 2px; -} -.wizard > .steps > ul > li:last-child > a { - border-top-right-radius: 2px; -} -.wizard > .steps .number { - font-size: 12px; - margin-right: 5px; -} -.wizard > .steps .disabled a, -.wizard > .steps .disabled a:hover, -.wizard > .steps .disabled a:focus, -.wizard > .steps .disabled a:active { - background-color: #9fa8bc; - color: rgba(255, 255, 255, 0.8); -} -.wizard > .steps .done a { - background-color: #505b72; -} -.wizard > .steps .done a:hover, -.wizard > .steps .done a:focus, -.wizard > .steps .done a:active { - background-color: #464f63; -} -.wizard > .steps .current a, -.wizard > .steps .current a:hover, -.wizard > .steps .current a:focus, -.wizard > .steps .current a:active { - background-color: #fff; - color: #5b6781; -} -.wizard > .actions { - padding: 15px 15px 10px; - background-color: #f6f7f8; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.wizard > .actions a { - padding: 10px 12px; - border-radius: 2px; - background-color: #2574ab; - min-width: 100px; - height: 38px; - text-align: center; - letter-spacing: .5px; -} -.wizard > .actions a:hover, -.wizard > .actions a:focus { - border-radius: 2px; - padding: 10px 12px; - background-color: #206696; -} -.wizard > .actions a:active { - background-color: #1e5d89; -} -.wizard > .actions > ul { - margin: 0; - padding: 0; -} -.wizard > .actions > ul > li { - display: inline-block; - margin-right: 0; -} -.wizard > .actions > ul > li:last-child a { - background-color: #259dab; -} -.wizard > .actions > ul > li:last-child a:hover, -.wizard > .actions > ul > li:last-child a:focus { - background-color: #208a96; -} -.wizard > .actions .disabled a, -.wizard > .actions .disabled a:hover, -.wizard > .actions .disabled a:focus { - background-color: #d8dce3; - color: #c0c7d2; -} -.wizard.vertical { - background-color: #9fa8bc; - border-radius: 2px; -} -.wizard.vertical .content { - margin: 0; - width: 70%; - min-height: 250px; -} -@media (max-width: 639px) { - .wizard.vertical .content { - width: 100%; - } -} -.wizard.vertical > .steps > ul > li { - display: block; -} -.wizard.vertical > .steps > ul > li > a { - text-align: left; -} -@media (max-width: 639px) { - .wizard.vertical > .steps { - width: 100%; - } -} -.wizard.vertical .actions { - margin: 0; - width: 100%; -} -.wizard.wizard-style2 > .steps { - counter-reset: ordered; -} -.wizard.wizard-style2 > .steps > ul > li { - position: relative; -} -@media (max-width: 480px) { - .wizard.wizard-style2 > .steps > ul > li { - display: block; - float: none; - width: auto; - } -} -.wizard.wizard-style2 > .steps > ul > li > a { - text-align: left; - padding-left: 60px; - padding-right: 0; -} -.wizard.wizard-style2 > .steps > ul > li > a:before { - content: counters(ordered, ".", decimal); - counter-increment: ordered; - position: absolute; - top: 50%; - left: 15px; - width: 36px; - height: 36px; - margin-top: -18px; - background-color: rgba(255, 255, 255, 0.8); - color: #9fa8bc; - border-radius: 100px; - font-size: 18px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - text-align: center; - padding-top: 8px; - line-height: 20px; -} -.wizard.wizard-style2 > .steps > ul > li > a:after { - border-left: 31px solid #9fa8bc; - border-top: 31px solid transparent; - border-bottom: 31px solid transparent; - content: ""; - display: inline-block; - position: absolute; - right: -31px; - top: 50%; - margin-top: -31px; - z-index: 50; -} -.wizard.wizard-style2 > .steps > ul > li > a:hover:after, -.wizard.wizard-style2 > .steps > ul > li > a:focus:after { - border-left-color: #909bb1; -} -.wizard.wizard-style2 > .steps > ul > li > a > small { - display: block; - text-transform: none; - font-weight: normal; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; -} -.wizard.wizard-style2 > .steps > ul > li + li > a { - padding-left: 85px; -} -@media (max-width: 480px) { - .wizard.wizard-style2 > .steps > ul > li + li > a { - padding-left: 60px; - } -} -.wizard.wizard-style2 > .steps > ul > li + li > a:before { - left: 40px; -} -@media (max-width: 639px) { - .wizard.wizard-style2 > .steps > ul > li + li > a:before { - left: 15px; - } -} -.wizard.wizard-style2 > .steps > ul > li:last-child > a:after { - display: none; -} -.wizard.wizard-style2 > .steps .number { - display: none; -} -.wizard.wizard-style2 > .steps .done a:before { - background-color: #fff; - color: #505b72; -} -.wizard.wizard-style2 > .steps .done a:after { - border-left-color: #505b72; -} -.wizard.wizard-style2 > .steps .done a:hover:after, -.wizard.wizard-style2 > .steps .done a:focus:after { - border-left-color: #464f63; -} -.wizard.wizard-style2 > .steps .current a, -.wizard.wizard-style2 > .steps .current a:hover, -.wizard.wizard-style2 > .steps .current a:focus { - background-color: #fff; - color: #259dab; -} -.wizard.wizard-style2 > .steps .current a > small, -.wizard.wizard-style2 > .steps .current a:hover > small, -.wizard.wizard-style2 > .steps .current a:focus > small { - color: #696c74; -} -.wizard.wizard-style2 > .steps .current a:before, -.wizard.wizard-style2 > .steps .current a:hover:before, -.wizard.wizard-style2 > .steps .current a:focus:before { - background-color: #259dab; - color: #fff; -} -.wizard.wizard-style2 > .steps .current a:after, -.wizard.wizard-style2 > .steps .current a:hover:after, -.wizard.wizard-style2 > .steps .current a:focus:after { - border-left-color: #fff; -} -.wizard.wizard-style2 > .steps .disabled a:after, -.wizard.wizard-style2 > .steps .disabled a:hover:after, -.wizard.wizard-style2 > .steps .disabled a:focus:after { - border-left-color: #9fa8bc; -} -.wizard.wizard-style2.vertical > .steps > ul > li + li > a { - padding-left: 60px; -} -.wizard.wizard-style2.vertical > .steps > ul > li + li > a:before { - left: 15px; -} -.wizard.wizard-style2.vertical > .steps > ul > li + li > a:after { - display: none; -} -.wizard.wizard-style2.vertical > .steps > ul > li:last-child > a { - border-top-right-radius: 0; -} -.wizard.wizard-style2.vertical > .steps .current a:after, -.wizard.wizard-style2.vertical > .steps .done a:after { - display: none; -} -/***** WYSIHTML5 *****/ -ul.wysihtml5-toolbar a.btn.wysihtml5-command-active { - background-color: #dbdfe6; - -webkit-box-shadow: none; - box-shadow: none; -} -.note-editor { - border-color: #bdc3d1; - border-radius: 2px; -} -.note-editor .note-toolbar { - border-bottom-color: #bdc3d1; -} -.note-editor .note-toolbar.btn-toolbar { - margin-left: 0; -} -.note-editor .note-statusbar .note-resizebar { - border-top-color: #bdc3d1; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -/***** JQUERY.GRITTER *****/ -.gritter-top, -.gritter-bottom { - display: none; -} -.gritter-item { - position: relative; - background-image: none; - background-color: rgba(17, 19, 24, 0.95); - border-radius: 2px; - padding: 15px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - line-height: 1.42857143; - color: rgba(255, 255, 255, 0.65); - z-index: 3000; -} -.gritter-item a:hover { - text-decoration: underline; -} -.gritter-title { - font-weight: 700; - text-shadow: none; - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - letter-spacing: .5px; - font-size: 12px; - color: #fff; -} -.gritter-close { - left: auto; - right: 3px; - background: none; -} -.gritter-close:before { - text-indent: 0; - content: '\f00d'; - position: absolute; - font-family: 'FontAwesome'; - top: 0; - right: 7px; - color: #fff; - font-size: 16px; - opacity: .3; -} -.gritter-item-wrapper.with-icon > .gritter-item { - padding-left: 60px; - position: relative; -} -.gritter-item-wrapper.with-icon > .gritter-item:before { - color: #fff; - position: absolute; - top: 15px; - left: 15px; - font-size: 28px; - font-family: 'FontAwesome'; -} -.gritter-item-wrapper.primary > .gritter-item { - background-color: rgba(37, 116, 171, 0.9); -} -.gritter-item-wrapper.success > .gritter-item { - background-color: rgba(77, 175, 124, 1); -} -.gritter-item-wrapper.warning > .gritter-item { - background-color: rgba(230, 173, 92, 0.9); -} -.gritter-item-wrapper.danger > .gritter-item { - background-color: rgba(217, 83, 79, 1); -} -.gritter-item-wrapper.info > .gritter-item { - background-color: rgba(91, 192, 222, 0.9); -} -.gritter-item-wrapper.with-icon.send-o > .gritter-item:before { - content: '\f1d9'; -} -.gritter-item-wrapper.with-icon.question-circle > .gritter-item:before { - content: '\f059'; -} -.gritter-item-wrapper.with-icon.check-circle > .gritter-item:before { - content: '\f058'; -} -.gritter-item-wrapper.with-icon.exclamation-circle > .gritter-item:before { - content: '\f06a'; -} -.gritter-item-wrapper.with-icon.times-circle > .gritter-item:before { - content: '\f057'; -} -/***** JQUERY UI SLIDER *****/ -.ui-slider { - background-color: #d8dce3; - border-radius: 50px; - border: 0; -} -.ui-slider .ui-slider-handle { - background-color: #fff; - border: 2px solid #909bb1; - width: 18px; - height: 18px; - border-radius: 50px; - top: -6px; - cursor: pointer; - outline: none; -} -.ui-slider .ui-slider-handle:after { - content: ''; - position: absolute; - width: 8px; - height: 8px; - background-color: #909bb1; - top: 3px; - left: 3px; - border-radius: 50px; -} -.ui-slider .ui-slider-range { - border-radius: 50px; - background-color: #909bb1; -} -.ui-slider-horizontal { - height: 6px; - margin: 15px 0; -} -.slider-primary .ui-slider-range { - background-color: #2574ab; -} -.slider-primary .ui-slider-handle { - border-color: #2574ab; -} -.slider-primary .ui-slider-handle:after { - background-color: #2574ab; -} -.slider-success .ui-slider-range { - background-color: #4daf7c; -} -.slider-success .ui-slider-handle { - border-color: #4daf7c; -} -.slider-success .ui-slider-handle:after { - background-color: #4daf7c; -} -.slider-warning .ui-slider-range { - background-color: #e6ad5c; -} -.slider-warning .ui-slider-handle { - border-color: #e6ad5c; -} -.slider-warning .ui-slider-handle:after { - background-color: #e6ad5c; -} -.slider-danger .ui-slider-range { - background-color: #d9534f; -} -.slider-danger .ui-slider-handle { - border-color: #d9534f; -} -.slider-danger .ui-slider-handle:after { - background-color: #d9534f; -} -.slider-info .ui-slider-range { - background-color: #5bc0de; -} -.slider-info .ui-slider-handle { - border-color: #5bc0de; -} -.slider-info .ui-slider-handle:after { - background-color: #5bc0de; -} -.ui-slider-vertical { - width: 6px; - display: inline-block; -} -.ui-slider-vertical .ui-slider-handle { - top: auto; - left: -6px; -} -/***** DATA TABLES *****/ -#dataTable1_length { - font-size: 12px; - margin-top: 10px; -} -#dataTable1_filter { - font-size: 12px; - margin-top: 18px; -} -#dataTable1_info { - font-size: 11px; - margin: 17px 0; -} -#dataTable1_paginate { - /*display: none;*/ -} -.table.dataTable { - margin-bottom: -2px !important; - margin-top: 0 !important; -} -.table.dataTable thead .sorting:after, -.table.dataTable thead .sorting_asc:after, -.table.dataTable thead .sorting_desc:after { - top: 12px; - font-size: 12px; - font-weight: normal; -} -.table.dataTable td.details-control { - cursor: pointer; -} -.table.dataTable td.details-control:before { - font-family: 'FontAwesome'; - content: '\f105'; - display: block; - text-align: center; -} -.table.dataTable tr.shown td.details-control:before { - content: '\f107'; -} -.table.dataTable tr.shown + tr > td { - padding: 20px; - background-color: #edeff2; -} -.table.dataTable tr.shown + tr > td h4 { - margin: 0 0 15px; -} -.table.dataTable tr.shown + tr > td h4 > small { - display: block; - font-size: 12px; - text-transform: none; - margin-top: 5px; - color: #82858e; -} -.dataTables_length label { - margin-bottom: 20px; -} -.dataTables_filter label { - margin-bottom: 20px; -} -.dataTables_filter .form-control { - font-size: inherit; - height: 38px; - padding: 10px 12px; -} -.dataTables_paginate .pagination > .paginate_button > a { - padding: 5px 7px 4px; -} -.dataTables_paginate .pagination > .paginate_button.next, -.dataTables_paginate .pagination > .paginate_button.previous { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-size: 12px; - text-transform: uppercase; -} -.dataTables_paginate .pagination > .paginate_button.next > a, -.dataTables_paginate .pagination > .paginate_button.previous > a { - padding: 5px 7px 4px; -} -/***** SUMMERNOTE *****/ -.note-toolbar { - padding-left: 0; -} -/***** MAP *****/ -.gm-style-mtc > div { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -/***** MORRIS CHART *****/ -.morris-hover.morris-default-style { - border: 0; - border-radius: 2px; -} -@media (min-width: 992px) { - body { - overflow: visible !important; - } -} -a:hover, -a:focus { - outline: none; -} -code { - background-color: transparent; - padding: 0; -} -p code { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - letter-spacing: 0.2px; -} -label { - font-weight: normal; -} -hr { - margin: 20px 0; - border-color: #dbdfe6; -} -hr.darken { - border-color: #c3c9d5; -} -hr.hr15 { - margin: 15px 0 !important; -} -hr.fadeout { - border-color: #fff; - opacity: .1; -} -blockquote { - color: #464f63; - font-weight: 400; - font-size: 16px; - font-family: Georgia, "Times New Roman", Times, serif; -} -/* Header Panel */ -.headerpanel { - position: fixed; - top: 0; - left: 0; - right: 0; - height: 64px; - background-color: #292929; - z-index: 2000; -} -.headerpanel .logopanel { - position: absolute; - left: -280px; - width: 280px; - height: 64px; - padding: 6px 15px; - background-color: #222; - text-align: center; -} -.headerpanel .logopanel h2 { - margin: 0; - font-weight: 500; -} -.headerpanel .logopanel h2 > a { - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.headerpanel .logopanel h2 > a:hover { - color: #31c1d2; -} -@media (min-width: 992px) { - .headerpanel .logopanel { - left: 0 !important; - } -} -.headerbar { - position: relative; - padding-left: 64px; -} -@media (min-width: 992px) { - .headerbar { - margin-left: 280px; - left: 0 !important; - } -} -.menutoggle { - position: absolute; - width: 64px; - height: 64px; - top: 0; - left: 0; - font-size: 21px; - cursor: pointer; - color: #778395; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.menutoggle i { - position: absolute; - top: 50%; - left: 50%; - margin-top: -11px; - margin-left: -10px; -} -.menutoggle:hover, -.menutoggle:focus { - color: #9fa8bc; -} -.searchpanel { - position: absolute; - top: 0; - left: 64px; - width: 230px; -} -@media (max-width: 480px) { - .searchpanel { - display: none; - } -} -.searchpanel .input-group { - margin-top: 12px; -} -.searchpanel .input-group .form-control { - border: 0; - color: #fff; - background-color: #3b4354; -} -.searchpanel .input-group .btn { - border: 0; - background-color: #3b4354; - font-size: 14px; - color: #fff; - padding-top: 7px; - line-height: normal; - padding-left: 15px; - padding-right: 17px; -} -.header-right { - float: right; - padding-right: 20px; -} -.headermenu { - list-style: none; - margin: 0; - padding: 0; -} -.headermenu .dropdown-toggle:hover, -.headermenu .dropdown-toggle:focus, -.headermenu .dropdown-toggle:active, -.headermenu .dropdown-toggle.active, -.headermenu .open .dropdown-toggle.dropdown-toggle { - background-color: #2c323f; -} -.headermenu > li { - display: inline-block; - float: left; - position: relative; -} -.headermenu > li .btn { - border-radius: 0; - background-color: transparent; - color: #fff; - height: 64px; - border: 0; - padding-left: 5px; - padding-right: 5px; -} -.headermenu > li .btn:hover, -.headermenu > li .btn:focus { - color: #9fa8bc; -} -.headermenu > li .btn:active { - -webkit-box-shadow: none; - box-shadow: none; -} -.headermenu > li .alert-notice .fa { - position: relative; -} -.headermenu > li .alert-notice .fa:after { - position: absolute; - content: ''; - top: -2px; - right: -2px; - width: 10px; - height: 10px; - background-color: #ff564e; - border-radius: 50px; - opacity: .75; -} -.headermenu > li > .btn-group { - margin-bottom: 0; -} -.headermenu > li > .btn-group > .btn-notice { - font-size: 21px; -} -.headermenu > li > .btn-group > .btn-notice + .dropdown-menu { - min-width: 350px; -} -@media (max-width: 480px) { - .headermenu > li > .btn-group > .btn-notice + .dropdown-menu { - min-width: 0; - position: fixed; - top: 64px; - right: 0; - left: 0; - bottom: 0; - border: 0; - overflow: auto; - } - .headermenu > li > .btn-group > .btn-notice + .dropdown-menu:after { - display: none; - } -} -.headermenu > li > .btn-group > .btn-logged { - padding: 5px 12px 3px; - font-size: 14px; - border: 0; -} -.headermenu > li > .btn-group > .btn-logged img { - vertical-align: middle; - margin-right: 5px; - width: 20px; - border-radius: 50px; -} -.headermenu > li > .btn-group > .btn-logged .caret { - margin-left: 5px; - margin-top: -2px; -} -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu { - min-width: 180px; -} -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu > li > a { - padding: 8px 10px; - color: #ccc; -} -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu > li > a:hover, -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu > li > a:focus { - background-color: #262b36; - color: #efefef; -} -.headermenu > li > .btn-group > .btn-logged + .dropdown-menu > li > a > i { - width: 16px; - margin-right: 5px; -} -.headermenu > li .btn-chat { - font-size: 21px; -} -.headermenu .dropdown-menu { - border-color: rgba(38, 43, 54, 0.1); - border-top: 0; - margin-top: 0; - margin-right: -8px; - padding: 5px; - background-color: #222; - border-top-right-radius: 0; - border-top-left-radius: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - -webkit-box-shadow: none; - box-shadow: none; -} -.headermenu .dropdown-menu:after { - border-bottom: 8px solid #222; - border-left: 8px solid transparent; - border-right: 8px solid transparent; - content: ""; - display: inline-block; - right: 17px; - position: absolute; - top: -7px; -} -.headermenu .dropdown-menu .title { - text-transform: uppercase; - font-weight: bold; - font-size: 11px; - margin: 0 0 5px; - padding: 10px; - letter-spacing: .5px; -} -.headermenu .dropdown-menu > li > a { - font-size: 12px; - border-radius: 2px; -} -.headermenu .dropdown-menu .list-group { - margin-left: -5px; - margin-right: -5px; - margin-bottom: -5px; -} -.headermenu .dropdown-menu .list-group > .list-group-item { - border-left: 0; - border-right: 0; -} -.headermenu .dropdown-menu .list-group > .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.headermenu .dropdown-menu .list-group > .list-group-item:last-child { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - border-bottom: 0; -} -.headermenu .dm-notice { - padding: 5px 20px 10px; -} -@media (max-width: 480px) { - .headermenu .dm-notice { - padding: 0; - margin-right: 0; - } -} -.headermenu .dm-notice .nav-tabs { - background-color: transparent; -} -.headermenu .dm-notice .nav-tabs > li > a { - font-size: 12px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - text-transform: uppercase; - font-weight: bold; - letter-spacing: .5px; - border-radius: 0; - border-width: 0; - padding-left: 0; - padding-right: 0; - border-bottom: 1px solid #dbdfe6; - color: #3b4354; - cursor: pointer; -} -@media (max-width: 480px) { - .headermenu .dm-notice .nav-tabs > li > a { - font-size: 11px; - } -} -.headermenu .dm-notice .nav-tabs > li > a:hover, -.headermenu .dm-notice .nav-tabs > li > a:focus { - background-color: transparent; - color: #262b36; -} -.headermenu .dm-notice .nav-tabs > li.active > a, -.headermenu .dm-notice .nav-tabs > li.active > a:hover, -.headermenu .dm-notice .nav-tabs > li.active > a:focus { - color: #259dab; - border: 0; - border-bottom: 1px solid #259dab; - background-color: transparent; -} -@media (max-width: 767px) { - .headermenu .dm-notice .nav-tabs { - display: table; - } - .headermenu .dm-notice .nav-tabs > li { - display: table-cell; - } - .headermenu .dm-notice .nav-tabs > li > a { - margin: 0; - } -} -.headermenu .dm-notice .tab-pane { - padding: 20px 0 10px; -} -@media (max-width: 480px) { - .headermenu .dm-notice .tab-pane { - padding: 10px; - } -} -.headermenu .dm-notice .tab-pane .panel-title { - margin: 15px 0 0; - padding: 7px 0; - letter-spacing: .5px; - background-color: #dbdfe6; - color: #909bb1; - text-align: center; - border-radius: 2px; - font-size: 11px; -} -.headermenu .dm-notice .tab-pane .btn-more { - text-align: center; - display: block; - background-color: #259dab; - color: #fff; - padding: 6px 0; - border-radius: 2px; - letter-spacing: .5px; - margin-top: 10px; -} -.headermenu .dm-notice .tab-pane .btn-more:hover, -.headermenu .dm-notice .tab-pane .btn-more:focus { - background-color: #2395a3; -} -.headermenu .dm-notice .tab-pane .btn-more > i { - font-size: 14px; - line-height: 0; - margin-left: 3px; - vertical-align: middle; -} -.headermenu .dm-notice .list-group { - margin: 5px 0; -} -.headermenu .dm-notice .list-group .list-group-item { - padding-left: 0; - padding-right: 0; - border-color: #dbdfe6; -} -.headermenu .dm-notice .list-group .list-group-item h4, -.headermenu .dm-notice .list-group .list-group-item p { - margin: 0; - text-align: center; - text-transform: uppercase; - font-weight: 700; -} -.headermenu .dm-notice .list-group .list-group-item h4 { - color: #262b36; - font-size: 14px; -} -.headermenu .dm-notice .list-group .list-group-item p { - font-size: 11px; - letter-spacing: .5px; - color: #818da7; -} -.headermenu .dm-notice .list-group .list-group-item h5 { - margin: 0; - font-weight: 700; - font-size: 12px; -} -.headermenu .dm-notice .list-group .list-group-item small { - font-size: 11px; - display: block; - margin: 2px 0 0; -} -.headermenu .dm-notice .list-group .list-group-item:first-child { - border-top: 0; -} -.headermenu .dm-notice .list-group .list-group-item:last-child { - padding-bottom: 0; -} -.headermenu .dm-notice .notice-list { - margin: 0 0 20px; -} -.headermenu .dm-notice .notice-list .list-group-item h5 > a { - color: #464f63; - font-weight: 700; - font-size: 12px; -} -.headermenu .dm-notice .notice-list .list-group-item h5 > a:hover, -.headermenu .dm-notice .notice-list .list-group-item h5 > a:focus { - color: #262b36; -} -.headermenu .dm-notice .notice-list .list-group-item h5 + small { - color: #aeb6c6; - display: block; -} -.headermenu .dm-notice .notice-list .list-group-item span { - margin-top: 5px; - display: block; -} -.headermenu .dm-notice .notice-list .list-group-item .fa { - color: #818da7; - border: 1px solid #818da7; - padding: 9px; - vertical-align: middle; - font-size: 14px; - width: 34px; - height: 34px; - border-radius: 100px; - text-align: center; - opacity: .75; -} -.headermenu .dm-notice .notice-list .list-group-item:first-child { - padding-top: 0; -} -.headermenu .dm-notice .notice-list .list-group-item:last-child { - padding-bottom: 0; -} -.headermenu .dm-notice .notice-list .list-group-item.unread .fa { - color: #259dab; - border-color: #259dab; -} -.headermenu .dm-notice .notice-list .list-group-item.unread h5 > a { - color: #259dab; -} -.headermenu .dm-notice .notice-list .list-group-item.unread h5 > a:hover, -.headermenu .dm-notice .notice-list .list-group-item.unread h5 > a:focus { - color: #505b72; -} -.today-day { - margin: 0; - font-weight: 400; - color: #3b4354; -} -.today-date { - margin-top: 8px; - color: #5b6781; - font-weight: 500; -} -.today-weather { - margin: 20px 0 5px; - text-transform: uppercase; - font-weight: bold; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - color: #262b36; -} -.today-weather + p { - font-size: 11px; -} -.today-weather > i { - color: #657390; - margin-right: 5px; -} -/************ LEFT PANEL ***********/ -.leftpanel { - background-color: #2a2a2a; - width: 280px; - position: fixed; - top: 64px; - bottom: 0; - left: -280px; - z-index: 100; - overflow-y: auto; - overflow-x: hidden; -} -.leftpanel .tab-pane { - padding: 0; - background-color: transparent; -} -.leftpanel .media-list-contacts .media { - border-color: #eaecf0; -} -@media (min-width: 992px) { - .leftpanel { - left: 0 !important; - } -} -/***** LEFTPANEL PROFILE *****/ -.leftpanel-profile { - padding: 15px; - background-color: #3b4354; -} -.leftpanel-profile .media-object { - width: 48px; - padding: 3px; - border: 2px solid #657390; -} -.leftpanel-profile .media-left { - padding-right: 15px; -} -.leftpanel-profile .media-heading { - margin: 7px 0 2px; - color: rgba(255, 255, 255, 0.9); - font-weight: 500; - letter-spacing: 1px; - font-size: 14px; -} -.leftpanel-profile .media-heading > a { - color: rgba(255, 255, 255, 0.5); -} -.leftpanel-profile .media-heading > a:hover, -.leftpanel-profile .media-heading > a:focus { - cursor: pointer; - color: rgba(255, 255, 255, 0.7); -} -.leftpanel-profile .media-body { - color: rgba(255, 255, 255, 0.5); -} -.leftpanel-userinfo { - background-color: #464f63; - padding-top: 10px; - position: absolute; - left: 0; - right: 0; - z-index: 100; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.leftpanel-userinfo .sidebar-title { - margin-top: 0; -} -.leftpanel-userinfo address { - color: rgba(255, 255, 255, 0.9); - padding: 0 15px; - margin-bottom: 20px; -} -.leftpanel-userinfo .list-group-item { - border-left: 0; - border-right: 0; - border-color: #4c566c; - background-color: transparent; - color: rgba(255, 255, 255, 0.9); -} -.leftpanel-userinfo .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.leftpanel-userinfo .list-group-item:last-child { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.leftpanel-userinfo .list-group-item label { - margin: 0; - color: rgba(255, 255, 255, 0.4); -} -.leftpanel-userinfo .list-group-item:before, -.leftpanel-userinfo .list-group-item:after { - content: " "; - display: table; -} -.leftpanel-userinfo .list-group-item:after { - clear: both; -} -.leftpanel-userinfo .list-group-item:before, -.leftpanel-userinfo .list-group-item:after { - content: " "; - display: table; -} -.leftpanel-userinfo .list-group-item:after { - clear: both; -} -.leftpanel-userinfo .list-group-item .social-icons a { - color: rgba(255, 255, 255, 0.7); - margin-left: 5px; - font-size: 14px; - line-height: 0; -} -.leftpanel-userinfo .list-group-item .social-icons a > i { - line-height: 0; -} -.leftpanel-userinfo .list-group-item .social-icons a:hover, -.leftpanel-userinfo .list-group-item .social-icons a:focus { - color: #fff; -} -/***** LEFT NAVIGATION *****/ -.nav-quirk { - margin: 0 0 30px; - background-color: #2a2a2a; -} -.nav-quirk > li { - border-top: 1px solid #2f2f2f; - *text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; -} -.nav-quirk > li > a { - color: #909090; - padding: 12px 14px; - border-radius: 0; - font-weight: 300; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk > li > a .badge { - background-color: transparent; - border-radius: 3px; - color: #9fa8bc; - font-size: 10px; - font-weight: normal; - line-height: 1; - margin-right: 2px; - margin-top: 3px; - padding: 2px 6px 3px; - text-transform: none; -} -.badge.badge-service-running { - background: #3bc391 none repeat scroll 0 0; - border-radius: 50%; - color: #fff; - display: inline-block; - font-family: Open Sans; - height: 10px; - margin-right: 15px; - padding: 1px; - position: relative; - top: 18px; - width: 10px; - z-index: 99; -} -.badge.badge-service-disabled { - background: #eB4549 none repeat scroll 0 0; - border-radius: 50%; - color: #fff; - display: inline-block; - font-family: Open Sans; - height: 10px; - margin-right: 15px; - padding: 1px; - position: relative; - top: 18px; - width: 10px; - z-index: 99; -} - -.badge.badge-service-running-dot { - background-color: #3bc391; - border: 2px solid #3bc391; - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 50%; - display: inline-block; - height: 10px; - opacity: 0.8; - /*left: -15px;*/ - padding: 1px; - position: relative; - /*top: 18px;*/ - width: 10px; -} - -.badge.badge-service-running-pulse { - -webkit-animation: pulse 3s ease-out; - -moz-animation: pulse 3s ease-out; - animation: pulse 3s ease-out; - -webkit-animation-iteration-count: infinite; - -moz-animation-iteration-count: infinite; - animation-iteration-count: infinite; - background: transparent none repeat scroll 0 0; - border: 2px solid #3bc391; - border-radius: 20px; - display: inline-block; - height: 20px; - margin-left: -15px; - opacity: 0; - position: relative; - /*top: 14px;*/ - width: 20px; - z-index: 1; -} - -.badge.badge-service-disabled-dot { - background-color: #eB4549; - border: 2px solid #eB4549; - -webkit-border-radius: 20px; - -moz-border-radius: 20px; - border-radius: 50%; - display: inline-block; - height: 10px; - opacity: 0.8; - /*left: -15px;*/ - padding: 1px; - position: relative; - /*top: 18px;*/ - width: 10px; -} - -.badge.badge-service-disabled-pulse { - -webkit-animation: pulse 3s ease-out; - -moz-animation: pulse 3s ease-out; - animation: pulse 3s ease-out; - -webkit-animation-iteration-count: infinite; - -moz-animation-iteration-count: infinite; - animation-iteration-count: infinite; - background: transparent none repeat scroll 0 0; - border: 2px solid #eB4549; - border-radius: 50%; - display: inline-block; - height: 20px; - margin-left: -15px; - opacity: 0; - position: relative; - /*top: 14px;*/ - width: 20px; - z-index: 1; -} - -@keyframes pulse { - 0% { - transform: scale(0); - opacity: 0.0; - } - 25% { - transform: scale(0); - opacity: 0.1; - } - 50% { - transform: scale(0.1); - opacity: 0.3; - } - 75% { - transform: scale(0.5); - opacity: 0.5; - } - 100% { - transform: scale(1); - opacity: 0.0; - } -} - -@-moz-keyframes pulse { - 0% { - -moz-transform: scale(0); - opacity: 0.0; - } - 25% { - -moz-transform: scale(0); - opacity: 0.1; - } - 50% { - -moz-transform: scale(0.1); - opacity: 0.3; - } - 75% { - -moz-transform: scale(0.5); - opacity: 0.5; - } - 100% { - -moz-transform: scale(1); - opacity: 0.0; - } -} - -@-webkit-keyframes "pulse" { - 0% { - -webkit-transform: scale(0); - opacity: 0.0; - } - 25% { - -webkit-transform: scale(0); - opacity: 0.1; - } - 50% { - -webkit-transform: scale(0.1); - opacity: 0.3; - } - 75% { - -webkit-transform: scale(0.5); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1); - opacity: 0.0; - } -} -/*.badge.badge-service-running.pull-right::before { - content: "Running"; - color: rgba(255,255,255,0.2); - line-height: 5px; - margin-left: -65px; -} -.badge.badge-service-disabled.pull-right::before { - content: "Not Running"; - color: rgba(255,255,255,0.2); - line-height: 5px; - margin-left: -85px; -} -.badge.badge-service-running-dot::before { - content: "Running"; - color: rgba(255,255,255,0.2); - line-height: 5px; - margin-left: -65px; -} -.badge.badge-service-disabled-dot::before { - content: "Not Running"; - color: rgba(255,255,255,0.2); - line-height: 5px; - margin-left: -85px; -}*/ -.nav-quirk > li > a > i { - width: 16px; - font-size: 21px; - text-align: center; - margin-right: 7px; - color: #909090; - vertical-align: top; - margin-top: 1.5555px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk > li > a:hover > i { - color: #4daf7c; -} -.nav-quirk > li > a:hover, -.nav-quirk > li > a:focus { - color: #4daf7c; - background-color: #2f2f2f; -} -.nav-quirk > li + li { - margin: 0; -} -.nav-quirk > li:last-child { - border-bottom: 1px solid #2f2f2f; -} -.nav-quirk > li.nav-parent > a { - position: relative; -} -.nav-quirk > li.nav-parent > a:after { - content: '\f107'; - font-family: 'FontAwesome'; - font-size: 16px; - font-weight: 400; - color: #bdc3d1; - position: absolute; - top: 10px; - right: 15px; -} -.nav-quirk > li.nav-active > ul { - display: block; -} -.nav-quirk > li.active { - border-top-color: transparent; -} -.nav-quirk > li.active + li { - border-top-width: 0; -} -.nav-quirk > li.active > a { - background-color: #2f2f2f; - background-image: linear-gradient(to right, #2f2f2f 0%, #202020 100%); - color: #fff; -} -.nav-quirk > li.active > a .badge { - background-color: transparent; - color: rgba(255, 255, 255, 0.5); -} -.nav-quirk > li.active > a > i { - color: #3bc391; -} -.nav-quirk > li.active > a:after { - color: #fff; -} -.nav-quirk > li.active .children { - display: block; - border-top: 0; - border-bottom: 1px solid #3bc391; -} -.nav-quirk > li.active .children:before { - border-top: 7px solid #259dab; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - content: ""; - display: inline-block; - position: absolute; - left: 15px; - top: 0; -} -.nav-quirk .children { - list-style: none; - display: none; - margin: 0; - padding: 0; - position: relative; - border-top: 1px solid #2a2a2a; - background-color: #333; -} -.nav-quirk .children > li { - margin-left: 21px; - border-left: 1px solid #444; - font-family: "Open Sans", Helvetica, Arial, sans-serif; - text-transform: none; - letter-spacing: normal; - display: block; - font-size: 12px; -} -.nav-quirk .children > li:first-child { - padding-top: 7px; -} -.nav-quirk .children > li:last-child { - padding-bottom: 7px; -} -.nav-quirk .children > li > a { - display: inline-block; - font-size: 12px; - font-weight: 400; - padding: 5px 0 5px 12px; - color: #909090; - position: relative; - height: 30px; - line-height: 16px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk .children > li > a:before { - content: ''; - position: absolute; - width: 5px; - height: 5px; - left: -3px; - top: 50%; - background-color: #eee; - margin-top: -3px; - border-radius: 50px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk .children > li > a:after { - content: ''; - width: 30px; - height: 30px; - border: 1px solid #eee; - position: absolute; - left: -15px; - top: 50%; - margin-top: -15px; - border-radius: 50px; - opacity: 0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.nav-quirk .children > li > a:hover, -.nav-quirk .children > li > a:focus, -.nav-quirk .children > li > a:active { - text-decoration: none; - color: #fff; -} -.nav-quirk .children > li > a:hover:before, -.nav-quirk .children > li > a:focus:before, -.nav-quirk .children > li > a:active:before { - background-color: #eee; -} -.nav-quirk .children > li > a:hover:after, -.nav-quirk .children > li > a:focus:after, -.nav-quirk .children > li > a:active:after { - opacity: 1; - border-color: #5c97bf; - width: 11px; - height: 11px; - left: -6px; - margin-top: -6px; -} -.nav-quirk .children > li.active > a { - color: #259dab; -} -.nav-quirk .children > li.active > a:before { - background-color: #259dab; -} -.nav-quirk .children > li.active > a:after { - opacity: 1; - border-color: #259dab; - width: 11px; - height: 11px; - left: -6px; - margin-top: -6px; -} -/***** LEFT NAVIGATION STACKED STYLE VARIANT *****/ -.nav-quirk-stacked > li:first-child { - border-top: 1px solid #eaecf0; -} -.nav-quirk-stacked > li > a { - padding: 12px 0; - letter-spacing: .5px; - color: #464f63; -} -.nav-quirk-stacked > li > a:hover, -.nav-quirk-stacked > li > a:focus { - color: #262b36; -} -.nav-quirk-stacked > li > a:hover > i, -.nav-quirk-stacked > li > a:focus > i { - color: #262b36; -} -.nav-quirk-stacked > li.nav-parent > a:after { - top: 9px; - right: 5px; -} -.nav-quirk-stacked > li.active { - border-top-color: #eaecf0; -} -.nav-quirk-stacked > li.active + li { - border-top-width: 1px; -} -.nav-quirk-stacked > li.active > a, -.nav-quirk-stacked > li.active > a:hover, -.nav-quirk-stacked > li.active > a:focus { - background-color: transparent; - background-image: none; - color: #259dab; -} -.nav-quirk-stacked > li.active > a > i, -.nav-quirk-stacked > li.active > a:hover > i, -.nav-quirk-stacked > li.active > a:focus > i { - color: #259dab; -} -.nav-quirk-stacked > li.active .children { - border-bottom: 0; - border-top: 1px solid #eaecf0; -} -.nav-quirk-stacked > li.active .children:before { - display: none; -} -.nav-quirk-stacked > li.active.nav-parent > a:after { - color: #259dab; -} -.nav-quirk-stacked .children { - background-color: transparent; -} -.nav-quirk-stacked .children > li { - margin-left: 8px; - border-left-color: #eaecf0; -} -/***** LEFT NAVIGATION PILL STYLE VARIANT *****/ -.nav-quirk-pills > li:last-child { - border-bottom: 0; -} -.nav-quirk-pills > li > a { - padding: 10px; - border-radius: 2px; -} -.nav-quirk-pills > li > a:hover, -.nav-quirk-pills > li > a:focus { - background-color: #e1e4ea; -} -.nav-quirk-pills > li > a:hover > i, -.nav-quirk-pills > li > a:focus > i { - color: inherit; -} -.nav-quirk-pills > li + li { - border-top: 0; - margin-top: 1px; -} -.nav-quirk-pills > li.nav-parent a:after { - top: 7px; - right: 10px; -} -.nav-quirk-pills > li.active .children { - border-bottom: 0; -} -.nav-quirk-pills > li.active .children:before { - display: none; -} -.nav-quirk-pills > li .children { - background-color: transparent; - border-top: 0; -} -.nav-quirk-pills > li .children > li { - margin-left: 18px; - border-left: 0; -} -.nav-quirk-pills > li .children > li:first-child { - padding-top: 0; -} -.nav-quirk-pills > li .children > li:last-child { - padding-bottom: 0; -} -.nav-quirk-pills > li .children > li > a:after { - top: 50%; -} -/***** NAV MAIL *****/ -.nav-mail > li > a .badge { - color: #d9534f; -} -.nav-mail > li > a > i { - color: #909bb1; -} -.nav-label > li { - text-transform: none; -} -.nav-label > li > a { - font-weight: normal; -} -.nav-label > li > a > i.primary { - color: #2574ab; -} -.nav-label > li > a > i.success { - color: #4daf7c; -} -.nav-label > li > a > i.warning { - color: #e6ad5c; -} -.nav-label > li > a > i.danger { - color: #d9534f; -} -/***** LEFTPANEL CONTACT *****/ -.input-search-contact { - padding: 0; - margin-bottom: 20px; - margin-top: -15px; -} -.input-search-contact input { - border: 0; - padding-left: 15px; - border-bottom: 1px solid #eaecf0; - border-radius: 0; - background-color: transparent; -} -.input-search-contact input:focus { - border-color: #eaecf0; -} -.input-search-contact > .input-group-btn > .btn { - border: 0; - border-bottom: 1px solid #eaecf0; - background-color: transparent; - border-radius: 0; - font-size: 14px; - line-height: 0; - padding-top: 6px; - color: #818da7; -} -/***** LEFTPANEL SETTINGS *****/ -.list-group-settings > .list-group-item { - border-color: #eaecf0; -} -.sidebar { - position: absolute; - top: 64px; - bottom: 0; - padding: 15px; -} -.sidebar.left { - left: 0; -} -.sidebar.right { - right: 0; -} -.sidebar.email { - width: 280px; - background-color: #fff; -} -.sidebar-title { - text-transform: uppercase; - font-size: 11px; - color: #9fa8bc; - line-height: normal; - padding: 0 15px; - font-weight: 500; - letter-spacing: .5px; -} -.nav-sidebar.nav-justified { - background-color: #232323; - margin-bottom: 20px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.nav-sidebar.nav-justified > li > a { - border-radius: 0; - background-color: #232323; - color: #fff; - padding: 8px 10px; - font-size: 14px; - vertical-align: bottom; -} -.nav-sidebar.nav-justified > li > a:hover, -.nav-sidebar.nav-justified > li > a:focus { - cursor: pointer; - background-color: #323232; -} -.nav-sidebar.nav-justified > li > a i { - position: relative; -} -.nav-sidebar.nav-justified > li:first-child > a { - border-left: 0; -} -.nav-sidebar.nav-justified > li + li > a { - margin-left: 1px; -} -.nav-sidebar.nav-justified > li.unread > a > i:after { - content: ''; - position: absolute; - top: -2px; - right: -4px; - width: 10px; - height: 10px; - border-radius: 50px; - background-color: #d9534f; - opacity: .9; -} -.nav-sidebar.nav-justified > .active:first-child > a { - border-top-left-radius: 0; -} -.nav-sidebar.nav-justified > .active > a, -.nav-sidebar.nav-justified > .active > a:hover, -.nav-sidebar.nav-justified > .active > a:focus { - background-color: #2a2a2a; - color: #f1c40f; -} -@media (max-width: 767px) { - .nav-sidebar.nav-justified { - display: table; - } - .nav-sidebar.nav-justified > li { - display: table-cell; - } - .nav-sidebar.nav-justified > li > a { - margin: 0; - } -} -.sidebar-btn-wrapper { - margin: 0 15px 20px; -} -/***** CONTACT LIST *****/ -.media-list-contacts { - margin-bottom: 0; -} -.media-list-contacts .media { - border-top: 1px solid #eaecf0; -} -.media-list-contacts .media .media-left { - padding-right: 15px; -} -.media-list-contacts .media .media-object { - width: 40px; - padding: 2px; - border: 2px solid #eaecf0; -} -.media-list-contacts .media a { - display: block; - padding: 10px 15px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.media-list-contacts .media a:hover, -.media-list-contacts .media a:focus { - background-color: #f3f4f7; -} -.media-list-contacts .media a:hover .media-object, -.media-list-contacts .media a:focus .media-object { - border-color: #ccd1db; -} -.media-list-contacts .media .media-body { - padding-top: 2px; - font-size: 11px; - color: #9fa8bc; -} -.media-list-contacts .media .media-body i { - color: #409a32; -} -.media-list-contacts .media .media-body .fa-skype { - color: #00AFF0; -} -.media-list-contacts .media .media-heading { - font-size: 12px; - color: #3b4354; - margin: 3px 0 2px; -} -.media-list-contacts .media + .media { - margin-top: 0; -} -.list-group-settings > .list-group-item { - border-left: 0; - border-right: 0; - background-color: transparent; -} -.list-group-settings > .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.list-group-settings > .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.list-group-settings > .list-group-item h5 { - margin: 0 0 5px; - font-weight: 500; -} -.list-group-settings > .list-group-item small { - display: block; - line-height: normal; - font-size: 11px; -} -.list-group-settings .toggle-wrapper { - margin-top: 15px; -} -/********** USER LIST ***********/ -.user-list { - margin-bottom: 0; -} -.user-list .media { - padding: 12px 0; -} -.user-list .media + .media { - margin: 0; - border-top: 1px solid #eaecf0; -} -.user-list .media:first-child { - padding-top: 0; -} -.user-list .media:last-child { - padding-bottom: 0; -} -.user-list .media-left { - padding-right: 10px; -} -.user-list .media-object { - width: 42px; - padding: 2px; - border: 2px solid #dbdfe6; -} -.user-list .media-body .media-heading { - margin: 2px 0; -} -.user-list .media-body .media-heading > a { - font-size: 12px; - font-weight: 700; - color: #3b4354; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.user-list .media-body .media-heading > a:hover, -.user-list .media-body .media-heading > a:focus { - color: #259dab; -} -.user-list .media-body span { - color: #259dab; - font-weight: 500; -} -.user-list .media-body small.date { - display: block; - font-size: 11px; - color: #818da7; - margin-top: 2px; -} -.user-list .media-body small.date > i { - vertical-align: baseline; - margin-right: 2px; -} -.user-list .media-body a { - font-weight: 500; -} -/***** PROFILE LIST *****/ -.panel-profile .media-usermeta { - margin-top: 4px; - color: #909bb1; -} -.panel-profile .media-usermeta i { - display: inline-block; - margin-right: 5px; - vertical-align: baseline; -} -.panel-profile .people-info .row { - margin: 0; -} -.panel-profile .people-info .row + .row { - margin-top: 1px; -} -.panel-profile .people-info .col-sm-4 { - padding: 0; -} -.panel-profile .people-info .col-sm-4:first-child > .info-group { - margin-left: 0; -} -.panel-profile .people-info .social-account-list > i { - font-size: 28px; -} -.panel-profile .people-info h4 { - margin: 9px 0 8px; - font-weight: 500; - color: #259dab; -} -.panel-profile .people-info .fa, -.panel-profile .people-info .glyphicon { - margin-right: 5px; - vertical-align: baseline; - font-size: 14px; - color: #3b4354; -} -.panel-profile .people-info .info-group { - padding: 15px; - background-color: #f9fafb; - margin-left: 1px; -} -.panel-profile .people-info .info-group label { - display: block; - margin-bottom: 5px; - text-transform: uppercase; - font-weight: 700; - font-size: 11px; - letter-spacing: .5px; - color: #3b4354; -} -.panel-profile .people-info .info-group .social-account-list { - padding-top: 2px; -} -.panel-profile .people-info .info-group .social-account-list > i { - font-size: 28px; - margin: 4px 2px 0; - line-height: 17px; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-facebook-official { - color: #3A5795; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-twitter { - color: #55ACEE; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-dribbble { - color: #EA4C89; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-github { - color: #4078C0; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-linkedin { - color: #0073B2; -} -.panel-profile .people-info .info-group .social-account-list > i.fa-skype { - color: #4BB4FF; -} -.panel-profile.list-view .media { - margin-top: 0; -} -.panel-profile.list-view .media .media-left { - padding-right: 15px; -} -.panel-profile.list-view .media .media-object { - width: 48px; - padding: 2px; - border: 2px solid #eaecf0; -} -.panel-profile.list-view .media .media-heading { - margin-top: 5px; - margin-bottom: 2px; - font-size: 16px; - font-weight: 700; - color: #3b4354; -} -.panel-profile.grid-view .panel-heading { - position: relative; -} -.panel-profile.grid-view .panel-heading .people-actions { - position: absolute; - top: 15px; - right: 15px; -} -.panel-profile.grid-view .panel-profile-photo { - display: inline-block; -} -.panel-profile.grid-view .panel-profile-photo img { - padding: 2px; - border: 2px solid #dbdfe6; -} -.panel-profile.grid-view .panel-profile-name { - margin: 20px 0 5px; - font-size: 16px; -} -.panel-profile.grid-view .info-group { - margin-left: 0; - padding: 10px 0; - background-color: transparent; - border-top: 1px solid #dbdfe6; -} -.panel-profile.grid-view .info-group.last { - padding-bottom: 0; -} -.panel-profile.grid-view h4 { - margin: 5px 0 0; -} -.panel-profile.grid-view .row { - margin: 0; -} -.panel-profile.grid-view .col-xs-6 { - padding: 0; - border-left: 1px solid #dbdfe6; -} -.panel-profile.grid-view .col-xs-6 > .info-group { - padding-left: 20px; -} -.panel-profile.grid-view .col-xs-6:first-child { - border-left: 0; -} -.panel-profile.grid-view .col-xs-6:first-child > .info-group { - padding-left: 0; -} -/***** PROFILE USER *****/ -.profile-left-heading { - padding: 20px; - background-color: #3b4354; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.profile-left-heading .panel-options > li > a { - font-size: 14px; -} -.profile-left-heading .profile-photo { - width: 128px; - display: block; - margin: auto; -} -.profile-left-heading .profile-photo img { - padding: 5px; - background-color: #262b36; - border: 2px solid #505b72; -} -.profile-left-heading .profile-name { - color: #fff; - font-weight: 300; - font-size: 20px; - letter-spacing: 1px; - text-align: center; -} -.profile-left-heading .profile-designation { - color: #9fa8bc; - font-weight: 300; - font-size: 14px; - letter-spacing: 1px; - margin-bottom: 0; - text-align: center; -} -.profile-left-heading .list-group { - margin: 20px 0; -} -.profile-left-heading .list-group .list-group-item { - background-color: transparent; - border-width: 0 0 1px; - border-color: #464f63; - padding-left: 0; - padding-right: 0; - color: rgba(255, 255, 255, 0.7); - text-transform: uppercase; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 600; - letter-spacing: .5px; -} -.profile-left-heading .list-group .list-group-item a { - float: right; - color: #5bc0de; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 500; - letter-spacing: 1.5px; -} -.profile-left-heading .list-group .list-group-item a:hover, -.profile-left-heading .list-group .list-group-item a:focus { - color: #46b8da; -} -.profile-left-heading .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; - border-top-width: 1px; -} -.profile-left-heading .list-group .list-group-item:last-child { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.profile-left-body { - padding: 20px; - background-color: #464f63; - color: #9fa8bc; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.profile-left-body .panel-title { - color: #fff; - margin-bottom: 10px; - font-weight: 600; -} -.profile-left-body .profile-social > li a { - color: rgba(255, 255, 255, 0.7); - font-size: 28px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.profile-left-body .profile-social > li a:hover, -.profile-left-body .profile-social > li a:focus { - color: #fff; -} -.profile-btn-follow { - margin-top: 20px; -} -/***** POST ITEM *****/ -.panel-post-item .panel-heading { - padding: 15px 20px; -} -.panel-post-item .panel-heading .media-left { - padding-right: 15px; -} -.panel-post-item .panel-heading .media-object { - width: 42px; - padding: 2px; - border: 2px solid #dbdfe6; -} -.panel-post-item .panel-heading .media-heading { - font-size: 14px; - margin: 5px 0 0; -} -.panel-post-item .panel-heading .media-heading span { - font-weight: normal; - font-size: 12px; - color: #696c74; -} -.panel-post-item .panel-heading .media-usermeta { - margin: 2px 0 0; - font-size: 11px; -} -.panel-post-item .panel-heading .media-usermeta i { - vertical-align: top; - margin-top: 2px; - color: #aeb6c6; -} -.panel-post-item .panel-body .media-heading { - font-size: 14px; - font-weight: 500; -} -.panel-post-item .panel-body .media-heading a { - color: #259dab; -} -.panel-post-item .panel-body p + p { - margin-top: 10px; -} -.panel-post-item .panel-body .photos { - margin: 0; -} -.panel-post-item .panel-body .photos > div { - padding: 0; -} -.panel-post-item .panel-body .photos > div img { - padding: 1px; -} -.panel-post-item .panel-footer { - padding: 15px 20px; - border-top: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.panel-post-item .panel-footer .list-inline { - margin: 0; -} -.panel-post-item .panel-footer .list-inline > li { - padding: 0 8px; -} -.panel-post-item .panel-footer .list-inline > li:first-child { - padding-left: 0; -} -.panel-post-item .panel-footer .list-inline > li:last-child { - padding-right: 0; -} -.panel-post-item .panel-footer .list-inline > li a { - color: #545b68; - cursor: pointer; -} -.panel-post-item .panel-footer .list-inline > li a:hover, -.panel-post-item .panel-footer .list-inline > li a:focus { - color: #3d424c; -} -.panel-post-item .panel-footer .list-inline > li i { - vertical-align: baseline; - margin-right: 2px; -} -.panel-post-item .collapse .media-list, -.panel-post-item .collapsing .media-list { - background-color: #f0f1f4; - margin: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -.panel-post-item .collapse .media-list .media, -.panel-post-item .collapsing .media-list .media { - border-top: 1px solid #fff; - padding: 10px 20px 0; -} -.panel-post-item .collapse .media-list .media + .media, -.panel-post-item .collapsing .media-list .media + .media { - margin-top: 10px; -} -.panel-post-item .collapse .media-list .media:last-child, -.panel-post-item .collapsing .media-list .media:last-child { - padding-bottom: 10px; -} -.panel-post-item .collapse .media-list .media-left, -.panel-post-item .collapsing .media-list .media-left { - padding-right: 10px; -} -.panel-post-item .collapse .media-list .media-object, -.panel-post-item .collapsing .media-list .media-object { - padding: 0; - border: 0; - width: 24px; -} -.panel-post-item .collapse .media-list .media-heading, -.panel-post-item .collapsing .media-list .media-heading { - font-weight: 500; - font-size: 12px; - margin: 2px 0 5px; -} -.panel-post-item .collapse .media-list .media-heading small, -.panel-post-item .collapsing .media-list .media-heading small { - font-size: 11px; - margin-left: 5px; - float: right; - color: #9fa8bc; -} -.panel-post-item .form-control { - border-color: transparent; - padding-left: 20px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -/***** NAVIGATION *****/ -.nav-dark-quirk { - background-color: #3b4354; -} -.nav-dark-quirk > li, -.nav-dark-quirk > li:last-child { - border-color: #464f63; -} -.nav-dark-quirk > li > a { - color: #818da7; -} -.nav-dark-quirk > li > a:hover, -.nav-dark-quirk > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-quirk-primary > li > a > i { - color: #2574ab; -} -.nav-quirk-primary > li.active > a, -.nav-quirk-primary > li.active > a:hover, -.nav-quirk-primary > li.active > a:focus { - color: #fff; - background-color: #2574ab; - background-image: none; -} -.nav-quirk-primary > li.active .children:before { - border-top-color: #2574ab; -} -.nav-quirk-primary .children > li.active > a { - color: #2574ab; -} -.nav-quirk-primary .children > li.active > a:before { - background-color: #2574ab; -} -.nav-quirk-primary .children > li.active > a:after { - border-color: #2574ab; -} -.nav-quirk-success > li > a > i { - color: #4daf7c; -} -.nav-quirk-success > li.active > a, -.nav-quirk-success > li.active > a:hover, -.nav-quirk-success > li.active > a:focus { - color: #fff; - background-color: #03a678; - background-image: none; -} -.nav-quirk-success > li.active .children:before { - border-top-color: #03a678; -} -.nav-quirk-success .children > li.active > a { - color: #03a678; -} -.nav-quirk-success .children > li.active > a:before { - background-color: #03a678; -} -.nav-quirk-success .children > li.active > a:after { - border-color: #03a678; -} -.nav-quirk-warning > li > a > i { - color: #e6ad5c; -} -.nav-quirk-warning > li.active > a, -.nav-quirk-warning > li.active > a:hover, -.nav-quirk-warning > li.active > a:focus { - color: #fff; - background-color: #e6ad5c; - background-image: none; -} -.nav-quirk-warning > li.active .children:before { - border-top-color: #e6ad5c; -} -.nav-quirk-warning .children > li.active > a { - color: #e6ad5c; -} -.nav-quirk-warning .children > li.active > a:before { - background-color: #e6ad5c; -} -.nav-quirk-warning .children > li.active > a:after { - border-color: #e6ad5c; -} -.nav-quirk-danger > li > a > i { - color: #d9534f; -} -.nav-quirk-danger > li.active > a, -.nav-quirk-danger > li.active > a:hover, -.nav-quirk-danger > li.active > a:focus { - color: #fff; - background-color: #d9534f; - background-image: none; -} -.nav-quirk-danger > li.active .children:before { - border-top-color: #d9534f; -} -.nav-quirk-danger .children > li.active > a { - color: #d9534f; -} -.nav-quirk-danger .children > li.active > a:before { - background-color: #d9534f; -} -.nav-quirk-danger .children > li.active > a:after { - border-color: #d9534f; -} -.nav-quirk-info > li > a > i { - color: #5bc0de; -} -.nav-quirk-info > li.active > a, -.nav-quirk-info > li.active > a:hover, -.nav-quirk-info > li.active > a:focus { - color: #fff; - background-color: #5bc0de; - background-image: none; -} -.nav-quirk-info > li.active .children:before { - border-top-color: #5bc0de; -} -.nav-quirk-info .children > li.active > a { - color: #5bc0de; -} -.nav-quirk-info .children > li.active > a:before { - background-color: #5bc0de; -} -.nav-quirk-info .children > li.active > a:after { - border-color: #5bc0de; -} -.nav-dark-primary { - background-color: #3b4354; -} -.nav-dark-primary > li > a > i { - color: #2574ab; -} -.nav-dark-primary > li, -.nav-dark-primary > li:last-child { - border-color: #464f63; -} -.nav-dark-primary > li > a { - color: #818da7; -} -.nav-dark-primary > li > a:hover, -.nav-dark-primary > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-primary > li.active > a, -.nav-dark-primary > li.active > a:hover, -.nav-dark-primary > li.active > a:focus { - color: #fff; - background-color: #2574ab; - background-image: none; -} -.nav-dark-primary > li.active .children:before { - border-top-color: #2574ab; -} -.nav-dark-success { - background-color: #3b4354; -} -.nav-dark-success > li > a > i { - color: #259dab; -} -.nav-dark-success > li, -.nav-dark-success > li:last-child { - border-color: #464f63; -} -.nav-dark-success > li > a { - color: #818da7; -} -.nav-dark-success > li > a:hover, -.nav-dark-success > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-success > li.active > a, -.nav-dark-success > li.active > a:hover, -.nav-dark-success > li.active > a:focus { - color: #fff; - background-color: #259dab; - background-image: none; -} -.nav-dark-success > li.active .children:before { - border-top-color: #259dab; -} -.nav-dark-warning { - background-color: #3b4354; -} -.nav-dark-warning > li > a > i { - color: #e6ad5c; -} -.nav-dark-warning > li, -.nav-dark-warning > li:last-child { - border-color: #464f63; -} -.nav-dark-warning > li > a { - color: #818da7; -} -.nav-dark-warning > li > a:hover, -.nav-dark-warning > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-warning > li.active > a, -.nav-dark-warning > li.active > a:hover, -.nav-dark-warning > li.active > a:focus { - color: #fff; - background-color: #e6ad5c; - background-image: none; -} -.nav-dark-warning > li.active .children:before { - border-top-color: #e6ad5c; -} -.nav-dark-danger { - background-color: #3b4354; -} -.nav-dark-danger > li > a > i { - color: #d9534f; -} -.nav-dark-danger > li, -.nav-dark-danger > li:last-child { - border-color: #464f63; -} -.nav-dark-danger > li > a { - color: #818da7; -} -.nav-dark-danger > li > a:hover, -.nav-dark-danger > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-danger > li.active > a, -.nav-dark-danger > li.active > a:hover, -.nav-dark-danger > li.active > a:focus { - color: #fff; - background-color: #d9534f; - background-image: none; -} -.nav-dark-danger > li.active .children:before { - border-top-color: #d9534f; -} -.nav-dark-info { - background-color: #3b4354; -} -.nav-dark-info > li > a > i { - color: #5bc0de; -} -.nav-dark-info > li, -.nav-dark-info > li:last-child { - border-color: #464f63; -} -.nav-dark-info > li > a { - color: #818da7; -} -.nav-dark-info > li > a:hover, -.nav-dark-info > li > a:focus { - background-color: #313745; - color: #fff; -} -.nav-dark-info > li.active > a, -.nav-dark-info > li.active > a:hover, -.nav-dark-info > li.active > a:focus { - color: #fff; - background-color: #5bc0de; - background-image: none; -} -.nav-dark-info > li.active .children:before { - border-top-color: #5bc0de; -} -/***** PANEL WEATHER *****/ -.panel-weather .today-day { - font-weight: 200; - font-size: 25px; - color: #fff; - margin-top: 0; -} -.panel-weather .today-date { - font-weight: 200; - color: rgba(255, 255, 255, 0.6); -} -.panel-weather .today-cloud { - font-size: 72px; - text-align: center; - display: block; - margin-top: -10px; -} -/***** PANEL PRODUUCT *****/ -.panel-product .media-heading { - font-weight: 500; -} -.panel-product .media-heading > a { - color: #657390; -} -/***** BLOG ENTRY *****/ -.blog-entry .blog-category, -.blog-entry2 .blog-category { - text-transform: uppercase; - color: #d9534f; - font-size: 12px; - margin: 0 0 5 px; -} -.blog-entry .blog-title, -.blog-entry2 .blog-title { - margin-top: 0; - font-size: 18px; - font-weight: 500; - line-height: 24px; -} -.blog-entry .blog-title > a, -.blog-entry2 .blog-title > a { - color: #3b4354; -} -.blog-entry .blog-title > a:hover, -.blog-entry2 .blog-title > a:hover, -.blog-entry .blog-title > a:focus, -.blog-entry2 .blog-title > a:focus { - color: #505b72; -} -.blog-entry .blog-summary, -.blog-entry2 .blog-summary { - line-height: 18px; -} -.blog-entry { - margin: 0; - display: table; -} -.blog-entry > div { - display: table-cell; - float: none; -} -.blog-entry > div:first-child { - background-color: #fff; - padding: 20px; - vertical-align: top; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.blog-entry > div:last-child { - padding: 0; -} -.blog-entry > div:last-child > img { - width: 100%; - vertical-align: top; - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.blog-entry2 .blog-img { - height: 200px; - overflow: hidden; -} -.blog-entry2 .img-responsive { - width: 100%; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.blog-entry2 .blog-body { - background-color: #fff; - padding: 20px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} -/***** ROW COLUMNS JOINING WITH EACH OTHER *****/ -.row-col-join { - margin: 0 0 20px; - display: table; - width: 100%; -} -.row-col-join > div { - display: table-cell; - float: none; - padding: 0; -} -.row-col-join > div:first-child { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.row-col-join > div:last-child { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.row-col-join > div .panel { - margin-bottom: 0; - background-color: transparent; -} -@media (max-width: 559px) { - .row-col-join > div { - display: block; - } -} -/***** DASHBOARD: PANEL ANNOUNCEMENTS *****/ -.panel-announcement { - background-color: #fff; - margin-bottom: 20px; -} -.panel-announcement .panel-heading { - padding-bottom: 5px; -} -.panel-announcement .panel-title { - color: #d9534f; -} -.panel-announcement .panel-body h2 { - margin: 0 0 10px; - font-weight: 500; - line-height: 24px; - font-size: 18px; - letter-spacing: normal; -} -.panel-announcement .panel-body h4 { - margin: 0; - font-weight: 400; - font-size: 12px; - color: rgba(38, 43, 54, 0.7); - line-height: 20px; -} -.panel-announcement .panel-body h4 > a { - color: #259dab; -} -.panel-announcement .panel-body h4 > a:hover, -.panel-announcement .panel-body h4 > a:focus { - color: #31c1d2; -} -.list-announcement .panel-body { - padding: 0; -} -.list-announcement .panel-body ul { - list-style: outside none none; - margin-bottom: 0; -} -.list-announcement .panel-body ul > li { - padding: 10px 20px; - border-bottom: 1px solid #eaecf0; - letter-spacing: normal; - min-height: 46px; -} -.list-announcement .panel-body ul > li a { - color: #262b36; - font-weight: 500; -} -.list-announcement .panel-body ul > li small { - margin-top: 4px; - display: block; - color: rgba(38, 43, 54, 0.45); -} -.list-announcement .panel-body ul > li small a { - font-weight: 400; - color: #259dab; - float: right; -} -.list-announcement .panel-footer { - padding: 14px 20px; - background-color: #f1f1f1; -} -/***** DASHBOARD: EARNINGS *****/ -.panel-earnings > div { - color: #505b72; -} -.panel-earnings > div:first-child { - background-color: #fff; -} -.panel-earnings > div:first-child .panel-title { - color: #d9534f; -} -@media (max-width: 560px) { - .panel-earnings > div:first-child { - border-top-right-radius: 2px; - border-bottom-left-radius: 0; - } -} -.panel-earnings > div:last-child { - background-color: #505b72; -} -.panel-earnings > div:last-child .panel-title { - color: #fff; -} -@media (max-width: 560px) { - .panel-earnings > div:last-child { - border-top-right-radius: 0; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - } -} -@media (max-width: 560px) { - .panel-earnings > div { - display: block; - width: 100%; - } -} -.panel-earnings .panel { - background-color: transparent; -} -.panel-earnings .panel-heading { - padding-bottom: 5px; -} -.panel-earnings .earning-amount { - margin-top: 0; - font-size: 32px; -} -.panel-earnings .earning-today { - font-weight: 400; - font-size: 12px; - color: #259dab; - margin: 0; -} -.panel-earnings .list-group { - margin-top: 30px; - margin-bottom: 0; -} -.panel-earnings .list-group > .list-group-item { - background-color: transparent; - padding: 10px 0; - border-left: 0; - border-right: 0; - border-color: rgba(38, 43, 54, 0.2); -} -.panel-earnings .list-group > .list-group-item:first-child { - border-top: 0; - padding-top: 0; -} -.panel-earnings .list-group > .list-group-item:last-child { - border-bottom: 0; - padding-bottom: 0; -} -.panel-earnings .list-group > .list-group-item .pull-right { - font-weight: 700; - letter-spacing: 1px; - color: #3b4354; -} -.panel-earnings .body-chart { - height: 210px; -} -/***** DASHBOARD: QUICK PAGE ACCESS *****/ -.panel-quick-page { - margin: 0 0 20px; -} -.panel-quick-page > div { - padding: 0; -} -.panel-quick-page > div .panel { - border-radius: 0; - margin-left: 1px; - margin-bottom: 1px; -} -.panel-quick-page > div .panel:hover, -.panel-quick-page > div .panel:focus { - cursor: pointer; - position: relative; -} -@media (max-width: 360px) { - .panel-quick-page > div { - width: 50%; - } -} -@media (max-width: 560px) { - .panel-quick-page > div .panel-heading { - padding: 10px; - } -} -@media (max-width: 560px) { - .panel-quick-page > div .panel-title { - font-size: 11px; - } -} -.panel-quick-page > div:first-child .panel { - margin-left: 0; - border-top-left-radius: 2px; -} -@media (max-width: 360px) { - .panel-quick-page > div:nth-child(2) .panel { - border-top-right-radius: 2px; - } -} -@media (max-width: 991px) { - .panel-quick-page > div:nth-child(3) .panel { - border-top-right-radius: 2px; - } -} -@media (max-width: 360px) { - .panel-quick-page > div:nth-child(3) .panel { - border-top-right-radius: 0; - } -} -.panel-quick-page > div:nth-child(4) .panel { - border-top-right-radius: 2px; -} -@media (max-width: 991px) { - .panel-quick-page > div:nth-child(4) .panel { - margin-left: 0; - border-top-right-radius: 0; - } -} -.panel-quick-page > div:nth-child(5) .panel { - margin-left: 0; - border-bottom-left-radius: 2px; -} -@media (max-width: 991px) { - .panel-quick-page > div:nth-child(5) .panel { - margin-left: 1px; - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } -} -@media (max-width: 991px) { - .panel-quick-page > div:nth-child(7) .panel { - margin-left: 0; - border-bottom-left-radius: 2px; - } -} -@media (max-width: 360px) { - .panel-quick-page > div:nth-child(7) .panel { - border-bottom-left-radius: 0; - } -} -.panel-quick-page > div:last-child .panel { - border-bottom-right-radius: 2px; -} -@media (max-width: 360px) { - .panel-quick-page > div:nth-child(odd) > .panel { - margin-left: 0; - } - .panel-quick-page > div:nth-child(even) > .panel { - margin-left: 1px; - } - .panel-quick-page > div:last-child { - width: 100%; - } - .panel-quick-page > div:last-child > .panel { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; - } -} -.panel-quick-page .hvr-shutter-out-vertical { - display: block; -} -.panel-quick-page .page-user > .panel { - background-color: #2ab0c0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-user > .panel:hover, -.panel-quick-page .page-user > .panel:focus { - background-color: #259dab; -} -.panel-quick-page .page-products > .panel { - background-color: #31b0d5; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-products > .panel:hover, -.panel-quick-page .page-products > .panel:focus { - background-color: #28a1c5; -} -.panel-quick-page .page-events > .panel { - background-color: #469bd7; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-events > .panel:hover, -.panel-quick-page .page-events > .panel:focus { - background-color: #2a82c0; -} -.panel-quick-page .page-messages > .panel { - background-color: #2a82c0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-messages > .panel:hover, -.panel-quick-page .page-messages > .panel:focus { - background-color: #2574ab; -} -.panel-quick-page .page-reports > .panel { - background-color: #de6489; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-reports > .panel:hover, -.panel-quick-page .page-reports > .panel:focus { - background-color: #d43a69; -} -.panel-quick-page .page-statistics > .panel { - background-color: #e27c79; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-statistics > .panel:hover, -.panel-quick-page .page-statistics > .panel:focus { - background-color: #d9534f; -} -.panel-quick-page .page-support > .panel { - background-color: #9d70e2; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-support > .panel:hover, -.panel-quick-page .page-support > .panel:focus { - background-color: #8046da; -} -.panel-quick-page .page-privacy > .panel { - background-color: #727f9c; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-privacy > .panel:hover, -.panel-quick-page .page-privacy > .panel:focus { - background-color: #5b6781; -} -.panel-quick-page .page-settings > .panel { - background-color: #657390; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-quick-page .page-settings > .panel:hover, -.panel-quick-page .page-settings > .panel:focus { - background-color: #505b72; -} -.panel-quick-page .panel-heading { - padding: 15px 20px; -} -.panel-quick-page .panel-title { - color: #fff; -} -.panel-quick-page .panel-body { - padding-top: 0; -} -.panel-quick-page .page-icon { - margin: 0; - color: #fff; - font-size: 70px; - height: 70px; - line-height: 0; - text-align: center; -} -/***** PANEL TRAFFIC *****/ -.panel-site-traffic .panel-body .panel-title { - color: #818da7; - font-size: 11px; - margin: 3px 0 0; -} -@media (max-width: 480px) { - .panel-site-traffic .panel-body .row > div { - width: 100%; - float: none; - } - .panel-site-traffic .panel-body .row > div:before, - .panel-site-traffic .panel-body .row > div:after { - content: " "; - display: table; - } - .panel-site-traffic .panel-body .row > div:after { - clear: both; - } - .panel-site-traffic .panel-body .row > div:before, - .panel-site-traffic .panel-body .row > div:after { - content: " "; - display: table; - } - .panel-site-traffic .panel-body .row > div:after { - clear: both; - } - .panel-site-traffic .panel-body .row > div + div { - margin-top: 15px; - } -} -.panel-site-traffic .panel-body h3 { - margin: 0 0 3px; - font-size: 32px; -} -.panel-site-traffic .panel-body .icon { - font-size: 48px; - color: #fff; - margin-right: 20px; - border-radius: 2px; - width: 70px; - line-height: 54px; -} -.panel-site-traffic .panel-body .ion-stats-bars { - background-color: #2574ab; - padding: 7px 18px; -} -.panel-site-traffic .panel-body .ion-eye { - background-color: #5bc0de; - padding: 7px 15px; -} -.panel-site-traffic .panel-body .ion-clock { - background-color: #259dab; - padding: 7px 14px; -} -.panel-site-traffic .panel-body h5 { - margin: 0; - font-weight: 300; -} -/***** DASHBOARD: PANEL STATISTICS *****/ -.panel-statistics { - margin: 0 0 20px; -} -.panel-statistics .panel { - margin: 0; - border-radius: 0; - min-height: 130px; -} -.panel-statistics > div { - padding: 0; -} -.panel-statistics > div:first-child > .panel { - border-top-left-radius: 2px; -} -.panel-statistics > div:nth-child(2) > .panel { - border-top-right-radius: 2px; -} -.panel-statistics > div:nth-child(3) > .panel { - border-bottom-left-radius: 2px; -} -.panel-statistics > div:last-child > .panel { - border-bottom-right-radius: 2px; -} -.panel-statistics > div:nth-child(odd) > .panel { - margin-left: 0; -} -.panel-statistics > div:nth-child(3) > .panel, -.panel-statistics > div:last-child > .panel { - margin-bottom: 0; -} -@media (max-width: 767px) { - .panel-statistics > div:nth-child(2) > .panel { - margin-bottom: 1px; - border-top-right-radius: 0; - } - .panel-statistics > div:nth-child(3) > .panel { - border-bottom-left-radius: 0; - } - .panel-statistics > div:first-child > .panel { - border-top-right-radius: 2px; - } - .panel-statistics > div:last-child > .panel { - border-bottom-left-radius: 2px; - } -} -.panel-updates h3 { - margin: 5px 0 5px; - font-size: 26px; -} -.panel-updates .progress { - height: 5px; - margin-bottom: 15px; -} -.panel-updates p, -.panel-updates p + p { - margin: 0; - font-size: 11px; - letter-spacing: 0; - /*color: #505b72;*/ - color: #888; -} -.panel-updates.panel-success-full .panel-body .panel-title, -.panel-updates.panel-danger-full .panel-body .panel-title { - font-weight: 700; -} -.panel-updates.panel-success-full .progress, -.panel-updates.panel-danger-full .progress { - background-color: rgba(255, 255, 255, 0.3); -} -.panel-updates.panel-success-full .progress-bar, -.panel-updates.panel-danger-full .progress-bar { - background-color: #fff; -} -.panel-updates.panel-success-full p, -.panel-updates.panel-danger-full p { - color: #fff; -} -/***** MAIN PANEL *****/ -.mainpanel { - padding-top: 64px; -} -@media (min-width: 992px) { - .mainpanel { - margin-left: 280px; - } -} -@media (max-width: 991px) { - .mainpanel { - position: relative; - } -} -.breadcrumb-quirk { - padding: 0; - background-color: transparent; - margin-bottom: 20px; -} -.breadcrumb-quirk > li { - font-size: 12px; -} -.breadcrumb-quirk > li > a { - color: #545b68; -} -.breadcrumb-quirk > li > a:hover, -.breadcrumb-quirk > li > a:focus { - color: #3d424c; -} -.breadcrumb-quirk > li + li:before { - content: '\f105'; - font-family: 'FontAwesome'; - color: #818da7; - margin-right: 5px; -} -.breadcrumb-quirk > li i { - font-size: 14px; - display: inline-block; - vertical-align: top; - margin-top: 1px; -} -.breadcrumb-quirk > li.active { - color: #464f63; - font-weight: 500; -} -.contentpanel { - padding: 20px; - position: relative; -} -@media (max-width: 320px) { - .contentpanel { - padding-left: 10px; - padding-right: 10px; - } -} -.contentpanel:after { - clear: both; - display: block; - content: ''; -} -form .form-group:last-child { - margin-bottom: 0; -} -/* Checkbox */ -.ckbox, -.rdiobox { - font-weight: normal; - position: relative; - display: block; - line-height: 18px; -} -.ckbox span:before, -.ckbox span:after { - line-height: 18px; - position: absolute; -} -.ckbox span:before { - content: ''; - width: 14px; - height: 14px; - background-color: #fff; - border: 1px solid #dbdfe6; - border-radius: 1px; - top: 2px; - left: 0; -} -.ckbox span:after { - left: 2.5px; - top: 0; - content: '\f00c'; - font-family: 'FontAwesome'; - font-size: 9px; - color: #696c74; - display: none; -} -.ckbox input[type='checkbox'] { - opacity: 0; - margin: 0 5px 0 0; -} -.ckbox input[type='checkbox']:checked + span:before { - border-color: #ccd1db; -} -.ckbox input[type='checkbox']:checked + span:after { - display: block; -} -.ckbox input[type='checkbox'][disabled] + span, -.ckbox input[type='checkbox'][disabled] + span:before, -.ckbox input[type='checkbox'][disabled] + span:after { - opacity: .75; -} -.ckbox-inline, -.rdiobox-inline { - display: inline-block; -} -/* Checkbox color variant */ -.ckbox-primary input[type='checkbox']:checked + span:before { - background-color: #2574ab; - border-color: #2574ab; -} -.ckbox-primary input[type='checkbox']:checked + span:after { - color: #ffffff; -} -.ckbox-success input[type='checkbox']:checked + span:before { - background-color: #4daf7c; - border-color: #4daf7c; -} -.ckbox-success input[type='checkbox']:checked + span:after { - color: #ffffff; -} -.ckbox-warning input[type='checkbox']:checked + span:before { - background-color: #e6ad5c; - border-color: #e6ad5c; -} -.ckbox-warning input[type='checkbox']:checked + span:after { - color: #ffffff; -} -.ckbox-danger input[type='checkbox']:checked + span:before { - background-color: #d9534f; - border-color: #d9534f; -} -.ckbox-danger input[type='checkbox']:checked + span:after { - color: #ffffff; -} -.ckbox-info input[type='checkbox']:checked + span:before { - background-color: #5bc0de; - border-color: #5bc0de; -} -.ckbox-info input[type='checkbox']:checked + span:after { - color: #ffffff; -} -/* Radio Box */ -.rdiobox span:before, -.rdiobox span:after { - line-height: 18px; - position: absolute; -} -.rdiobox span:before { - content: ''; - width: 14px; - height: 14px; - background-color: #fff; - border: 1px solid #696c74; - border-radius: 50px; - top: 2px; - left: 0; -} -.rdiobox span:after { - content: ''; - width: 8px; - height: 8px; - background-color: #696c74; - border-radius: 50px; - top: 5px; - left: 3px; - display: none; -} -.rdiobox input[type='radio'] { - opacity: 0; - margin: 0 5px 0 0; -} -.rdiobox input[type='radio']:checked + span:before { - border-color: #666; -} -.rdiobox input[type='radio']:checked + span:after { - display: block; -} -.rdiobox input[type='radio'][disabled] + span, -.rdiobox input[type='radio'][disabled] + span:before, -.rdiobox input[type='radio'][disabled] + span:after { - opacity: .75; -} -/* Radio box color variant */ -.rdiobox-primary input[type='radio']:checked + span:before { - border-color: #2574ab; -} -.rdiobox-primary input[type='radio']:checked + span:after { - background-color: #2574ab; -} -.rdiobox-success input[type='radio']:checked + span:before { - border-color: #4daf7c; -} -.rdiobox-success input[type='radio']:checked + span:after { - background-color: #4daf7c; -} -.rdiobox-warning input[type='radio']:checked + span:before { - border-color: #e6ad5c; -} -.rdiobox-warning input[type='radio']:checked + span:after { - background-color: #e6ad5c; -} -.rdiobox-danger input[type='radio']:checked + span:before { - border-color: #d9534f; -} -.rdiobox-danger input[type='radio']:checked + span:after { - background-color: #d9534f; -} -.rdiobox-info input[type='radio']:checked + span:before { - border-color: #5bc0de; -} -.rdiobox-info input[type='radio']:checked + span:after { - background-color: #5bc0de; -} -/* Inside input group */ -.input-group-addon .ckbox, -.input-group-addon .rdiobox, -.input-group-addon .ckbox input, -.input-group-addon .rdiobox input { - margin: 0; -} -/* Time Picker */ -.timepicker { - width: 100px; -} -/* Form Validation */ -label.error { - color: #d9534f; - margin: 5px 0 0; - display: block; -} -div.error { - margin-bottom: 20px; -} -.form-control.error { - border-color: #d9534f; -} -.form-horizontal .control-label.nopaddingtop { - padding-top: 0; -} -/***** TEMPLATE BUTTONS *****/ -.btn-quirk { - text-transform: uppercase; - font-weight: 700; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - letter-spacing: .5px; -} -.btn-stroke { - background-color: transparent; - border-width: 2px; - padding: 9px 11px; -} -.btn-stroke:hover, -.btn-stroke:focus, -.btn-stroke.focus, -.btn-stroke:active, -.btn-stroke.active, -.open > .dropdown-toggle.btn-stroke { - background-color: transparent; -} -.btn-stroke.btn-primary { - border-color: #2574ab; - color: #2574ab; -} -.btn-stroke.btn-primary:hover, -.btn-stroke.btn-primary:focus, -.btn-stroke.btn-primary.focus, -.btn-stroke.btn-primary:active, -.btn-stroke.btn-primary.active, -.open > .dropdown-toggle.btn-stroke.btn-primary { - color: #1c5881; - border-color: #1c5881; -} -.btn-stroke.btn-success { - border-color: #4daf7c; - color: #4daf7c; -} -.btn-stroke.btn-success:hover, -.btn-stroke.btn-success:focus, -.btn-stroke.btn-success.focus, -.btn-stroke.btn-success:active, -.btn-stroke.btn-success.active, -.open > .dropdown-toggle.btn-stroke.btn-success { - color: #03a678; - border-color: #03a678; -} -.btn-stroke.btn-warning { - border-color: #e6ad5c; - color: #e6ad5c; -} -.btn-stroke.btn-warning:hover, -.btn-stroke.btn-warning:focus, -.btn-stroke.btn-warning.focus, -.btn-stroke.btn-warning:active, -.btn-stroke.btn-warning.active, -.open > .dropdown-toggle.btn-stroke.btn-warning { - color: #df9730; - border-color: #df9730; -} -.btn-stroke.btn-danger { - border-color: #d9534f; - color: #d9534f; -} -.btn-stroke.btn-danger:hover, -.btn-stroke.btn-danger:focus, -.btn-stroke.btn-danger.focus, -.btn-stroke.btn-danger:active, -.btn-stroke.btn-danger.active, -.open > .dropdown-toggle.btn-stroke.btn-danger { - color: #c9302c; - border-color: #c9302c; -} -.btn-stroke.btn-info { - border-color: #5bc0de; - color: #5bc0de; -} -.btn-stroke.btn-info:hover, -.btn-stroke.btn-info:focus, -.btn-stroke.btn-info.focus, -.btn-stroke.btn-info:active, -.btn-stroke.btn-info.active, -.open > .dropdown-toggle.btn-stroke.btn-info { - color: #31b0d5; - border-color: #31b0d5; -} -.btn-stroke:active { - background-color: transparent !important; -} -.btn-stroke-thin { - border-width: 1px; - font-weight: 600; -} -.btn-icon { - width: 38px; - height: 38px; - padding: 0; - border-radius: 100px; -} -.btn-icon.btn-stroke { - padding: 0; -} -.btn-wide { - min-width: 100px; -} -.btn-compose { - display: block; - margin: 0 15px; -} -.btn-default-active { - color: #ffffff; - background-color: #bdc3d1; - border-color: transparent; -} -.btn-default-active:focus, -.btn-default-active.focus { - color: #ffffff; - background-color: #a8b0c2; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default-active:hover { - color: #ffffff; - background-color: #aeb6c6; - border-color: rgba(0, 0, 0, 0); -} -.btn-default-active:active, -.btn-default-active.active, -.open > .dropdown-toggle.btn-default-active { - color: #ffffff; - background-color: #a8b0c2; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-default-active:active:hover, -.btn-default-active.active:hover, -.open > .dropdown-toggle.btn-default-active:hover, -.btn-default-active:active:focus, -.btn-default-active.active:focus, -.open > .dropdown-toggle.btn-default-active:focus, -.btn-default-active:active.focus, -.btn-default-active.active.focus, -.open > .dropdown-toggle.btn-default-active.focus { - color: #ffffff; - background-color: #a8b0c2; - border-color: rgba(0, 0, 0, 0); -} -.btn-default-active:active, -.btn-default-active.active, -.open > .dropdown-toggle.btn-default-active { - background-image: none; -} -.btn-default-active.disabled, -.btn-default-active[disabled], -fieldset[disabled] .btn-default-active, -.btn-default-active.disabled:hover, -.btn-default-active[disabled]:hover, -fieldset[disabled] .btn-default-active:hover, -.btn-default-active.disabled:focus, -.btn-default-active[disabled]:focus, -fieldset[disabled] .btn-default-active:focus, -.btn-default-active.disabled.focus, -.btn-default-active[disabled].focus, -fieldset[disabled] .btn-default-active.focus, -.btn-default-active.disabled:active, -.btn-default-active[disabled]:active, -fieldset[disabled] .btn-default-active:active, -.btn-default-active.disabled.active, -.btn-default-active[disabled].active, -fieldset[disabled] .btn-default-active.active { - background-color: #bdc3d1; - border-color: transparent; -} -.btn-default-active .badge { - color: #bdc3d1; - background-color: #ffffff; -} -.btn-fb { - color: #ffffff; - background-color: #3a5795; - border-color: transparent; -} -.btn-fb:focus, -.btn-fb.focus { - color: #ffffff; - background-color: #30487b; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-fb:hover { - color: #ffffff; - background-color: #334c83; - border-color: rgba(0, 0, 0, 0); -} -.btn-fb:active, -.btn-fb.active, -.open > .dropdown-toggle.btn-fb { - color: #ffffff; - background-color: #30487b; - border-color: rgba(0, 0, 0, 0); - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-fb:active:hover, -.btn-fb.active:hover, -.open > .dropdown-toggle.btn-fb:hover, -.btn-fb:active:focus, -.btn-fb.active:focus, -.open > .dropdown-toggle.btn-fb:focus, -.btn-fb:active.focus, -.btn-fb.active.focus, -.open > .dropdown-toggle.btn-fb.focus { - color: #ffffff; - background-color: #30487b; - border-color: rgba(0, 0, 0, 0); -} -.btn-fb:active, -.btn-fb.active, -.open > .dropdown-toggle.btn-fb { - background-image: none; -} -.btn-fb.disabled, -.btn-fb[disabled], -fieldset[disabled] .btn-fb, -.btn-fb.disabled:hover, -.btn-fb[disabled]:hover, -fieldset[disabled] .btn-fb:hover, -.btn-fb.disabled:focus, -.btn-fb[disabled]:focus, -fieldset[disabled] .btn-fb:focus, -.btn-fb.disabled.focus, -.btn-fb[disabled].focus, -fieldset[disabled] .btn-fb.focus, -.btn-fb.disabled:active, -.btn-fb[disabled]:active, -fieldset[disabled] .btn-fb:active, -.btn-fb.disabled.active, -.btn-fb[disabled].active, -fieldset[disabled] .btn-fb.active { - background-color: #3a5795; - border-color: transparent; -} -.btn-fb .badge { - color: #3a5795; - background-color: #ffffff; -} -/***** TABS & ACCORDIONS *****/ -.tab-side-wrapper { - background-color: #fff; - position: relative; - margin: 0 0 20px; - min-height: 136px; - border-radius: 2px; -} -.tab-side-wrapper .tab-left, -.tab-side-wrapper .tab-right { - padding: 0; - position: absolute; - bottom: 0; - top: 0; - background-color: #9fa8bc; -} -.tab-side-wrapper .tab-left { - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.tab-side-wrapper .nav-stacked > li > a { - border-radius: 0; - text-transform: uppercase; - color: rgba(255, 255, 255, 0.8); - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-size: 12px; -} -.tab-side-wrapper .nav-stacked > li > a:hover, -.tab-side-wrapper .nav-stacked > li > a:focus { - color: #fff; - background-color: #909bb1; -} -.tab-side-wrapper .nav-stacked > li:first-child > a { - border-top-left-radius: 2px; -} -.tab-side-wrapper .nav-stacked > li:last-child > a { - border-bottom-left-radius: 2px; -} -.tab-side-wrapper .nav-stacked > li.active > a, -.tab-side-wrapper .nav-stacked > li.active > a:hover, -.tab-side-wrapper .nav-stacked > li.active > a:focus { - background-color: #fff; - color: #657390; -} -.tab-side-wrapper .nav-stacked > li + li { - margin: 0; -} -.tab-side-wrapper .tab-right { - right: 0; - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.tab-side-wrapper .tab-right .nav-stacked > li:first-child > a { - border-top-left-radius: 0; - border-top-right-radius: 2px; -} -.tab-side-wrapper .tab-right .nav-stacked > li:last-child > a { - border-bottom-left-radius: 0; - border-bottom-right-radius: 2px; -} -.tab-side-wrapper .tab-main { - padding: 0; -} -.tab-side-wrapper .tab-pane { - background-color: transparent; -} -.nav-primary { - background-color: #2574ab; -} -.nav-primary > li > a:hover, -.nav-primary > li > a:focus { - background-color: #206696; -} -.nav-primary > li.active > a, -.nav-primary > li.active > a:hover, -.nav-primary > li.active > a:focus { - color: #2574ab; -} -.nav-success { - background-color: #4daf7c; -} -.nav-success > li > a:hover, -.nav-success > li > a:focus { - background-color: #03a678; -} -.nav-success > li.active > a, -.nav-success > li.active > a:hover, -.nav-success > li.active > a:focus { - color: #03a678; -} -.nav-warning { - background-color: #e6ad5c; -} -.nav-warning > li > a:hover, -.nav-warning > li > a:focus { - background-color: #e3a246; -} -.nav-warning > li.active > a, -.nav-warning > li.active > a:hover, -.nav-warning > li.active > a:focus { - color: #e6ad5c; -} -.nav-danger { - background-color: #d9534f; -} -.nav-danger > li > a:hover, -.nav-danger > li > a:focus { - background-color: #d43f3a; -} -.nav-danger > li.active > a, -.nav-danger > li.active > a:hover, -.nav-danger > li.active > a:focus { - color: #d9534f; -} -.nav-info { - background-color: #5bc0de; -} -.nav-info > li > a:hover, -.nav-info > li > a:focus { - background-color: #46b8da; -} -.nav-info > li.active > a, -.nav-info > li.active > a:hover, -.nav-info > li.active > a:focus { - color: #5bc0de; -} -.nav-inverse { - background-color: #3b4354; -} -.nav-inverse > li > a:hover, -.nav-inverse > li > a:focus { - background-color: #313745; -} -.nav-inverse > li.active > a, -.nav-inverse > li.active > a:hover, -.nav-inverse > li.active > a:focus { - color: #3b4354; -} -.nav-line { - background-color: transparent; - border-bottom: 1px solid #dbdfe6; -} -.nav-line > li > a { - color: #657390; - padding-top: 0; - padding-bottom: 10px; -} -.nav-line > li > a:hover, -.nav-line > li > a:focus { - background-color: transparent; - color: #262b36; -} -@media (max-width: 480px) { - .nav-line > li > a { - padding-left: 5px; - padding-right: 5px; - } -} -.nav-line > li.active > a, -.nav-line > li.active > a:hover, -.nav-line > li.active > a:focus { - color: #259dab; - background-color: transparent; - -webkit-box-shadow: 0 1px 0 #259dab; - box-shadow: 0 1px 0 #259dab; -} -.nav-line + .tab-content > .tab-pane { - padding: 20px 0 0; - background-color: transparent; -} -.nav-line.nav-justified { - border-bottom: 1px solid #dbdfe6; -} -@media (max-width: 480px) { - .nav-line.nav-justified { - border-bottom: 0; - } -} -/***** GRAPHS & CHARTS *****/ -.tooltipflot { - background-color: rgba(0, 0, 0, 0.75); - font-size: 11px; - color: #fff; - padding: 3px 10px; - border-radius: 2px; -} -.jqstooltip { - min-height: 25px; - border: 0; - min-width: 30px; - height: auto !important; - width: auto !important; -} -.panel-morris .body-chart { - height: 300px; -} -.panel-morris .body-chart > svg { - width: 100% !important; -} -.tinystat { - display: inline-block; -} -.tinystat .chart { - margin-right: 5px; -} -.tinystat .chart, -.tinystat .datainfo { - display: inline-block; - vertical-align: middle; -} -.tinystat .text-muted { - text-transform: uppercase; - font-size: 10px; -} -.tinystat h4 { - margin: 0; - color: #262b36; - font-weight: bold; - line-height: normal; - font-size: 16px; -} -/***** PANELS & WIDGETS *****/ -.panel-options { - position: absolute; - top: 15px; - right: 20px; - padding: 0; - margin: 0; -} -.panel-options > li { - display: block; - float: left; - list-style: none; -} -.panel-options > li > a { - color: #bdc3d1; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.panel-options > li > a > i { - display: inline-block; - vertical-align: middle; -} -.panel-options > li > a > i.fa-refresh { - font-size: 11px; -} -.panel-options > li > a > i.fa-remove { - font-size: 13px; -} -.panel-options > li > a:hover, -.panel-options > li > a:focus { - cursor: pointer; - color: #818da7; -} -.panel-options > li + li { - margin-left: 5px; -} -.panel-inverse { - border-color: transparent; -} -.panel-inverse > .panel-heading { - color: #ffffff; - background-color: #2a2a2a; - border-color: transparent; -} -.panel-inverse > .panel-heading + .panel-collapse > .panel-body { - border-top-color: transparent; -} -.panel-inverse > .panel-heading .badge { - color: #505b72; - background-color: #ffffff; -} -.panel-inverse > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: transparent; -} -.panel-default .panel-options > li > a, -.panel-primary .panel-options > li > a, -.panel-success .panel-options > li > a, -.panel-warning .panel-options > li > a, -.panel-danger .panel-options > li > a, -.panel-info .panel-options > li > a, -.panel-inverse .panel-options > li > a { - color: rgba(255, 255, 255, 0.5); -} -.panel-default .panel-options > li > a:hover, -.panel-primary .panel-options > li > a:hover, -.panel-success .panel-options > li > a:hover, -.panel-warning .panel-options > li > a:hover, -.panel-danger .panel-options > li > a:hover, -.panel-info .panel-options > li > a:hover, -.panel-inverse .panel-options > li > a:hover, -.panel-default .panel-options > li > a:focus, -.panel-primary .panel-options > li > a:focus, -.panel-success .panel-options > li > a:focus, -.panel-warning .panel-options > li > a:focus, -.panel-danger .panel-options > li > a:focus, -.panel-info .panel-options > li > a:focus, -.panel-inverse .panel-options > li > a:focus { - color: rgba(255, 255, 255, 0.8); -} -.panel-primary-full { - background-color: #2574ab; - color: rgba(255, 255, 255, 0.8); -} -.panel-primary-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-primary-full .panel-options > li > a:hover, -.panel-primary-full .panel-options > li > a:focus { - color: #fff; -} -.panel-primary-full .panel-heading { - background-color: transparent; -} -.panel-primary-full .panel-heading .panel-title { - color: #fff; -} -.panel-primary-full .form-control { - border-color: transparent; -} -.panel-primary-full .panel-body .panel-title, -.panel-primary-full .panel-body h1, -.panel-primary-full .panel-body h2, -.panel-primary-full .panel-body h3, -.panel-primary-full .panel-body h4, -.panel-primary-full .panel-body h5, -.panel-primary-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-primary-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-primary-full .panel-body a:hover, -.panel-primary-full .panel-body a:focus { - color: #fff; -} -.panel-primary-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-success-full { - background-color: #4daf7c; - color: rgba(255, 255, 255, 0.8); -} -.panel-success-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-success-full .panel-options > li > a:hover, -.panel-success-full .panel-options > li > a:focus { - color: #fff; -} -.panel-success-full .panel-heading { - background-color: transparent; -} -.panel-success-full .panel-heading .panel-title { - color: #fff; -} -.panel-success-full .form-control { - border-color: transparent; -} -.panel-success-full .panel-body .panel-title, -.panel-success-full .panel-body h1, -.panel-success-full .panel-body h2, -.panel-success-full .panel-body h3, -.panel-success-full .panel-body h4, -.panel-success-full .panel-body h5, -.panel-success-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-success-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-success-full .panel-body a:hover, -.panel-success-full .panel-body a:focus { - color: #fff; -} -.panel-success-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-warning-full { - background-color: #e6ad5c; - color: rgba(255, 255, 255, 0.8); -} -.panel-warning-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-warning-full .panel-options > li > a:hover, -.panel-warning-full .panel-options > li > a:focus { - color: #fff; -} -.panel-warning-full .panel-heading { - background-color: transparent; -} -.panel-warning-full .panel-heading .panel-title { - color: #fff; -} -.panel-warning-full .form-control { - border-color: transparent; -} -.panel-warning-full .panel-body .panel-title, -.panel-warning-full .panel-body h1, -.panel-warning-full .panel-body h2, -.panel-warning-full .panel-body h3, -.panel-warning-full .panel-body h4, -.panel-warning-full .panel-body h5, -.panel-warning-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-warning-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-warning-full .panel-body a:hover, -.panel-warning-full .panel-body a:focus { - color: #fff; -} -.panel-warning-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-danger-full { - background-color: #d9534f; - color: rgba(255, 255, 255, 0.8); -} -.panel-danger-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-danger-full .panel-options > li > a:hover, -.panel-danger-full .panel-options > li > a:focus { - color: #fff; -} -.panel-danger-full .panel-heading { - background-color: transparent; -} -.panel-danger-full .panel-heading .panel-title { - color: #fff; -} -.panel-danger-full .form-control { - border-color: transparent; -} -.panel-danger-full .panel-body .panel-title, -.panel-danger-full .panel-body h1, -.panel-danger-full .panel-body h2, -.panel-danger-full .panel-body h3, -.panel-danger-full .panel-body h4, -.panel-danger-full .panel-body h5, -.panel-danger-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-danger-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-danger-full .panel-body a:hover, -.panel-danger-full .panel-body a:focus { - color: #fff; -} -.panel-danger-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-info-full { - background-color: #5bc0de; - color: rgba(255, 255, 255, 0.8); -} -.panel-info-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-info-full .panel-options > li > a:hover, -.panel-info-full .panel-options > li > a:focus { - color: #fff; -} -.panel-info-full .panel-heading { - background-color: transparent; -} -.panel-info-full .panel-heading .panel-title { - color: #fff; -} -.panel-info-full .form-control { - border-color: transparent; -} -.panel-info-full .panel-body .panel-title, -.panel-info-full .panel-body h1, -.panel-info-full .panel-body h2, -.panel-info-full .panel-body h3, -.panel-info-full .panel-body h4, -.panel-info-full .panel-body h5, -.panel-info-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-info-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-info-full .panel-body a:hover, -.panel-info-full .panel-body a:focus { - color: #fff; -} -.panel-info-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.panel-inverse-full { - /*background-color: #262b36;*/ - background-color: #2a2a2a; - color: rgba(255, 255, 255, 0.8); -} -.panel-inverse-full .panel-options > li > a { - color: rgba(255, 255, 255, 0.7); -} -.panel-inverse-full .panel-options > li > a:hover, -.panel-inverse-full .panel-options > li > a:focus { - color: #fff; -} -.panel-inverse-full .panel-heading { - background-color: transparent; -} -.panel-inverse-full .panel-heading .panel-title { - color: #fff; -} -.panel-inverse-full .form-control { - border-color: transparent; -} -.panel-inverse-full .panel-body .panel-title, -.panel-inverse-full .panel-body h1, -.panel-inverse-full .panel-body h2, -.panel-inverse-full .panel-body h3, -.panel-inverse-full .panel-body h4, -.panel-inverse-full .panel-body h5, -.panel-inverse-full .panel-body h6 { - color: #fff; - font-weight: 500; -} -.panel-inverse-full .panel-body a { - color: rgba(255, 255, 255, 0.7); -} -.panel-inverse-full .panel-body a:hover, -.panel-inverse-full .panel-body a:focus { - color: #fff; -} -.panel-inverse-full .panel-footer { - padding-top: 0; - background-color: transparent; -} -.or { - color: rgba(255, 255, 255, 0.8); - font-size: 11px; - text-align: center; - margin: 20px 0; - font-weight: 700; - letter-spacing: 1px; - text-transform: uppercase; - position: relative; -} -.or:after { - content: ''; - position: absolute; - width: 45%; - height: 1px; - background-color: rgba(255, 255, 255, 0.1); - top: 8px; - right: 0; -} -.or:before { - content: ''; - position: absolute; - width: 45%; - height: 1px; - background-color: rgba(255, 255, 255, 0.1); - top: 8px; - left: 0; -} -.bg-white { - background-color: #fff; -} -.page-title { - font-weight: 400; - margin: 0 0 20px; - line-height: normal; - color: #262b36; - padding: 15px 0 17px; - border-top: 1px solid #c3c9d5; - border-bottom: 1px solid #c3c9d5; -} -.well.primary, -.well.success, -.well.warning, -.well.danger, -.well.info, -.well.inverse { - color: rgba(255, 255, 255, 0.8); -} -.well.primary h1, -.well.success h1, -.well.warning h1, -.well.danger h1, -.well.info h1, -.well.inverse h1, -.well.primary h2, -.well.success h2, -.well.warning h2, -.well.danger h2, -.well.info h2, -.well.inverse h2, -.well.primary h3, -.well.success h3, -.well.warning h3, -.well.danger h3, -.well.info h3, -.well.inverse h3, -.well.primary h4, -.well.success h4, -.well.warning h4, -.well.danger h4, -.well.info h4, -.well.inverse h4, -.well.primary h5, -.well.success h5, -.well.warning h5, -.well.danger h5, -.well.info h5, -.well.inverse h5, -.well.primary h6, -.well.success h6, -.well.warning h6, -.well.danger h6, -.well.info h6, -.well.inverse h6 { - color: #fff; - margin-top: 0; - font-weight: 500; -} -.well.primary p:last-child, -.well.success p:last-child, -.well.warning p:last-child, -.well.danger p:last-child, -.well.info p:last-child, -.well.inverse p:last-child { - margin-bottom: 0; -} -.well.primary { - background-color: #2574ab; -} -.well.success { - background-color: #259dab; -} -.well.warning { - background-color: #e6ad5c; -} -.well.danger { - background-color: #d9534f; -} -.well.info { - background-color: #5bc0de; -} -.well.inverse { - background-color: #262b36; -} -.email-options { - position: fixed; - top: 64px; - left: 0; - width: 360px; - padding: 12px 15px; - background-color: #bac1ce; -} -@media (min-width: 992px) { - .email-options { - left: 280px; - } -} -@media (max-width: 768px) { - .email-options { - width: 320px; - } -} -@media (max-width: 640px) { - .email-options { - position: relative; - width: auto; - top: 0; - } -} -.email-options .settings { - position: absolute; - top: 6px; - right: 5px; -} -.email-options .settings > a { - color: #5d616d; - font-size: 14px; - padding: 2px 6px 6px; - display: block; - float: left; - border-radius: 2px; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.email-options .settings > a:hover, -.email-options .settings > a:focus { - background-color: #9da7b8; - color: #505b72; -} -.email-options .settings > a > i { - width: 16px; - text-align: center; - vertical-align: middle; - display: inline-block; -} -.email-options .settings:hover, -.email-options .settings:focus { - color: #262b36; -} -.markstar { - cursor: pointer; - font-size: 16px; - color: #9fa8bc; -} -.markstar.starred { - color: #e6ad5c; -} -.emailcontent { - position: fixed; - top: 64px; - left: 0; - bottom: 0; - width: 360px; - margin-top: 42px; - overflow-y: auto; - overflow-x: hidden; -} -@media (min-width: 992px) { - .emailcontent { - left: 280px; - } -} -@media (max-width: 768px) { - .emailcontent { - width: 320px; - } -} -@media (max-width: 640px) { - .emailcontent { - position: relative; - width: auto; - margin-top: 0; - top: 0; - } -} -.emailcontent .list-left { - float: left; -} -.emailcontent .list-left .markstar { - display: block; - margin-top: 5px; -} -.emailcontent .list-left .attachment { - display: block; - font-size: 14px; - color: #9fa8bc; -} -.emailcontent .ckbox { - display: inline-block; - margin-bottom: 0; -} -.emailcontent .ckbox span:before { - border: 0; -} -.emailcontent .list-group .list-group-item { - border-left: 0; - border-right: 0; - padding-top: 20px; - padding-bottom: 20px; - background-color: transparent; - border-color: #fff; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.emailcontent .list-group .list-group-item:hover, -.emailcontent .list-group .list-group-item:focus { - cursor: pointer; - background-color: #e4e7ec; -} -.emailcontent .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.emailcontent .list-group .list-group-item:last-child { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.emailcontent .list-group .list-group-item .media { - margin-top: 0; - padding-left: 10px; -} -.emailcontent .list-group .list-group-item .media .media-left { - padding-right: 10px; -} -.emailcontent .list-group .list-group-item .media .media-object { - width: 32px; -} -.emailcontent .list-group .list-group-item .media .media-body h5:not(.media-heading) { - margin: 0; - color: #3b4354; - font-size: 13px; - font-weight: 500; -} -.emailcontent .list-group .list-group-item .media .media-body h5.media-heading { - margin-bottom: 3px; - font-weight: normal; - font-size: 12px; - color: #505b72; -} -.emailcontent .list-group .list-group-item .media .media-body span { - font-size: 11px; - color: #909bb1; - margin-top: -2px; -} -.emailcontent .list-group .list-group-item .media p { - margin: 8px 0 0; - color: #505b72; - font-size: 12px; -} -.emailcontent .list-group .list-group-item.unread { - background-color: #fcfcfd; -} -.emailcontent .list-group .list-group-item.unread .ckbox span:before { - border: 1px solid #d8dce3; -} -.emailcontent .list-group .list-group-item.unread + .unread { - border-color: #eaecf0; -} -.emailcontent .list-group .list-group-item.active { - background-color: #d8f3f7; -} -.emailcontent .list-group .list-group-item.active .media-body h5 { - color: #fff; -} -.emailcontent .list-group .list-group-item.selected { - background-color: #85dae4; -} -.emailcontent .list-group .list-group-item.selected.active .ckbox span:before { - border: 0; -} -.nomail { - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-weight: 300; - color: #bdc3d1; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - text-align: center; -} -@media (max-width: 992px) { - .nomail { - font-size: 18px; - } -} -.contentpanel.emailpanel { - background-color: #fff; - position: fixed; - top: 64px; - left: 360px; - bottom: 0; - right: 0; - overflow: auto; -} -@media (min-width: 992px) { - .contentpanel.emailpanel { - left: 580px; - } -} -@media (max-width: 768px) { - .contentpanel.emailpanel { - left: 320px; - } -} -@media (max-width: 640px) { - .contentpanel.emailpanel { - position: relative; - display: none; - } -} -.email-header .media { - margin-top: 0; -} -.email-header .media .media-left { - padding-right: 10px; -} -.email-header .media .media-object { - width: 36px; -} -.email-header .media .media-heading { - font-size: 14px; -} -@media (max-width: 992px) { - .email-header .pull-right { - width: 100%; - float: none !important; - border-bottom: 1px solid #dbdfe6; - padding-bottom: 15px; - margin-bottom: 20px; - } - .email-header .media { - width: 100%; - } -} -.email-subject { - font-weight: normal; - margin-bottom: 20px; -} -.email-subject .markstar { - margin-left: 5px; - font-size: 16px; -} -.email-subject .markstar > i { - vertical-align: top; - margin-top: 2px; -} -.list-attachments { - margin-top: 10px; -} -.list-attachments > li i { - display: inline-block; - vertical-align: top; - font-size: 14px; - margin-right: 5px; -} -.list-attachments > li + li { - margin-top: 8px; -} -.email-editor .note-editor { - border-color: transparent; -} -.email-editor .note-editor .note-toolbar { - background-color: transparent; - padding-bottom: 15px; - border-bottom-color: transparent; -} -.email-editor .note-editor .note-toolbar > .btn-group:first-child { - margin-left: 0; -} -.email-editor .note-editor .note-editable { - border: 1px solid #bdc3d1; -} -.email-editor .note-editor .note-statusbar { - background-color: transparent; -} -.email-editor .note-editor .note-statusbar .note-resizebar { - border-top: 0; -} -.table > thead > tr > td, -.table > thead > tr > th { - padding-top: 13px; - padding-bottom: 13px; -} -.table > .success > tr > th, -.table > .success > tr > td { - background-color: #505b72; - color: #fff; - border-color: rgba(255, 255, 255, 0.25); -} -.table > .success > tr:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.table > .success > tr:first-child > th:first-child, -.table > .success > tr:first-child > td:first-child { - border-top-left-radius: 0; -} -.table > .success > tr:first-child > th:last-child, -.table > .success > tr:first-child > td:last-child { - border-top-right-radius: 0; -} -.table-options { - list-style: none; - margin: 0; - padding: 0; - text-align: center; -} -.table-options > li { - display: inline-block; - margin-left: 5px; -} -.table-options > li:first-child { - margin-left: 0; -} -.table-options > li > a { - color: #9fa8bc; - font-size: 14px; - line-height: 0; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.table-options > li > a > i { - line-height: 0; -} -.table-options > li > a:hover, -.table-options > li > a:focus { - color: #657390; -} -.table-striped-col > thead > tr th:nth-of-type(even), -.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-striped-col > thead > tr td:nth-of-type(even), -.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #e4e7ec; -} -.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #f6f7f8; -} -.table-primary { - background-color: #e9f3fa; -} -.table-primary > thead > tr > th, -.table-primary > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #2574ab; - color: #fff; -} -.table-primary > tbody > tr > th, -.table-primary > tbody > tr > td { - color: rgba(19, 59, 87, 0.8); -} -.table-primary > tbody > tr.info > th, -.table-primary > tbody > tr.info > td { - background-color: #d0e6f5; -} -.table-primary.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #d8eaf7; -} -.table-primary.table-hover > tbody > tr:hover { - background-color: #d0e6f5; -} -.table-primary.table-hover > tbody > tr.info:hover > th, -.table-primary.table-hover > tbody > tr.info:hover > td { - background-color: #c8e1f3; -} -.table-primary.table-striped-col > thead > tr th:nth-of-type(even), -.table-primary.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-primary.table-striped-col > thead > tr td:nth-of-type(even), -.table-primary.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #226b9e; -} -.table-primary.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-primary.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #d8eaf7; -} -.table-success { - background-color: #e9f8fa; -} -.table-success > thead > tr > th, -.table-success > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #259dab; - color: #fff; -} -.table-success > tbody > tr > th, -.table-success > tbody > tr > td { - color: rgba(19, 80, 87, 0.8); -} -.table-success > tbody > tr.info > th, -.table-success > tbody > tr.info > td { - background-color: #d0f1f5; -} -.table-success.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #d8f3f7; -} -.table-success.table-hover > tbody > tr:hover { - background-color: #d0f1f5; -} -.table-success.table-hover > tbody > tr.info:hover > th, -.table-success.table-hover > tbody > tr.info:hover > td { - background-color: #c8eef3; -} -.table-success.table-striped-col > thead > tr th:nth-of-type(even), -.table-success.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-success.table-striped-col > thead > tr td:nth-of-type(even), -.table-success.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #22919e; -} -.table-success.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-success.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #d8f3f7; -} -.table-warning { - background-color: #fdf9f2; -} -.table-warning > thead > tr > th, -.table-warning > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #bf7c1d; - color: #fff; -} -.table-warning > tbody > tr > th, -.table-warning > tbody > tr > td { - color: rgba(102, 67, 16, 0.8); -} -.table-warning > tbody > tr.info > th, -.table-warning > tbody > tr.info > td { - background-color: #f9ebd8; -} -.table-warning.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #faf0e1; -} -.table-warning.table-hover > tbody > tr:hover { - background-color: #f9ebd8; -} -.table-warning.table-hover > tbody > tr.info:hover > th, -.table-warning.table-hover > tbody > tr.info:hover > td { - background-color: #f8e7cf; -} -.table-warning.table-striped-col > thead > tr th:nth-of-type(even), -.table-warning.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-warning.table-striped-col > thead > tr td:nth-of-type(even), -.table-warning.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #b1731b; -} -.table-warning.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-warning.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #faf0e1; -} -.table-danger { - background-color: #fcf3f3; -} -.table-danger > thead > tr > th, -.table-danger > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #b52b27; - color: #fff; -} -.table-danger > tbody > tr > th, -.table-danger > tbody > tr > td { - color: rgba(97, 23, 21, 0.8); -} -.table-danger > tbody > tr.info > th, -.table-danger > tbody > tr.info > td { - background-color: #f7dad9; -} -.table-danger.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9e2e2; -} -.table-danger.table-hover > tbody > tr:hover { - background-color: #f7dad9; -} -.table-danger.table-hover > tbody > tr.info:hover > th, -.table-danger.table-hover > tbody > tr.info:hover > td { - background-color: #f5d2d1; -} -.table-danger.table-striped-col > thead > tr th:nth-of-type(even), -.table-danger.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-danger.table-striped-col > thead > tr td:nth-of-type(even), -.table-danger.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #a82824; -} -.table-danger.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-danger.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #f9e2e2; -} -.table-inverse { - background-color: #e7e9ee; -} -.table-inverse > thead > tr > th, -.table-inverse > tfoot > tr > th { - border-color: rgba(255, 255, 255, 0.3); - background-color: #505b72; - color: #fff; -} -.table-inverse > tbody > tr > th, -.table-inverse > tbody > tr > td { - color: rgba(38, 43, 54, 0.8); -} -.table-inverse > tbody > tr.info > th, -.table-inverse > tbody > tr.info > td { - background-color: #d5d9e2; -} -.table-inverse.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #dbdfe6; -} -.table-inverse.table-hover > tbody > tr:hover { - background-color: #d5d9e2; -} -.table-inverse.table-hover > tbody > tr.info:hover > th, -.table-inverse.table-hover > tbody > tr.info:hover > td { - background-color: #cfd4dd; -} -.table-inverse.table-striped-col > thead > tr th:nth-of-type(even), -.table-inverse.table-striped-col > tfoot > tr th:nth-of-type(even), -.table-inverse.table-striped-col > thead > tr td:nth-of-type(even), -.table-inverse.table-striped-col > tfoot > tr td:nth-of-type(even) { - background-color: #4a5469; -} -.table-inverse.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) th:nth-of-type(even), -.table-inverse.table-striped-col > tbody > tr:not(.active):not(.success):not(.info):not(.warning):not(.danger) td:nth-of-type(even) { - background-color: #dbdfe6; -} -.map-wrapper { - background-color: #c9cfd8; - border-radius: 2px; - height: 300px; -} -.panel-map-location .map-wrapper { - height: 250px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.panel-map-location strong { - display: block; - font-size: 16px; - color: #3b4354; -} -.panel-map-location .media { - margin-bottom: 20px; -} -.panel-map-location .media address { - margin: 0; -} -.panel-map-location .media .media-heading { - font-size: 14px; - margin-bottom: 8px; -} -.panel-map-location .btn-group > .btn > i { - line-height: normal; -} -.panel-map-sidebar .row { - margin: 0; -} -.panel-map-sidebar .map-sidebar { - padding-left: 0; - padding-right: 0; -} -.panel-map-sidebar .main { - padding: 10px 0 10px 10px; -} -.panel-map-sidebar form { - margin-top: 15px; -} -.panel-map-sidebar form .control-label { - display: block; -} -.panel-map-sidebar form .form-group { - margin-bottom: 15px; -} -.panel-map-sidebar .btn-group > .btn { - min-height: 38px; -} -.panel-map-sidebar .map-wrapper { - height: 408px; -} -/********** PAGES **********/ -/***** ASSET MANAGER *****/ -.well-asset-options { - background-color: #505b72; -} -@media (max-width: 360px) { - .well-asset-options { - display: none; - } -} -.well-asset-options .btn-toolbar { - margin: 0; -} -@media (max-width: 1024px) { - .well-asset-options .btn-toolbar { - float: none !important; - margin-bottom: 20px; - } -} -@media (max-width: 1024px) { - .well-asset-options .btn { - padding-left: 10px; - padding-right: 10px; - } -} -.btn-toolbar-media-manager { - margin-bottom: 20px; -} -.btn-toolbar-media-manager .btn { - border-color: transparent; -} -.btn-toolbar-media-manager .btn:hover, -.btn-toolbar-media-manager .btn:focus { - border-color: transparent; -} -.btn-toolbar-media-manager .btn > i { - font-size: 14px; - vertical-align: baseline; - line-height: 0; - margin-right: 5px; -} -.btn-toolbar-media-manager .btn + .btn { - margin-left: 1px; -} -.filemanager .thmb { - background-color: #fff; - border-radius: 2px; - padding: 10px; - margin-bottom: 20px; - position: relative; -} -.filemanager .thmb:after { - clear: both; - display: block; - content: ''; -} -.filemanager .ckbox { - position: absolute; - top: 15px; - left: 15px; - display: none; -} -.filemanager .ckbox span:before { - border: 0; -} -.filemanager .fm-group { - position: absolute; - top: 15px; - right: 15px; - display: none; -} -.filemanager .fm-toggle { - padding: 1px 4px; - line-height: normal; - background-color: #fff; - border-radius: 2px; - border: 0; -} -.filemanager .fm-toggle:hover, -.filemanager .fm-toggle:focus, -.filemanager .fm-toggle:active { - background-color: #fff !important; -} -.filemanager .fm-menu { - border-color: #dbdfe6; - min-width: 120px; -} -.filemanager .fm-menu a { - color: #696c74; -} -.filemanager .fm-menu i { - margin-right: 7px; - width: 16px; - font-size: 14px; -} -.filemanager .thmb-prev { - background-color: #eee; - overflow: hidden; -} -.filemanager .thmb-prev a { - display: block; -} -.filemanager .fm-title { - margin-bottom: 2px; - font-weight: 500; -} -.filemanager .fm-title a { - overflow-x: hidden; - text-overflow: ellipsis; - display: block; -} -.fm-sidebar { - padding-left: 10px; -} -.fm-sidebar .panel-title a { - color: #9fa8bc; - font-size: 11px; - font-weight: 600; - letter-spacing: normal; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.fm-sidebar .panel-title a:hover { - text-decoration: none; - color: #818da7; -} -.fm-sidebar .tag-list { - list-style: none; - padding: 0; - margin: 0; -} -.fm-sidebar .tag-list li { - float: left; - margin-right: 5px; - margin-bottom: 5px; -} -.fm-sidebar .tag-list li a { - display: block; - padding: 2px 7px; - font-size: 11px; - background-color: #fcfcfc; - border-radius: 2px; - color: #666; -} -.fm-sidebar .tag-list li a:hover { - color: #fff; - text-decoration: none; - background-color: #2574ab; -} -.folder-list { - list-style: none; - padding: 0; - margin: 0; -} -.folder-list li { - display: block; - border-bottom: 1px solid #eaecf0; -} -.folder-list li a { - display: block; - padding: 9px 0 10px; - color: #657390; - font-weight: 500; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.folder-list li a:hover { - color: #262b36; - text-decoration: none; -} -.folder-list li i { - margin-right: 10px; - width: 16px; - font-size: 14px; -} -.folder-list li:first-child > a { - padding-top: 0; -} -.folder-list li:last-child { - border-bottom: 0; -} -.folder-list li:last-child > a { - padding-bottom: 0; -} -/****** PEOPLE DIRECTORY ******/ -.people-list .people-options { - padding: 15px; - margin-bottom: 20px; - background-color: #464f63; - border-radius: 2px; -} -@media (max-width: 480px) { - .people-list .people-options .btn-toolbar { - display: none; - } -} -.people-list .people-options .btn-toolbar .btn { - font-size: 11px; -} -.people-list .people-options .btn-toolbar .btn.btn-danger { - color: rgba(255, 255, 255, 0.9); -} -.people-list .people-options .btn-toolbar .btn > i { - font-size: 14px; -} -.people-list .people-options .btn-default { - border-color: transparent; -} -.people-list .people-options .btn-default:hover, -.people-list .people-options .btn-default:focus { - border-color: transparent; -} -.people-list .people-count { - padding-top: 10px; - font-weight: 400; - color: #9fa8bc; -} -.people-list .people-count > strong { - font-weight: 500; - color: #dbdfe6; - margin: 0 3px; -} -.people-list .people-pager { - margin-left: 15px; -} -.people-list .people-pager > .btn { - font-size: 14px; - margin-left: 1px; - line-height: 17px; - border-color: transparent; -} -.people-list .people-pager > .btn:first-child { - margin-left: 0; -} -.people-list .people-pager > .btn:hover, -.people-list .people-pager > .btn:focus { - border-color: transparent; -} -/***** TIMELINE *****/ -.timeline-wrapper { - margin-left: 123px; - position: relative; - border-left: 2px solid #657390; - padding-left: 40px; -} -@media (max-width: 640px) { - .timeline-wrapper { - border-left: 0; - padding-left: 0; - margin-left: 0; - } -} -.timeline-wrapper .timeline-date { - position: relative; - background-color: #657390; - width: 250px; - padding: 10px 25px; - text-transform: uppercase; - font-weight: 600; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - color: #fff; - text-align: center; - letter-spacing: .5px; - border-radius: 2px; - margin-bottom: 40px; - margin-left: -165px; -} -@media (max-width: 640px) { - .timeline-wrapper .timeline-date { - padding-left: 10px; - padding-right: 10px; - width: auto; - margin-left: 0; - margin-top: 20px; - } -} -.timeline-wrapper .timeline-date > a { - color: rgba(255, 255, 255, 0.8); - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.timeline-wrapper .timeline-date > a:hover, -.timeline-wrapper .timeline-date > a:focus { - color: #fff; -} -.timeline-wrapper .panel-post-item { - position: relative; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item { - margin-bottom: 0; - margin-top: 70px; - } -} -.timeline-wrapper .panel-post-item:before { - content: ''; - width: 40px; - height: 40px; - border-radius: 100px; - border: 2px solid #657390; - position: absolute; - top: 15px; - left: -62px; - background-color: #d8dce3; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item:before { - top: -55px; - left: 0; - } -} -.timeline-wrapper .panel-post-item .panel-heading:before { - border-right: 8px solid #fff; - border-top: 8px solid transparent; - border-bottom: 8px solid transparent; - content: ""; - display: inline-block; - left: -8px; - position: absolute; - top: 27px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item .panel-heading:before { - display: none; - } -} -.timeline-wrapper .panel-post-item:after { - font-family: 'FontAwesome'; - position: absolute; - left: -48px; - font-size: 14px; - color: #657390; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item:after { - left: 13px; - } -} -.timeline-wrapper .panel-post-item.status:after { - content: '\f040'; - top: 25px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item.status:after { - top: -45px; - } -} -.timeline-wrapper .panel-post-item.commented:after { - content: '\f075'; - top: 24px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item.commented:after { - top: -46px; - } -} -.timeline-wrapper .panel-post-item.pictures:after { - content: '\f03e'; - top: 25px; - left: -50px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item.pictures:after { - left: 12px; - top: -45px; - } -} -.timeline-wrapper .panel-post-item.twitter:after { - content: '\f099'; - top: 25px; - left: -49px; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item.twitter:after { - left: 13px; - top: -45px; - } -} -.timeline-wrapper .panel-post-item .media-time { - position: absolute; - top: 20px; - left: -225px; - font-size: 22px; - letter-spacing: normal; - text-align: right; - font-weight: 400; - color: #505b72; - width: 150px; - text-transform: uppercase; -} -@media (max-width: 640px) { - .timeline-wrapper .panel-post-item .media-time { - left: 0; - top: -50px; - } -} -/***** PROFILE *****/ -.profile-wrapper { - margin: 0; - display: table; - width: 100%; -} -@media (max-width: 1024px) { - .profile-wrapper { - display: block; - width: auto; - } -} -.profile-wrapper .profile-left, -.profile-wrapper .profile-right, -.profile-wrapper .profile-sidebar { - padding: 0; - float: none; - display: table-cell; - vertical-align: top; -} -@media (max-width: 991px) { - .profile-wrapper .profile-left, - .profile-wrapper .profile-right, - .profile-wrapper .profile-sidebar { - display: block; - } -} -.profile-wrapper .profile-left { - background-color: #464f63; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -@media (max-width: 1024px) { - .profile-wrapper .profile-left { - width: 30%; - } -} -@media (max-width: 991px) { - .profile-wrapper .profile-left { - display: table; - width: 100%; - } - .profile-wrapper .profile-left .profile-left-heading, - .profile-wrapper .profile-left .profile-left-body { - display: table-cell; - vertical-align: top; - } - .profile-wrapper .profile-left .profile-left-heading { - width: 40%; - } - .profile-wrapper .profile-left .profile-left-body { - width: 60%; - } -} -@media (max-width: 480px) { - .profile-wrapper .profile-left .profile-left-heading, - .profile-wrapper .profile-left .profile-left-body { - display: block; - width: auto; - } -} -.profile-wrapper .profile-right { - background-color: #fff; - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -@media (max-width: 1024px) { - .profile-wrapper .profile-right { - width: 70%; - } -} -@media (max-width: 991px) { - .profile-wrapper .profile-right { - width: 100%; - margin-top: 20px; - border-top-right-radius: 2px; - border-top-left-radius: 2px; - } -} -.profile-wrapper .profile-right .profile-right-body { - background-color: transparent; - padding: 20px; -} -.profile-wrapper .profile-right .profile-right-body .panel { - border-bottom: 1px solid #dbdfe6; - padding-bottom: 40px; - margin-bottom: 35px; -} -.profile-wrapper .profile-right .profile-right-body .panel-heading { - padding: 0 0 15px; -} -.profile-wrapper .profile-right .profile-right-body .panel-body { - padding: 0 0 15px; - line-height: 18px; -} -.profile-wrapper .profile-right .profile-right-body .panel-footer { - padding: 0; - background-color: transparent; -} -.profile-wrapper .profile-right .profile-right-body .form-group { - margin: 15px 0 0; -} -.profile-wrapper .profile-right .profile-right-body .form-control { - border-color: #bdc3d1; - padding-left: 12px; - border-top-right-radius: 2px; - border-top-left-radius: 2px; -} -.profile-wrapper .profile-sidebar { - padding-left: 20px; -} -@media (min-width: 992px) and (max-width: 1024px) { - .profile-wrapper .profile-sidebar { - width: 100%; - display: block; - float: left; - margin-top: 20px; - padding-left: 0; - } - .profile-wrapper .profile-sidebar .row > div { - width: 50%; - } -} -@media (max-width: 991px) { - .profile-wrapper .profile-sidebar { - padding-left: 0; - margin-top: 20px; - } -} -/***** NOT FOUND PANEL *****/ -.notfoundpanel { - width: 720px; - text-align: center; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -55%); -} -@media (max-width: 640px) { - .notfoundpanel { - width: auto; - position: static; - transform: none; - padding: 20px; - } -} -.notfoundpanel h1 { - font-size: 200px; - font-weight: 700; - line-height: 160px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - color: #3b4354; - margin: 0 0 20px; -} -@media (max-width: 640px) { - .notfoundpanel h1 { - font-size: 100px; - line-height: 100px; - } -} -.notfoundpanel h3 { - margin-top: 0; - font-weight: 300; - font-size: 30px; - color: #505b72; -} -@media (max-width: 640px) { - .notfoundpanel h3 { - font-size: 24px; - } -} -.notfoundpanel h4 { - margin: 30px 0 20px; - font-size: 14px; - font-weight: 500; - line-height: 21px; - color: #5b6781; - letter-spacing: .3px; -} -.notfoundpanel form { - width: 350px; - margin: auto; -} -@media (max-width: 360px) { - .notfoundpanel form { - width: 280px; - } -} -.notfoundpanel .list-inline { - text-align: left; -} -@media (max-width: 560px) { - .notfoundpanel .list-inline > li:last-child { - display: block; - float: none !important; - text-align: left; - margin-top: 10px; - } -} -@media (max-width: 360px) { - .notfoundpanel .list-inline > li { - display: block; - float: none; - } - .notfoundpanel .list-inline > li + li { - margin-top: 5px; - } -} -/***** SIGN IN/UP *****/ -.signwrapper { - background-image: url(../images/photos/bg.jpg); - background-repeat: no-repeat; - background-position: center; - background-attachment: fixed; - background-size: cover; -} -@media (max-width: 767px) { - .signwrapper { - background-image: none; - background-color: rgba(38, 43, 54, 0.9); - } -} -.signwrapper .input-group > .input-group-addon { - background-color: #fff; - border-color: transparent; - padding-right: 0; -} -.signwrapper .input-group > .input-group-addon > i { - color: #262b36; -} -.signwrapper .form-control { - border-color: transparent; - background-color: #fff; -} -.signwrapper .panel-heading { - padding-top: 10px; -} -.signwrapper .panel-body { - padding-bottom: 0; -} -.signwrapper .panel-title { - text-align: center; - color: #fff; - margin-top: 20px; - text-transform: none; - font-weight: 200; - font-size: 20px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - letter-spacing: .7px; -} -.signwrapper .select2-dropdown { - z-index: 400; - border-color: transparent; -} -.signwrapper .select2-container--default .select2-selection--single { - border-color: transparent; -} -.signwrapper .btn-sign { - border-color: rgba(255, 255, 255, 0.3); - color: rgba(255, 255, 255, 0.3); -} -.signwrapper .btn-sign:hover, -.signwrapper .btn-sign:focus { - border-color: rgba(255, 255, 255, 0.7); - color: rgba(255, 255, 255, 0.7); -} -.sign-overlay { - background-image: url(../images/dot.png); - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 100; - opacity: 1; -} -@media (max-width: 767px) { - .sign-overlay { - display: none; - } -} -.signpanel { - background-color: rgba(0, 0, 0, 0.95); - background-image: -webkit-linear-gradient(left, transparent 0%, #1b1f27 100%); - background-image: -o-linear-gradient(left, transparent 0%, #1b1f27 100%); - background-image: linear-gradient(to right, transparent 0%, #1b1f27 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#ff1b1f27', GradientType=1); - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 200; - opacity: .75; -} -@media (max-width: 767px) { - .signpanel { - background-image: none; - background-color: #262b36; - opacity: 1; - } -} -/***** SIGN IN *****/ -.signin { - width: 400px; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - background-color: rgba(38, 43, 54, 0.9); - padding: 20px; - z-index: 300; -} -@media (max-width: 767px) { - .signin { - top: 20px; - left: 0; - transform: none; - width: 400px; - position: relative; - margin: auto; - padding-top: 0; - } -} -@media (max-width: 360px) { - .signin { - width: 320px; - } -} -.signin h1 { - color: #259dab; - text-align: center; - margin: 0; - font-weight: 500; -} -.signin .forgot { - margin: 10px 0 21px; - color: rgba(255, 255, 255, 0.5); - display: inline-block; - -webkit-transition: all 0.2s ease-out 0s; - -o-transition: all 0.2s ease-out 0s; - transition: all 0.2s ease-out 0s; -} -.signin .forgot:hover, -.signin .forgot:focus { - color: #fff; -} -.signin .btn-fb { - color: rgba(255, 255, 255, 0.8); -} -.signin .btn-fb:hover, -.signin .btn-fb:focus { - color: rgba(255, 255, 255, 0.5); -} -/***** SIGN UP *****/ -.signup { - position: absolute; - top: 40px; - left: 50%; - transform: translateX(-50%); - z-index: 300; - width: 900px; -} -@media (max-width: 767px) { - .signup { - top: 20px; - left: 0; - transform: none; - width: 400px; - position: relative; - margin: auto; - padding-top: 0; - } -} -@media (max-width: 360px) { - .signup { - width: 300px; - } -} -.signup h1 { - color: #259dab; - text-align: center; - margin: 0; - font-weight: 500; -} -.signup .panel { - background-color: rgba(38, 43, 54, 0.9); - padding: 20px 20px 40px 20px; -} -@media (max-width: 360px) { - .signup .panel { - padding: 0; - } -} -.signup .row > div { - padding-left: 7px; - padding-right: 7px; -} -.signup .row > div:first-child { - padding-left: 10px; -} -.signup .row > div:last-child { - padding-right: 10px; - color: rgba(255, 255, 255, 0.7); -} -.signup .signtitle { - color: #259dab; - font-weight: 200; - letter-spacing: .5px; - margin-top: 0; -} -.signup .sign-sidebar { - padding: 33px 40px 0; -} -@media (max-width: 767px) { - .signup .sign-sidebar { - display: none; - } -} -.signup .sign-sidebar p { - line-height: 21px; - font-weight: 200; - letter-spacing: .5px; - font-size: 14px; -} -.signup .sign-sidebar h4 { - margin: 0 0 20px; - color: #259dab; -} -.signup .sign-sidebar .panel-title { - text-align: left; - color: #fff; -} -.signup .sign-sidebar .reason { - font-weight: 700; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - font-size: 13px; - text-transform: uppercase; - letter-spacing: 1px; - margin-bottom: 10px; - color: #fff; -} -/***** DASHBOARD *****/ -.dash-left .table > thead > tr > th, -.dash-right .table > thead > tr > th, -.dash-left .table > tbody > tr > th, -.dash-right .table > tbody > tr > th, -.dash-left .table > tfoot > tr > th, -.dash-right .table > tfoot > tr > th, -.dash-left .table > thead > tr > td, -.dash-right .table > thead > tr > td, -.dash-left .table > tbody > tr > td, -.dash-right .table > tbody > tr > td, -.dash-left .table > tfoot > tr > td, -.dash-right .table > tfoot > tr > td { - padding-left: 20px; - padding-right: 20px; -} -@media (min-width: 992px) and (max-width: 1024px) { - .dash-left, - .dash-right { - width: 100%; - } -} -@media (max-width: 768px) { - .dash-right .col-sm-5 { - width: 41.6667%; - } -} -@media (max-width: 640px) { - .dash-right .col-sm-5 { - width: 50%; - float: left; - } -} -@media (max-width: 560px) { - .dash-right .col-sm-5 { - width: auto; - float: none; - } -} -/***** CUSTOM STYLES *****/ -.mb5 { - margin-bottom: 5px; -} -.mb10 { - margin-bottom: 10px; -} -.mb15 { - margin-bottom: 15px; -} -.mb20 { - margin-bottom: 20px; -} -.mb30 { - margin-bottom: 30px; -} -.mb35 { - margin-bottom: 35px; -} -.mb40 { - margin-bottom: 40px; -} -.mr5 { - margin-right: 5px; -} -.mr10 { - margin-right: 10px; -} -.mr20 { - margin-right: 20px; -} -.mr30 { - margin-right: 30px; -} -.mt0 { - margin-top: 0; -} -.mt5 { - margin-top: 5px; -} -.mt10 { - margin-top: 10px; -} -.mt20 { - margin-top: 20px; -} -.ml5 { - margin-left: 5px; -} -.ml10 { - margin-left: 10px; -} -.padding5 { - padding: 5px; -} -.padding10 { - padding: 10px; -} -.nomargin { - margin: 0; -} -.noshadow { - -webkit-box-shadow: none; - box-shadow: none; -} -.nopadding { - padding: 0; -} -.nopaddingtop { - padding-top: 0 !important; -} -.nopaddingbottom { - padding-bottom: 0 !important; -} -.italic { - font-style: italic; -} -.dark { - color: #333; -} -.width100p { - width: 100%; -} -.width20 { - width: 20px; -} -.width30 { - width: 30px; -} -.width50 { - width: 50px; -} -.width60 { - width: 60px; -} -.width70 { - width: 70px; -} -.width80 { - width: 80px; -} -.width100 { - width: 100px; -} -.width120 { - width: 120px; -} -.width200 { - width: 200px; -} -.inblock { - display: inline-block; -} -.dash-title { - padding: 14px 18px; - background-color: #505b72; - border-top-right-radius: 2px; - border-top-left-radius: 2px; - text-transform: uppercase; - font-size: 12px; - font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; - margin-bottom: 1px; - color: rgba(255, 255, 255, 0.9); - text-align: center; -} -.btn-demo .btn { - float: left; - margin: 10px 10px 0 0; - min-width: 100px; -} -.btn-demo .btn.btn-icon { - min-width: 0; -} -.btn-demo:before, -.btn-demo:after { - content: " "; - display: table; -} -.btn-demo:after { - clear: both; -} -.btn-demo:before, -.btn-demo:after { - content: " "; - display: table; -} -.btn-demo:after { - clear: both; -} -.fontawesome-icon-list .col-md-3 { - margin-bottom: 8px; -} -.fontawesome-icon-list i { - font-size: 14px; - width: 16px; - margin-right: 8px; - text-align: center; - color: #262b36; -} -.fonticon-list { - list-style: none; - margin: 20px 0; - padding: 0; -} -.fontawesome-list, -.weathericon-list { - list-style: none; - padding: 0; -} -.fonticon-list li, -.fontawesome-list li, -.weathericon-list li { - display: block; - margin-bottom: 5px; -} -.fonticon-list li span, -.fontawesome-list li span, -.weathericon-list li span { - color: #333333; - vertical-align: middle; - margin-right: 8px; - min-width: 20px; - display: inline-block; - width: 20px; -} -.weathericon-list li span { - font-size: 16px; -} -.tooltip-example .btn, -.popover-example .btn { - margin: 0 5px 5px 0; -} -.flot-chart { - width: 100%; - height: 300px; -} -.nav-wrapper { - border-radius: 2px; - padding: 1px 0; - margin-bottom: 20px; -} -.nav-wrapper.white { - background-color: #fff; -} -.nav-wrapper.quirk { - background-color: #3b4354; -} -@media (max-width: 480px) { - .demo-navwrapper > div { - width: auto; - float: none; - display: block; - } -} -.calendar-widget { - margin-bottom: 20px; -} -.calendar-widget .ui-datepicker-inline { - border-color: transparent; -} -.calendar-widget .ui-datepicker-inline { - max-width: none; -} -.gritter-demo .gritter-item-wrapper > .gritter-item { - z-index: 0; -} -.gritter-demo .gritter-item-wrapper > .gritter-item p { - line-height: 22px; - margin-bottom: 0; -} -.gritter-demo .gritter-item-wrapper > .gritter-item:before { - top: 13px; -} -.signin-demo { - position: static; - transform: none; - width: auto; - background-color: #3b4354; -} -.signin-demo .panel-heading { - padding-top: 10px; -} -.signin-demo .panel-title { - color: #fff; - text-align: center; - margin: 20px 0 0; - text-transform: none; - font-weight: 200; - font-size: 18px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - letter-spacing: .5px; -} -.signin-demo .input-group-addon { - border-color: transparent; - background-color: #fff; - padding-right: 0; -} -.signin-demo .form-control { - border-color: transparent; - background-color: #fff; -} -.demo-colorpicker > div { - margin-bottom: 20px; -} -.demo-colorpicker > div:last-child { - margin-bottom: 0; -} -.paddingtop10 { - padding-top: 10px; -} -.paddingtop15 { - padding-top: 15px; -} -.paddingtop20 { - padding-top: 20px; -} - - -/* perfect-scrollbar v0.6.11 */ -.ps-container { - -ms-touch-action: none; - touch-action: none; - overflow: hidden !important; - -ms-overflow-style: none; } - @supports (-ms-overflow-style: none) { - .ps-container { - overflow: auto !important; } } - @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { - .ps-container { - overflow: auto !important; } } - .ps-container.ps-active-x > .ps-scrollbar-x-rail, - .ps-container.ps-active-y > .ps-scrollbar-y-rail { - display: block; - background-color: transparent; } - .ps-container.ps-in-scrolling { - pointer-events: none; } - .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail { - background-color: #eee; - opacity: 0.9; } - .ps-container.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x { - background-color: #999; } - .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail { - background-color: #eee; - opacity: 0.9; } - .ps-container.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y { - background-color: #999; } - .ps-container > .ps-scrollbar-x-rail { - display: none; - position: absolute; - /* please don't change 'position' */ - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - opacity: 0; - -webkit-transition: background-color .2s linear, opacity .2s linear; - -moz-transition: background-color .2s linear, opacity .2s linear; - -o-transition: background-color .2s linear, opacity .2s linear; - transition: background-color .2s linear, opacity .2s linear; - bottom: 3px; - /* there must be 'bottom' for ps-scrollbar-x-rail */ - height: 8px; } - .ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x { - position: absolute; - /* please don't change 'position' */ - background-color: #aaa; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-transition: background-color .2s linear; - -moz-transition: background-color .2s linear; - -o-transition: background-color .2s linear; - transition: background-color .2s linear; - bottom: 0; - /* there must be 'bottom' for ps-scrollbar-x */ - height: 8px; } - .ps-container > .ps-scrollbar-y-rail { - display: none; - position: absolute; - /* please don't change 'position' */ - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - opacity: 0; - -webkit-transition: background-color .2s linear, opacity .2s linear; - -moz-transition: background-color .2s linear, opacity .2s linear; - -o-transition: background-color .2s linear, opacity .2s linear; - transition: background-color .2s linear, opacity .2s linear; - right: 3px; - /* there must be 'right' for ps-scrollbar-y-rail */ - width: 8px; } - .ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y { - position: absolute; - /* please don't change 'position' */ - background-color: #aaa; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-transition: background-color .2s linear; - -moz-transition: background-color .2s linear; - -o-transition: background-color .2s linear; - transition: background-color .2s linear; - right: 0; - /* there must be 'right' for ps-scrollbar-y */ - width: 8px; } - .ps-container:hover.ps-in-scrolling { - pointer-events: none; } - .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail { - background-color: #eee; - opacity: 0.9; } - .ps-container:hover.ps-in-scrolling.ps-x > .ps-scrollbar-x-rail > .ps-scrollbar-x { - background-color: #999; } - .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail { - background-color: #eee; - opacity: 0.9; } - .ps-container:hover.ps-in-scrolling.ps-y > .ps-scrollbar-y-rail > .ps-scrollbar-y { - background-color: #999; } - .ps-container:hover > .ps-scrollbar-x-rail, - .ps-container:hover > .ps-scrollbar-y-rail { - opacity: 0.6; } - .ps-container:hover > .ps-scrollbar-x-rail:hover { - background-color: #eee; - opacity: 0.9; } - .ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x { - background-color: #999; } - .ps-container:hover > .ps-scrollbar-y-rail:hover { - background-color: #eee; - opacity: 0.9; } - .ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y { - background-color: #999; } - - /* to make scrollbars always visible */ - .always-visible.ps-container > .ps-scrollbar-x-rail, - .always-visible.ps-container > .ps-scrollbar-y-rail { - opacity: 0.6; - } - .always-visible.ps-child > .ps-scrollbar-x-rail, - .always-visible.ps-child > .ps-scrollbar-y-rail { - opacity: 0.6; - } - - -li.info-quote { - border: 0 !important; -} -li p.info-quote { - background-color: rgba(103, 128, 159, 0.4); - border-left: 6px solid #9fa8bc; - color: #fff; - font-size: 12px; - margin-left: -21px; - margin-top: -7px; - margin-bottom: 0; - min-height: 46px; - padding: 6px; -} -li.warning-quote { - border: 0 !important; -} -p.info-quote { - background-color: rgba(103, 128, 159, 0.8); - border-left: 6px solid #4b77be; - color: #333; - font-size: 12px; - padding: 6px; - text-align: left; -} -li p.warning-quote { -background-color: rgba(214, 69, 65, 0.1); -border-left: 6px solid #d9534f; -color: #fff; -font-size: 12px; -margin-left: -21px; -margin-top: -7px; -padding: 6px; -} -p.warning-quote { - background-color: rgba(214, 69, 65, 0.1); - border-left: 6px solid #d9534f; - color: #333; - font-size: 12px; - padding: 6px; - text-align: left; -} - -.plgin-center-switch { - margin-right: 5px; - margin-top: 2px; -} - -.usermenu-div { - padding-top: 5px; - border-top: 1px solid #3a3a3a; - margin-top: 15px -} - -a.grayscale { - filter: grayscale(100%); /* Current draft standard */ - -webkit-filter: grayscale(100%); /* New WebKit */ - -moz-filter: grayscale(100%); - -ms-filter: grayscale(100%); - -o-filter: grayscale(100%); /* Not yet supported in Gecko, Opera or IE */ - filter: url(resources.svg#desaturate); /* Gecko */ - filter: gray; /* IE */ - -webkit-filter: grayscale(1); /* Old WebKit */ - -webkit-transition: all .6s ease; /* Transition for Webkit browsers */ - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */ -} - -a.grayscale:hover { - filter: grayscale(0%); - -webkit-filter: grayscale(0%); - filter: none; - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale"); -} - -img.grayscale { - filter: grayscale(100%); /* Current draft standard */ - -webkit-filter: grayscale(100%); /* New WebKit */ - -moz-filter: grayscale(100%); - -ms-filter: grayscale(100%); - -o-filter: grayscale(100%); /* Not yet supported in Gecko, Opera or IE */ - filter: url(resources.svg#desaturate); /* Gecko */ - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */ - filter: gray; /* IE */ - -webkit-filter: grayscale(1); /* Old WebKit */ - -webkit-transition: all .6s ease; /* Transition for Webkit browsers */ -} - -img.grayscale:hover { - filter: grayscale(0%); - -webkit-filter: grayscale(0%); - filter: none; - filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'1 0 0 0 0, 0 1 0 0 0, 0 0 1 0 0, 0 0 0 1 0\'/></filter></svg>#grayscale"); -} - -.brand-ico { - vertical-align: top; - width: 18px; - border-radius: 50%; -} - -#sysPre { - max-height : 600px; - overflow-y: scroll; -} - - -.tab-pane.list-announcement ul { - padding: 0; -} - -.lang-flag { - border-radius: 50%; - height: 21px; - margin-right: 5px; - width: 21px; -} -.lang-menu { - color: #778395; - cursor: pointer; - /*font-size: 21px;*/ - height: 64px; - left: -20px; - position: absolute; - top: 20px; - transition: all 0.2s ease-out 0s; -} - - -.disk-good { - color: rgba(102,204,153,1); - -webkit-animation: neon1 1.5s ease-in-out infinite alternate; - -moz-animation: neon1 1.5s ease-in-out infinite alternate; - animation: neon1 1.5s ease-in-out infinite alternate; -} -@-webkit-keyframes neon1 { - from { - text-shadow: 0 0 0 rgba(102,204,153,0.2), 0 0 10px rgba(102,204,153,0.2), 0 0 15px rgba(102,204,153,0.2), 0 0 20px rgba(102,204,153,0.2), 0 0 35px rgba(102,204,153,0.2), 0 0 40px rgba(102,204,153,0.2), 0 0 50px rgba(102,204,153,0.2), 0 0 75px rgba(102,204,153,0.2); - } - to { - text-shadow: 0 0 0 rgba(102,204,153,0.2), 0 0 5px rgba(102,204,153,0.2), 0 0 7px rgba(102,204,153,0.2), 0 0 10px rgba(102,204,153,0.2), 0 0 17px rgba(102,204,153,0.2), 0 0 20px rgba(102,204,153,0.2), 0 0 25px rgba(102,204,153,0.2), 0 0 37px rgba(102,204,153,0.2); - } -} -@-moz-keyframes neon1 { - from { - text-shadow: 0 0 0 rgba(102,204,153,0.2), 0 0 10px rgba(102,204,153,0.2), 0 0 15px rgba(102,204,153,0.2), 0 0 20px rgba(102,204,153,0.2), 0 0 35px rgba(102,204,153,0.2), 0 0 40px rgba(102,204,153,0.2), 0 0 50px rgba(102,204,153,0.2), 0 0 75px rgba(102,204,153,0.2); - } - to { - text-shadow: 0 0 0 rgba(102,204,153,0.2), 0 0 5x rgba(102,204,153,0.2), 0 0 7px rgba(102,204,153,0.2), 0 0 10px rgba(102,204,153,0.2), 0 0 17px rgba(102,204,153,0.2), 0 0 20px rgba(102,204,153,0.2), 0 0 25px rgba(102,204,153,0.2), 0 0 37px rgba(102,204,153,0.2); - } -} - -.disk-warning { - color: rgba(230,173,92,1); - -webkit-animation: neon5 1.5s ease-in-out infinite alternate; - -moz-animation: neon5 1.5s ease-in-out infinite alternate; - animation: neon5 1.5s ease-in-out infinite alternate; -} -@-webkit-keyframes neon5 { - from { - text-shadow: 0 0 0 rgba(230,173,92,0.2), 0 0 10px rgba(230,173,92,0.2), 0 0 15px rgba(230,173,92,0.2), 0 0 20px rgba(230,173,92,0.2), 0 0 35px rgba(230,173,92,0.2), 0 0 40px rgba(230,173,92,0.2), 0 0 50px rgba(230,173,92,0.2), 0 0 75px rgba(230,173,92,0.2); - } - to { - text-shadow: 0 0 0 rgba(230,173,92,0.2), 0 0 5px rgba(230,173,92,0.2), 0 0 7px rgba(230,173,92,0.2), 0 0 10px rgba(230,173,92,0.2), 0 0 17px rgba(230,173,92,0.2), 0 0 20px rgba(230,173,92,0.2), 0 0 25px rgba(230,173,92,0.2), 0 0 37px rgba(230,173,92,0.2); - } -} -@-moz-keyframes neon5 { - from { - text-shadow: 0 0 0 rgba(230,173,92,0.2), 0 0 10px rgba(230,173,92,0.2), 0 0 15px rgba(230,173,92,0.2), 0 0 20px rgba(230,173,92,0.2), 0 0 35px rgba(230,173,92,0.2), 0 0 40px rgba(230,173,92,0.2), 0 0 50px rgba(230,173,92,0.2), 0 0 75px rgba(230,173,92,0.2); - } - to { - text-shadow: 0 0 0 rgba(230,173,92,0.2), 0 0 5x rgba(230,173,92,0.2), 0 0 7px rgba(230,173,92,0.2), 0 0 10px rgba(230,173,92,0.2), 0 0 17px rgba(230,173,92,0.2), 0 0 20px rgba(230,173,92,0.2), 0 0 25px rgba(230,173,92,0.2), 0 0 37px rgba(230,173,92,0.2); - } -} - -.disk-danger { - color: rgba(229,88,105,1); - -webkit-animation: neon9 1.5s ease-in-out infinite alternate; - -moz-animation: neon9 1.5s ease-in-out infinite alternate; - animation: neon9 1.5s ease-in-out infinite alternate; -} -@-webkit-keyframes neon9 { - from { - text-shadow: 0 0 0 rgba(229,88,105,0.2), 0 0 10px rgba(229,88,105,0.2), 0 0 15px rgba(229,88,105,0.2), 0 0 20px rgba(229,88,105,0.2), 0 0 35px rgba(229,88,105,0.2), 0 0 40px rgba(229,88,105,0.2), 0 0 50px rgba(229,88,105,0.2), 0 0 75px rgba(229,88,105,0.2); - } - to { - text-shadow: 0 0 0 rgba(229,88,105,0.2), 0 0 5px rgba(229,88,105,0.2), 0 0 7px rgba(229,88,105,0.2), 0 0 10px rgba(229,88,105,0.2), 0 0 17px rgba(229,88,105,0.2), 0 0 20px rgba(229,88,105,0.2), 0 0 25px rgba(229,88,105,0.2), 0 0 37px rgba(229,88,105,0.2); - } -} -@-moz-keyframes neon9 { - from { - text-shadow: 0 0 0 rgba(229,88,105,0.2), 0 0 10px rgba(229,88,105,0.2), 0 0 15px rgba(229,88,105,0.2), 0 0 20px rgba(229,88,105,0.2), 0 0 35px rgba(229,88,105,0.2), 0 0 40px rgba(229,88,105,0.2), 0 0 50px rgba(229,88,105,0.2), 0 0 75px rgba(229,88,105,0.2); - } - to { - text-shadow: 0 0 0 rgba(229,88,105,0.2), 0 0 5x rgba(229,88,105,0.2), 0 0 7px rgba(229,88,105,0.2), 0 0 10px rgba(229,88,105,0.2), 0 0 17px rgba(229,88,105,0.2), 0 0 20px rgba(229,88,105,0.2), 0 0 25px rgba(229,88,105,0.2), 0 0 37px rgba(229,88,105,0.2); - } -} diff --git a/dashboard/skins/resources.svg b/dashboard/skins/resources.svg deleted file mode 100644 index bf9b62df..00000000 --- a/dashboard/skins/resources.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg version="1.1" - baseProfile="full" - xmlns="http://www.w3.org/2000/svg"> - <filter id="desaturate"> - <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 - 0.3333 0.3333 0.3333 0 0 - 0.3333 0.3333 0.3333 0 0 - 0 0 0 1 0"/> - </filter> -</svg> \ No newline at end of file diff --git a/dashboard/widgets/activity_feed.php b/dashboard/widgets/activity_feed.php deleted file mode 100644 index 39295a9a..00000000 --- a/dashboard/widgets/activity_feed.php +++ /dev/null @@ -1,4 +0,0 @@ -<?php - //QuickBox Development & Activity Feed -?> -<embed src="https://quickbox.io/widget/feed/qb-project.php" width='100%' height='100%' style="padding-bottom:45px" /> diff --git a/dashboard/widgets/bw_tables.php b/dashboard/widgets/bw_tables.php deleted file mode 100644 index f89a99af..00000000 --- a/dashboard/widgets/bw_tables.php +++ /dev/null @@ -1,212 +0,0 @@ -<?php - -// Network Interface -$interface = INETFACE; -$iface_list = array('INETFACE'); -$iface_title['INETFACE'] = 'External'; -$vnstat_bin = '/usr/bin/vnstat'; -$data_dir = './dumps'; -$byte_notation = null; - -require ('../inc/localize.php'); -require ('vnstat.php'); - -validate_input(); - -function kbytes_to_string($kb) { - - global $byte_notation; - - $units = array('TB','GB','MB','KB'); - $scale = 1024*1024*1024; - $ui = 0; - - $custom_size = isset($byte_notation) && in_array($byte_notation, $units); - - while ((($kb < $scale) && ($scale > 1)) || $custom_size) { - $ui++; - $scale = $scale / 1024; - - if ($custom_size && $units[$ui] == $byte_notation) { - break; - } - } - - return sprintf("%0.2f %s", ($kb/$scale),$units[$ui]); -} - -function write_summary_s() { - global $summary,$day,$hour,$month; - - $trx = $summary['totalrx']*1024+$summary['totalrxk']; - $ttx = $summary['totaltx']*1024+$summary['totaltxk']; - - // - // let's build array for write_data_table - // - - $sum = array(); - - if (count($day) > 0 && count($hour) > 0 && count($month) > 0) { - $sum[0]['act'] = 1; - $sum[0]['label'] = T('This hour'); - $sum[0]['rx'] = $hour[0]['rx']; - $sum[0]['tx'] = $hour[0]['tx']; - - $sum[1]['act'] = 1; - $sum[1]['label'] = T('This day'); - $sum[1]['rx'] = $day[0]['rx']; - $sum[1]['tx'] = $day[0]['tx']; - - $sum[2]['act'] = 1; - $sum[2]['label'] = T('This month'); - $sum[2]['rx'] = $month[0]['rx']; - $sum[2]['tx'] = $month[0]['tx']; - - $sum[3]['act'] = 1; - $sum[3]['label'] = T('All time'); - $sum[3]['rx'] = $trx; - $sum[3]['tx'] = $ttx; - } - -write_data_table_s(T('Summary'), $sum); - -} - -function write_summary_t() { - global $top; - - $trx = $summary['totalrx']*1024+$summary['totalrxk']; - $ttx = $summary['totaltx']*1024+$summary['totaltxk']; - - // - // let's build array for write_data_table - // - - $sum = array(); - - if (count($day) > 0 && count($hour) > 0 && count($month) > 0) { - $sum[0]['act'] = 1; - $sum[0]['label'] = T('This hour'); - $sum[0]['rx'] = $hour[0]['rx']; - $sum[0]['tx'] = $hour[0]['tx']; - - $sum[1]['act'] = 1; - $sum[1]['label'] = T('This day'); - $sum[1]['rx'] = $day[0]['rx']; - $sum[1]['tx'] = $day[0]['tx']; - - $sum[2]['act'] = 1; - $sum[2]['label'] = T('This month'); - $sum[2]['rx'] = $month[0]['rx']; - $sum[2]['tx'] = $month[0]['tx']; - - $sum[3]['act'] = 1; - $sum[3]['label'] = T('All time'); - $sum[3]['rx'] = $trx; - $sum[3]['tx'] = $ttx; - } - -write_data_table_t(T('Top 10 days'), $top); - -} - -function write_data_table_s($caption, $tab) { - print "<table class=\"table table-hover table-default nomargin\" width=\"100%\" cellspacing=\"0\">"; - print "<thead>"; - print "<tr>"; - print "<th class=\"text-right\" style=\"width:25%;\">$caption</th>"; - print "<th class=\"text-right\" style=\"width:24.5%;\">".T('In')."</th>"; - print "<th class=\"text-right\" style=\"width:24.5%;\">".T('Out')."</th>"; - print "<th class=\"text-right\" style=\"width:24.5%;\">".T('Total')."</th>"; - print "</tr>"; - print "</thead>"; - print "<tbody>\n"; - - for ($i=0; $i<count($tab); $i++) { - if ($tab[$i]['act'] == 1) { - $t = $tab[$i]['label']; - $rx = kbytes_to_string($tab[$i]['rx']); - $tx = kbytes_to_string($tab[$i]['tx']); - $total = kbytes_to_string($tab[$i]['rx']+$tab[$i]['tx']); - $id = ($i & 1) ? 'odd' : 'even'; - print "<tr>"; - print "<td class=\"label_$id\" style=\"font-size:12px;;text-align:right\"><b>$t</b></td>"; - print "<td class=\"numeric_$id\" style=\"font-size:12px;;text-align:right\">$rx</td>"; - print "<td class=\"numeric_$id\" style=\"font-size:12px;;text-align:right\">$tx</td>"; - print "<td class=\"numeric_$id\" style=\"font-size:12px;;text-align:right\">$total</td>"; - print "</tr>\n"; - } - } - - print "</tbody>"; - print "</table>"; -} - -function write_data_table_t($caption, $tab) { - print "<table class=\"table table-hover table-default nomargin\" width=\"100%\" cellspacing=\"0\">"; - print "<thead>"; - print "<tr>"; - print "<th class=\"text-right\" style=\"width:25%;\">$caption</th>"; - print "<th class=\"text-right\" style=\"width:24.5%;\">".T('In')."</th>"; - print "<th class=\"text-right\" style=\"width:24.5%;\">".T('Out')."</th>"; - print "<th class=\"text-right\" style=\"width:24.5%;\">".T('Total')."</th>"; - print "</tr>"; - print "</thead>"; - - print "<tbody>\n"; - - for ($i=0; $i<count($tab); $i++) { - if ($tab[$i]['act'] == 1) { - $t = $tab[$i]['label']; - $rx = kbytes_to_string($tab[$i]['rx']); - $tx = kbytes_to_string($tab[$i]['tx']); - $total = kbytes_to_string($tab[$i]['rx']+$tab[$i]['tx']); - $id = ($i & 1) ? 'odd' : 'even'; - print "<tr>"; - print "<td class=\"label_$id\" style=\"font-size:12px;;text-align:right\"><b>$t</b></td>"; - print "<td class=\"numeric_$id\" style=\"font-size:12px;text-align:right\">$rx</td>"; - print "<td class=\"numeric_$id\" style=\"font-size:12px;;text-align:right\">$tx</td>"; - print "<td class=\"numeric_$id\" style=\"font-size:12px;;text-align:right\">$total</td>"; - print "</tr>\n"; - } - } - - print "</tbody>"; - print "</table>"; -} - -get_vnstat_data(); -?> - - <div class="col-sm-12" style="padding-left:0;padding-right:0;"> - <div class="table-responsive"> - <?php $graph_params = "if=$iface&page=$page&style=$style"; - if ($page == 's') { - write_summary_s(); - } else if ($page == 'h') { - write_data_table_s(T('Last 24 hours'), $hour); - } else if ($page == 'd') { - write_data_table_s(T('Last 30 days'), $day); - } else if ($page == 'm') { - write_data_table_s(T('Last 12 months'), $month); - } - ?> - </div> - </div> - - <div class="col-sm-12" style="padding-left:0;padding-right:0;"> - <div class="table-responsive"> - <?php $graph_params = "if=$iface&page=$page&style=$style"; - if ($page == 's') { - write_summary_t(); - } else if ($page == 'h') { - write_data_table_t(T('Last 24 hours'), $hour); - } else if ($page == 'd') { - write_data_table_t(T('Last 30 days'), $day); - } else if ($page == 'm') { - write_data_table_t(T('Last 12 months'), $month); - } - ?> - </div> - </div> diff --git a/dashboard/widgets/class.php b/dashboard/widgets/class.php deleted file mode 100644 index 5a1652b6..00000000 --- a/dashboard/widgets/class.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php -class DiskStatus { - const RAW_OUTPUT = true; - private $diskPath; -function __construct($diskPath) { - $this->diskPath = $diskPath; -} - -public function totalSpace($rawOutput = false) { -$diskTotalSpace = @disk_total_space($this->diskPath); - if ($diskTotalSpace === FALSE) { - throw new Exception('totalSpace(): Invalid disk path.'); - } - return $rawOutput ? $diskTotalSpace : $this->addUnits($diskTotalSpace); -} -public function freeSpace($rawOutput = false) { - $diskFreeSpace = @disk_free_space($this->diskPath); - if ($diskFreeSpace === FALSE) { - throw new Exception('freeSpace(): Invalid disk path.'); - } - return $rawOutput ? $diskFreeSpace : $this->addUnits($diskFreeSpace); -} -public function usedSpace($precision = 1) { - try { - return round((100 - ($this->freeSpace(self::RAW_OUTPUT) / $this->totalSpace(self::RAW_OUTPUT)) * 100), $precision); - } catch (Exception $e) { - throw $e; - } -} -public function getDiskPath() { - return $this->diskPath; -} -private function addUnits($bytes) { - $units = array( 'B', 'KB', 'MB', 'GB', 'TB' ); - for($i = 0; $bytes >= 1024 && $i < count($units) - 1; $i++ ) { - $bytes /= 1024; - } - return round($bytes, 1).' '.$units[$i]; - } -} -?> - diff --git a/dashboard/widgets/cpu.php b/dashboard/widgets/cpu.php deleted file mode 100644 index 99757b51..00000000 --- a/dashboard/widgets/cpu.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -include ("../inc/localize.php"); - -define('HTTP_HOST', preg_replace('~^www\.~i', '', $_SERVER['HTTP_HOST'])); - -$time_start = microtime_float(); - -function memory_usage() { - $memory = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB'; - return $memory; -} - -// Timing -function microtime_float() { - $mtime = microtime(); - $mtime = explode(' ', $mtime); - return $mtime[1] + $mtime[0]; -} - -$loads = sys_getloadavg(); -$core_nums = trim(shell_exec("grep -P '^processor' /proc/cpuinfo|wc -l")); -$load = round($loads[0]/($core_nums + 1)*100, 2); - -?> - -{"cpu":<?php echo "$load"; ?>} - - diff --git a/dashboard/widgets/data.php b/dashboard/widgets/data.php deleted file mode 100644 index c4e9e0cb..00000000 --- a/dashboard/widgets/data.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php -$interface = INETFACE; -session_start(); -$rx[] = @file_get_contents("/sys/class/net/INETFACE/statistics/rx_bytes"); -$tx[] = @file_get_contents("/sys/class/net/INETFACE/statistics/tx_bytes"); -sleep(1); -$rx[] = @file_get_contents("/sys/class/net/INETFACE/statistics/rx_bytes"); -$tx[] = @file_get_contents("/sys/class/net/INETFACE/statistics/tx_bytes"); -$tbps = $tx[1] - $tx[0]; -$rbps = $rx[1] - $rx[0]; -$round_rx=round(($rbps*8)/10000000, 3); -$round_tx=round(($tbps*8)/10000000, 3); -//$round_rx=round($rbps/1024/1024, 1); -//$round_tx=round($tbps/1024/1024, 1); -$time=date("U")."000"; -$_SESSION['rx'][] = "[$time, $round_rx]"; -$_SESSION['tx'][] = "[$time, $round_tx]"; -//$data['label'] = "1"; -//$data['data'] = $_SESSION['rx']; -# to make sure that the graph shows only the -# last minute (saves some bandwitch to) -if (count($_SESSION['rx'])>60) -{ - $x = min(array_keys($_SESSION['rx'])); - unset($_SESSION['rx'][$x]); - - $x2 = min(array_keys($_SESSION['tx'])); - unset($_SESSION['tx'][$x2]); -} - -// # json_encode didnt work, if you found a workarround pls write m -//echo json_encode($data, JSON_FORCE_OBJECT); - -echo '[ { "data":['.implode($_SESSION['rx'], ",").'],"label": "Download"}, '; -echo '{ "data":['.implode($_SESSION['tx'], ",").'],"label": "Upload"} '; -echo ']'; -?> diff --git a/dashboard/widgets/disk_data.php b/dashboard/widgets/disk_data.php deleted file mode 100644 index 50cbce56..00000000 --- a/dashboard/widgets/disk_data.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php -include ("/srv/rutorrent/php/util.php"); -include ($_SERVER['DOCUMENT_ROOT'].'/widgets/class.php'); -require_once ($_SERVER['DOCUMENT_ROOT'].'/inc/localize.php'); - -$username = getUser(); -function processExists($processName, $username) { - $exists= false; - exec("ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm|grep $username | grep -iE $processName | grep -v grep", $pids); - if (count($pids) > 0) { - $exists = true; - } - return $exists; -} -$deluged = processExists("deluged",$username); -$delugedweb = processExists("deluge-web",$username); -$rtorrent = processExists("rtorrent",$username); - -//Unit Conversion -function formatsize($size) { - $danwei=array(' B ',' KB ',' MB ',' GB ',' TB '); - $allsize=array(); - $i=0; - for($i = 0; $i <5; $i++) { - if(floor($size/pow(1024,$i))==0){break;} - } - for($l = $i-1; $l >=0; $l--) { - $allsize1[$l]=floor($size/pow(1024,$l)); - $allsize[$l]=$allsize1[$l]-$allsize1[$l+1]*1024; - } - $len=count($allsize); - for($j = $len-1; $j >=0; $j--) { - $fsize=$fsize.$allsize[$j].$danwei[$j]; - } - return $fsize; -} - -$location = "/home"; -$base = 1024; -$si_prefix = array( 'b', 'k', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' ); -$torrents = shell_exec("ls /home/".$username."/.sessions/*.torrent|wc -l"); -$dtorrents = shell_exec("ls /home/".$username."/.config/deluge/state/*.torrent|wc -l"); -$php_self = $_SERVER['PHP_SELF']; -$web_path = substr($php_self, 0, strrpos($php_self, '/')+1); -$time = microtime(); $time = explode(" ", $time); -$time = $time[1] + $time[0]; $start = $time; - -if (file_exists('/install/.quota.lock')) { - $dftotal = shell_exec("sudo /usr/sbin/repquota /|/bin/grep ^".$username."|/usr/bin/awk '{printf \$4/1024/1024}'"); - $dffree = shell_exec("sudo /usr/sbin/repquota /|/bin/grep ^".$username."|/usr/bin/awk '{printf (\$4-\$3)/1024/1024}'"); - $dfused = shell_exec("sudo /usr/sbin/repquota /|/bin/grep ^".$username."|/usr/bin/awk '{printf \$3/1024/1024}'"); - $perused = sprintf('%1.0f', $dfused / $dftotal * 100); - -} else { - - $bytesfree = disk_free_space('/home'); - $class = min((int)log($bytesfree,$base),count($si_prefix) - 1); $bytestotal = disk_total_space($location); - $class = min((int)log($bytesfree,$base),count($si_prefix) - 1); $bytesused = $bytestotal - $bytesfree; - try { - $diskStatus = new DiskStatus('/home'); - $freeSpace = $diskStatus->freeSpace(); - $totalSpace = $diskStatus->totalSpace(); - $barWidth = ($diskStatus->usedSpace()/500) * 500; - } catch (Exception $e) { - $spacebodyerr .= 'Error ('.$e-getMessage().')'; - exit(); - } - //hard disk - $dftotal = number_format(round(@disk_total_space(".")/(1024*1024*1024),3)); //Total - $dffree = number_format(round(@disk_free_space(".")/(1024*1024*1024),3)); //Available - $dfused = number_format(round(@disk_total_space(".")/(1024*1024*1024),3)-round(@disk_free_space(".")/(1024*1024*1024),3)); //used - //hard disk for percentages - $dptotal = round(@disk_total_space(".")/(1024*1024*1024),3); //Total - $dpfree = round(@disk_free_space(".")/(1024*1024*1024),3); //Available - $dpused = $dptotal-$dpfree; //used - $perused = (floatval($dptotal)!=0)?round($dpused/$dptotal*100,2):0; - //$perused = sprintf('%1.0f', $bytesused / $bytestotal * 100); -} - -if (file_exists('/home/'.$username.'/.sessions/rtorrent.lock')) { - $rtorrents = shell_exec("ls /home/".$username."/.sessions/*.torrent|wc -l"); -} - -?> - - <p class="nomargin"><?php echo T('FREE'); ?>: <span style="font-weight: 700; position: absolute; left: 100px;"><?php echo "$dffree"; ?> <b>GB</b></span></p> - <p class="nomargin"><?php echo T('USED'); ?>: <span style="font-weight: 700; position: absolute; left: 100px;"><?php echo "$dfused"; ?> <b>GB</b></span></p> - <p class="nomargin"><?php echo T('SIZE'); ?>: <span style="font-weight: 700; position: absolute; left: 100px;"><?php echo "$dftotal"; ?> <b>GB</b></span></p> - <div class="row"> - <div class="col-sm-8"> - <!--h4 class="panel-title text-success">Disk Space</h4--> - <h3><?php echo T('DISK_SPACE'); ?></h3> - <div class="progress"> - <?php - if ($perused < "70") { $diskcolor="progress-bar-success"; } - if ($perused > "70") { $diskcolor="progress-bar-warning"; } - if ($perused > "90") { $diskcolor="progress-bar-danger"; } - ?> - <div style="width:<?php echo "$perused"; ?>%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="<?php echo "$perused"; ?>" role="progressbar" class="progress-bar <?php echo $diskcolor ?>"> - <span class="sr-only"><?php echo "$perused"; ?>% <?php echo T('USED'); ?></span> - </div> - </div> - <p style="font-size:10px"><?php echo T('PERCENTAGE_TXT_1'); ?> <?php echo "$perused" ?>% <?php echo T('PERCENTAGE_TXT_2'); ?></p> - </div> - <div class="col-sm-4 text-right"> - <?php - if ($perused < "70") { $diskcolor="disk-good"; } - if ($perused > "70") { $diskcolor="disk-warning"; } - if ($perused > "90") { $diskcolor="disk-danger"; } - ?> - <i class="fa fa-hdd-o <?php echo $diskcolor ?>" style="font-size: 90px;"></i> - </div> - </div> - <hr /> - <?php if (processExists("rtorrent",$username) && file_exists('/home/'.$username.'/.sessions/rtorrent.lock')) { ?> - <h4><?php echo T('RTORRENTS_TITLE'); ?></h4> - <p class="nomargin"><?php echo T('TORRENTS_LOADED_1'); ?> <b><?php echo "$rtorrents"; ?></b> <?php echo T('TORRENTS_LOADED_2'); ?></p> - <?php } ?> - <?php if (processExists("deluged",$username || "deluge-web", $username) && file_exists('/install/.deluge.lock')) { ?> - <h4><?php echo T('DTORRENTS_TITLE'); ?></h4> - <p class="nomargin"><?php echo T('TORRENTS_LOADED_1'); ?> <b><?php echo "$dtorrents"; ?></b> <?php echo T('TORRENTS_LOADED_2'); ?></p> - <?php } ?> - - -<script type="text/javascript"> -$(function() { - - // Knob - $('.dial-success').knob({ - readOnly: true, - width: '70px', - bgColor: '#E7E9EE', - fgColor: '#4daf7c', - inputColor: '#262B36' - }); - - $('.dial-warning').knob({ - readOnly: true, - width: '70px', - bgColor: '#E7E9EE', - fgColor: '#e6ad5c', - inputColor: '#262B36' - }); - - $('.dial-danger').knob({ - readOnly: true, - width: '70px', - bgColor: '#E7E9EE', - fgColor: '#D9534F', - inputColor: '#262B36' - }); - - $('.dial-info').knob({ - readOnly: true, - width: '70px', - bgColor: '#66BAC4', - fgColor: '#fff', - inputColor: '#fff' - }); - -}); -</script> diff --git a/dashboard/widgets/disk_datah.php b/dashboard/widgets/disk_datah.php deleted file mode 100644 index 8eb29e91..00000000 --- a/dashboard/widgets/disk_datah.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php -include ("/srv/rutorrent/php/util.php"); -include ($_SERVER['DOCUMENT_ROOT'].'/widgets/class.php'); -require_once ($_SERVER['DOCUMENT_ROOT'].'/inc/localize.php'); - -$username = getUser(); -function processExists($processName, $username) { - $exists= false; - exec("ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm|grep $username | grep -iE $processName | grep -v grep", $pids); - if (count($pids) > 0) { - $exists = true; - } - return $exists; -} -$deluged = processExists("deluged",$username); -$delugedweb = processExists("deluge-web",$username); -$rtorrent = processExists("rtorrent",$username); - -//Unit Conversion -function formatsize($size) { - $danwei=array(' B ',' KB ',' MB ',' GB ',' TB '); - $allsize=array(); - $i=0; - for($i = 0; $i <5; $i++) { - if(floor($size/pow(1024,$i))==0){break;} - } - for($l = $i-1; $l >=0; $l--) { - $allsize1[$l]=floor($size/pow(1024,$l)); - $allsize[$l]=$allsize1[$l]-$allsize1[$l+1]*1024; - } - $len=count($allsize); - for($j = $len-1; $j >=0; $j--) { - $fsize=$fsize.$allsize[$j].$danwei[$j]; - } - return $fsize; -} - -$location = "/home"; -$base = 1024; -$si_prefix = array( 'b', 'k', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' ); -$torrents = shell_exec("ls /home/".$username."/.sessions/*.torrent|wc -l"); -$dtorrents = shell_exec("ls /home/".$username."/.config/deluge/state/*.torrent|wc -l"); -$php_self = $_SERVER['PHP_SELF']; -$web_path = substr($php_self, 0, strrpos($php_self, '/')+1); -$time = microtime(); $time = explode(" ", $time); -$time = $time[1] + $time[0]; $start = $time; - -if (file_exists('/install/.quota.lock')) { - $dftotal = shell_exec("sudo /usr/sbin/repquota /home|/bin/grep ^".$username."|/usr/bin/awk '{printf \$4/1024/1024}'"); - $dffree = shell_exec("sudo /usr/sbin/repquota /home|/bin/grep ^".$username."|/usr/bin/awk '{printf (\$4-\$3)/1024/1024}'"); - $dfused = shell_exec("sudo /usr/sbin/repquota /home|/bin/grep ^".$username."|/usr/bin/awk '{printf \$3/1024/1024}'"); - $perused = sprintf('%1.0f', $dfused / $dftotal * 100); - -} else { - - $bytesfree = disk_free_space('/home'); - $class = min((int)log($bytesfree,$base),count($si_prefix) - 1); $bytestotal = disk_total_space($location); - $class = min((int)log($bytesfree,$base),count($si_prefix) - 1); $bytesused = $bytestotal - $bytesfree; - try { - $diskStatus = new DiskStatus('/home'); - $freeSpace = $diskStatus->freeSpace(); - $totalSpace = $diskStatus->totalSpace(); - $barWidth = ($diskStatus->usedSpace()/500) * 500; - } catch (Exception $e) { - $spacebodyerr .= 'Error ('.$e-getMessage().')'; - exit(); - } - //hard disk - $dftotal = number_format(round(@disk_total_space($location)/(1024*1024*1024),3)); //Total - $dffree = number_format(round(@disk_free_space($location)/(1024*1024*1024),3)); //Available - $dfused = number_format(round(@disk_total_space($location)/(1024*1024*1024),3)-round(@disk_free_space($location)/(1024*1024*1024),3)); //used - //hard disk for percentages - $dptotal = round(@disk_total_space($location)/(1024*1024*1024),3); //Total - $dpfree = round(@disk_free_space($location)/(1024*1024*1024),3); //Available - $dpused = $dptotal-$dpfree; //used - $perused = (floatval($dptotal)!=0)?round($dpused/$dptotal*100,2):0; - //$perused = sprintf('%1.0f', $bytesused / $bytestotal * 100); -} - -if (file_exists('/home/'.$username.'/.sessions/rtorrent.lock')) { - $rtorrents = shell_exec("ls /home/".$username."/.sessions/*.torrent|wc -l"); -} - -?> - - <p class="nomargin"><?php echo T('FREE'); ?>: <span style="font-weight: 700; position: absolute; left: 100px;"><?php echo "$dffree"; ?> <b>GB</b></span></p> - <p class="nomargin"><?php echo T('USED'); ?>: <span style="font-weight: 700; position: absolute; left: 100px;"><?php echo "$dfused"; ?> <b>GB</b></span></p> - <p class="nomargin"><?php echo T('SIZE'); ?>: <span style="font-weight: 700; position: absolute; left: 100px;"><?php echo "$dftotal"; ?> <b>GB</b></span></p> - <div class="row"> - <div class="col-sm-8"> - <!--h4 class="panel-title text-success">Disk Space</h4--> - <h3><?php echo T('DISK_SPACE'); ?></h3> - <div class="progress"> - <?php - if ($perused < "70") { $diskcolor="progress-bar-success"; } - if ($perused > "70") { $diskcolor="progress-bar-warning"; } - if ($perused > "90") { $diskcolor="progress-bar-danger"; } - ?> - <div style="width:<?php echo "$perused"; ?>%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="<?php echo "$perused"; ?>" role="progressbar" class="progress-bar <?php echo $diskcolor ?>"> - <span class="sr-only"><?php echo "$perused"; ?>% <?php echo T('USED'); ?></span> - </div> - </div> - <p style="font-size:10px"><?php echo T('PERCENTAGE_TXT_1'); ?> <?php echo "$perused" ?>% <?php echo T('PERCENTAGE_TXT_2'); ?></p> - </div> - <div class="col-sm-4 text-right"> - <?php - if ($perused < "70") { $diskcolor="disk-good"; } - if ($perused > "70") { $diskcolor="disk-warning"; } - if ($perused > "90") { $diskcolor="disk-danger"; } - ?> - <i class="fa fa-hdd-o <?php echo $diskcolor ?>" style="font-size: 90px;"></i> - </div> - </div> - <hr /> - <?php if (processExists("rtorrent",$username) && file_exists('/home/'.$username.'/.sessions/rtorrent.lock')) { ?> - <h4><?php echo T('RTORRENTS_TITLE'); ?></h4> - <p class="nomargin"><?php echo T('TORRENTS_LOADED_1'); ?> <b><?php echo "$rtorrents"; ?></b> <?php echo T('TORRENTS_LOADED_2'); ?></p> - <?php } ?> - <?php if (processExists("deluged",$username || "deluge-web", $username) && file_exists('/install/.deluge.lock')) { ?> - <h4><?php echo T('DTORRENTS_TITLE'); ?></h4> - <p class="nomargin"><?php echo T('TORRENTS_LOADED_1'); ?> <b><?php echo "$dtorrents"; ?></b> <?php echo T('TORRENTS_LOADED_2'); ?></p> - <?php } ?> - - -<script type="text/javascript"> -$(function() { - - // Knob - $('.dial-success').knob({ - readOnly: true, - width: '70px', - bgColor: '#E7E9EE', - fgColor: '#4daf7c', - inputColor: '#262B36' - }); - - $('.dial-warning').knob({ - readOnly: true, - width: '70px', - bgColor: '#E7E9EE', - fgColor: '#e6ad5c', - inputColor: '#262B36' - }); - - $('.dial-danger').knob({ - readOnly: true, - width: '70px', - bgColor: '#E7E9EE', - fgColor: '#D9534F', - inputColor: '#262B36' - }); - - $('.dial-info').knob({ - readOnly: true, - width: '70px', - bgColor: '#66BAC4', - fgColor: '#fff', - inputColor: '#fff' - }); - -}); -</script> diff --git a/dashboard/widgets/lang_select.php b/dashboard/widgets/lang_select.php deleted file mode 100644 index c289e522..00000000 --- a/dashboard/widgets/lang_select.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -$language = array( - 'lang_de', - 'lang_dk', - 'lang_en', - 'lang_fr' -); - -foreach ($language as $lang) { -if (isset($_GET['langSelect-'.$lang.''])) { - header('Location: /'); - shell_exec("sudo /usr/local/bin/quickbox/system/lang/langSelect-$lang"); -}} - -?> diff --git a/dashboard/widgets/load.php b/dashboard/widgets/load.php deleted file mode 100644 index 4b9a90ee..00000000 --- a/dashboard/widgets/load.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -include ("../inc/localize.php"); - -// Information obtained depending on the system CPU -switch(PHP_OS) -{ - case "Linux": - $sysReShow = (false !== ($sysInfo = sys_linux()))?"show":"none"; - break; - - case "FreeBSD": - $sysReShow = (false !== ($sysInfo = sys_freebsd()))?"show":"none"; - break; - - default: - break; -} - -//linux system detects -function sys_linux() { - // LOAD AVG - if (false === ($str = @file("/proc/loadavg"))) return false; - $str = explode(" ", implode("", $str)); - $str = array_chunk($str, 4); - $res['loadAvg'] = implode(" ", $str[0]); - - return $res; -} -$load = $sysInfo['loadAvg']; //System load -echo "$load"; -?> diff --git a/dashboard/widgets/package_data.php b/dashboard/widgets/package_data.php deleted file mode 100644 index 05851731..00000000 --- a/dashboard/widgets/package_data.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -$packages = array( - 'btsync', - 'csf', - 'couchpotato', - 'deluge', - 'emby', - 'jackett', - 'nextcloud', - 'nzbhydra', - 'plex', - 'plexpy', - 'ombi', - 'pyload', - 'rapidleech', - 'sabnzbd', - 'sickrage', - 'subsonic', - 'sonarr', - 'syncthing', - 'x2go', - 'quota', - 'quassel', - 'znc' -); - -foreach ($packages as $ipackage) { -if (isset($_GET['installpackage-'.$ipackage.''])) { - header('Location: //'); - shell_exec("sudo /usr/local/bin/quickbox/package/install/installpackage-$ipackage"); -}} - -foreach ($packages as $rpackage) { -if (isset($_GET['removepackage-'.$rpackage.''])) { - header('Location: /'); - shell_exec("sudo /usr/local/bin/quickbox/package/remove/removepackage-$rpackage"); -}} - -?> diff --git a/dashboard/widgets/plugin_data.php b/dashboard/widgets/plugin_data.php deleted file mode 100644 index a794bcf9..00000000 --- a/dashboard/widgets/plugin_data.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -$plugins = array( - '_getdir', - '_noty', - '_noty2', - '_task', - 'autodl-irssi', - 'autotools', - 'check_port', - 'chunks', - 'cookies', - 'cpuload', - 'create', - 'data', - 'datadir', - 'diskspace', - 'diskspaceh', - 'edit', - 'erasedata', - 'extratio', - 'extsearch', - 'feeds', - 'filedrop', - 'filemanager', - 'fileshare', - 'fileupload', - 'geoip', - 'history', - 'httprpc', - 'ipad', - 'loginmgr', - 'logoff', - 'lookat', - 'mediainfo', - 'mobile', - 'pausewebui', - 'ratio', - 'ratiocolor', - 'retrackers', - 'rpc', - 'rss', - 'rssurlrewrite', - 'rutracker_check', - 'scheduler', - 'screenshots', - 'seedingtime', - 'show_peers_like_wtorrent', - 'source', - 'stream', - 'theme', - 'throttle', - 'tracklabels', - 'trafic', - 'unpack', - 'xmpp' -); - -foreach ($plugins as $plugin) { -if (isset($_GET['installplugin-'.$plugin.''])) { - header('Location: /'); - shell_exec("sudo /usr/local/bin/quickbox/plugin/install/installplugin-$plugin"); -}} - -foreach ($plugins as $plugin) { -if (isset($_GET['removeplugin-'.$plugin.''])) { - header('Location: /'); - shell_exec("sudo /usr/local/bin/quickbox/plugin/remove/removeplugin-$plugin"); -}} - -?> diff --git a/dashboard/widgets/ram_stats.php b/dashboard/widgets/ram_stats.php deleted file mode 100644 index 3d708169..00000000 --- a/dashboard/widgets/ram_stats.php +++ /dev/null @@ -1,358 +0,0 @@ -<?php - -include ("../inc/localize.php"); - -$time_start = microtime_float(); - -function memory_usage() -{ - $memory = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB'; - return $memory; -} - -// Timing -function microtime_float() -{ - $mtime = microtime(); - $mtime = explode(' ', $mtime); - return $mtime[1] + $mtime[0]; -} - -//Unit Conversion -function formatsize($size) -{ - $danwei=array(' B ',' KB ',' MB ',' GB ',' TB '); - $allsize=array(); - $i=0; - - for($i = 0; $i <5; $i++) - { - if(floor($size/pow(1024,$i))==0){break;} - } - - for($l = $i-1; $l >=0; $l--) - { - $allsize1[$l]=floor($size/pow(1024,$l)); - $allsize[$l]=$allsize1[$l]-$allsize1[$l+1]*1024; - } - - $len=count($allsize); - - for($j = $len-1; $j >=0; $j--) - { - $fsize=$fsize.$allsize[$j].$danwei[$j]; - } - return $fsize; -} - -//Integer arithmetic ability test -function test_int() -{ - $timeStart = gettimeofday(); - for($i = 0; $i < 3000000; $i++) - { - $t = 1+1; - } - $timeEnd = gettimeofday(); - $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"]; - $time = round($time, 3)."second"; - return $time; -} - -//Floating point capability test -function test_float() -{ - //Get the value of pi - $t = pi(); - $timeStart = gettimeofday(); - - for($i = 0; $i < 3000000; $i++) - { - //square root - sqrt($t); - } - - $timeEnd = gettimeofday(); - $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"]; - $time = round($time, 3)."second"; - return $time; -} - -// Information obtained depending on the system CPU -switch(PHP_OS) -{ - case "Linux": - $sysReShow = (false !== ($sysInfo = sys_linux()))?"show":"none"; - break; - - case "FreeBSD": - $sysReShow = (false !== ($sysInfo = sys_freebsd()))?"show":"none"; - break; - - default: - break; -} - -//linux system detects -function sys_linux() -{ - - // MEMORY - if (false === ($str = @file("/proc/meminfo"))) return false; - $str = implode("", $str); - preg_match_all("/MemTotal\s{0,}\:+\s{0,}([\d\.]+).+?MemFree\s{0,}\:+\s{0,}([\d\.]+).+?Cached\s{0,}\:+\s{0,}([\d\.]+).+?SwapTotal\s{0,}\:+\s{0,}([\d\.]+).+?SwapFree\s{0,}\:+\s{0,}([\d\.]+)/s", $str, $buf); - preg_match_all("/Buffers\s{0,}\:+\s{0,}([\d\.]+)/s", $str, $buffers); - - $res['memTotal'] = round($buf[1][0]/1024, 2); - $res['memFree'] = round($buf[2][0]/1024, 2); - $res['memBuffers'] = round($buffers[1][0]/1024, 2); - $res['memCached'] = round($buf[3][0]/1024, 2); - $res['memUsed'] = $res['memTotal']-$res['memFree']; - $res['memPercent'] = (floatval($res['memTotal'])!=0)?round($res['memUsed']/$res['memTotal']*100,2):0; - - $res['memRealUsed'] = $res['memTotal'] - $res['memFree'] - $res['memCached'] - $res['memBuffers']; //Real memory usage - $res['memRealFree'] = $res['memTotal'] - $res['memRealUsed']; //Real idle - $res['memRealPercent'] = (floatval($res['memTotal'])!=0)?round($res['memRealUsed']/$res['memTotal']*100,2):0; //Real memory usage - - $res['memCachedPercent'] = (floatval($res['memCached'])!=0)?round($res['memCached']/$res['memTotal']*100,2):0; //Cached memory usage - - $res['swapTotal'] = round($buf[4][0]/1024, 2); - $res['swapFree'] = round($buf[5][0]/1024, 2); - $res['swapUsed'] = round($res['swapTotal']-$res['swapFree'], 2); - $res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round($res['swapUsed']/$res['swapTotal']*100,2):0; - - return $res; -} - -//FreeBSD system detects -function sys_freebsd() -{ - //MEMORY - if (false === ($buf = get_key("hw.physmem"))) return false; - $res['memTotal'] = round($buf/1024/1024, 2); - - $str = get_key("vm.vmtotal"); - preg_match_all("/\nVirtual Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\)\n/i", $str, $buff, PREG_SET_ORDER); - preg_match_all("/\nReal Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\)\n/i", $str, $buf, PREG_SET_ORDER); - - $res['memRealUsed'] = round($buf[0][2]/1024, 2); - $res['memCached'] = round($buff[0][2]/1024, 2); - $res['memUsed'] = round($buf[0][1]/1024, 2) + $res['memCached']; - $res['memFree'] = $res['memTotal'] - $res['memUsed']; - $res['memPercent'] = (floatval($res['memTotal'])!=0)?round($res['memUsed']/$res['memTotal']*100,2):0; - - $res['memRealPercent'] = (floatval($res['memTotal'])!=0)?round($res['memRealUsed']/$res['memTotal']*100,2):0; - - return $res; -} - -//Obtain the parameter values FreeBSD -function get_key($keyName) -{ - return do_command('sysctl', "-n $keyName"); -} - -//Determining the location of the executable file FreeBSD -function find_command($commandName) -{ - $path = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin'); - foreach($path as $p) - { - if (@is_executable("$p/$commandName")) return "$p/$commandName"; - } - return false; -} - -//Order Execution System FreeBSD -function do_command($commandName, $args) -{ - $buffer = ""; - if (false === ($command = find_command($commandName))) return false; - if ($fp = @popen("$command $args", 'r')) - { - while (!@feof($fp)) - { - $buffer .= @fgets($fp, 4096); - } - return trim($buffer); - } - return false; -} - - -function GetWMI($wmi,$strClass, $strValue = array()) -{ - $arrData = array(); - - $objWEBM = $wmi->Get($strClass); - $arrProp = $objWEBM->Properties_; - $arrWEBMCol = $objWEBM->Instances_(); - foreach($arrWEBMCol as $objItem) - { - @reset($arrProp); - $arrInstance = array(); - foreach($arrProp as $propItem) - { - eval("\$value = \$objItem->" . $propItem->Name . ";"); - if (empty($strValue)) - { - $arrInstance[$propItem->Name] = trim($value); - } - else - { - if (in_array($propItem->Name, $strValue)) - { - $arrInstance[$propItem->Name] = trim($value); - } - } - } - $arrData[] = $arrInstance; - } - return $arrData; -} - -//Determine if memory is less than 1GB, will be displayed MB, otherwise display GB Unit -if($sysInfo['memTotal']<1024) -{ - $memTotal = $sysInfo['memTotal']." MB"; - $mt = $sysInfo['memTotal']." MB"; - $mu = $sysInfo['memUsed']." MB"; - $mf = $sysInfo['memFree']." MB"; - $mc = $sysInfo['memCached']." MB"; //memory cache - $mb = $sysInfo['memBuffers']." MB"; //buffer - $st = $sysInfo['swapTotal']." MB"; - $su = $sysInfo['swapUsed']." MB"; - $sf = $sysInfo['swapFree']." MB"; - $swapPercent = $sysInfo['swapPercent']; - $memRealUsed = $sysInfo['memRealUsed']." MB"; //Real memory usage - $memRealFree = $sysInfo['memRealFree']." MB"; //Real memory free - $memRealPercent = $sysInfo['memRealPercent']; //Real memory usage ratio - $memPercent = $sysInfo['memPercent']; //Total Memory Usage - $memCachedPercent = $sysInfo['memCachedPercent']; //cache memory usage -} -else -{ - $memTotal = round($sysInfo['memTotal']/1024,3)." GB"; - $mt = round($sysInfo['memTotal']/1024,3)." GB"; - $mu = round($sysInfo['memUsed']/1024,3)." GB"; - $mf = round($sysInfo['memFree']/1024,3)." GB"; - $mc = round($sysInfo['memCached']/1024,3)." GB"; - $mb = round($sysInfo['memBuffers']/1024,3)." GB"; - $st = round($sysInfo['swapTotal']/1024,3)." GB"; - $su = round($sysInfo['swapUsed']/1024,3)." GB"; - $sf = round($sysInfo['swapFree']/1024,3)." GB"; - $swapPercent = $sysInfo['swapPercent']; - $memRealUsed = round($sysInfo['memRealUsed']/1024,3)." GB"; //Real memory usage - $memRealFree = round($sysInfo['memRealFree']/1024,3)." GB"; //Real memory free - $memRealPercent = $sysInfo['memRealPercent']; //Real memory usage ratio - $memPercent = $sysInfo['memPercent']; //Total Memory Usage - $memCachedPercent = $sysInfo['memCachedPercent']; //cache memory usage -} -?> - - <div class="row"> - - <?php - $tmp = array( - 'memTotal', 'memUsed', 'memFree', 'memPercent', - 'memCached', 'memRealPercent', - 'swapTotal', 'swapUsed', 'swapFree', 'swapPercent' - ); - foreach ($tmp AS $v) { - $sysInfo[$v] = $sysInfo[$v] ? $sysInfo[$v] : 0; - } - ?> - <!-- PHSYSICAL MEMORY USAGE --> - <div class="col-sm-12"> - <!--div class="vertical-container"--> - <p style="font-size:10px"><?php echo T('PHYSICAL_MEMORY_TITLE'); ?>: <?php echo "$memPercent"; ?>%<br/> - <?php echo T('PHYSICAL_MEMORY_USED_TXT'); ?>: <font color='#CC0000'><?php echo "$mu"; ?></font> | <?php echo T('PHYSICAL_MEMORY_IDLE_TXT'); ?>: <font color='#CC0000'><?php echo "$mf"; ?></font> - </p> - <div class="progress progress-striped"> - <?php - if ($memPercent < "70") { $ramcolor="progress-bar-success"; } - if ($memPercent > "70") { $ramcolor="progress-bar-warning"; } - if ($memPercent > "90") { $ramcolor="progress-bar-danger"; } - ?> - <div style="width:<?php echo "$memPercent"; ?>%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="<?php echo "$memPercent"; ?>" role="progressbar" class="progress-bar <?php echo $ramcolor ?>"> - <span class="sr-only"><?php echo "$memPercent"; ?>% <?php echo T('USED'); ?></span> - </div> - </div> - <!--/div--> - </div> - - <?php - //Determine if the cache is zero , no display - if($sysInfo['memCached']>0) - { - ?> - <!-- CACHED MEMORY USAGE --> - <div class="col-sm-12" style="padding-top:10px"> - <!--div class="vertical-container"--> - <p style="font-size:10px"><?php echo T('CACHED_MEMORY_TITLE'); ?>: <?php echo "$memCachedPercent"; ?>%<br/> - <?php echo T('CACHED_MEMORY_USAGE_TXT'); ?> <?php echo "$mc"; ?> | <?php echo T('CACHED_MEMORY_BUFFERS_TXT'); ?> <?php echo "$mb"; ?></p> - <div class="progress progress-striped"> - <?php - if ($memCachedPercent < "70") { $ramcolor="progress-bar-success"; } - if ($memCachedPercent > "70") { $ramcolor="progress-bar-warning"; } - if ($memCachedPercent > "90") { $ramcolor="progress-bar-danger"; } - ?> - <div style="width:<?php echo "$memCachedPercent"; ?>%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="<?php echo "$memCachedPercent"; ?>" role="progressbar" class="progress-bar <?php echo $ramcolor ?>"> - <span class="sr-only"><?php echo "$memCachedPercent"; ?>% <?php echo T('USED'); ?></span> - </div> - </div> - <!--/div--> - </div> - <!-- REAL MEMORY USAGE --> - <div class="col-sm-12" style="padding-top:10px"> - <!--div class="vertical-container"--> - <p style="font-size:10px"><?php echo T('REAL_MEMORY_TITLE'); ?>: <?php echo "$memRealPercent"; ?>%<br/> - <?php echo T('REAL_MEMORY_USAGE_TXT'); ?> <?php echo "$memRealUsed"; ?> | <?php echo T('REAL_MEMORY_FREE_TXT'); ?> <?php echo "$memRealFree"; ?></p> - <div class="progress progress-striped"> - <?php - if ($memRealPercent < "70") { $ramcolor="progress-bar-success"; } - if ($memRealPercent > "70") { $ramcolor="progress-bar-warning"; } - if ($memRealPercent > "90") { $ramcolor="progress-bar-danger"; } - ?> - <div style="width:<?php echo "$memRealPercent"; ?>%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="<?php echo "$memRealPercent"; ?>" role="progressbar" class="progress-bar <?php echo $ramcolor ?>"> - <span class="sr-only"><?php echo "$memRealPercent"; ?>% <?php echo T('USED'); ?></span> - </div> - </div> - <!--/div--> - </div> - - <?php - } - //If SWAP district judge is 0, no display - if($sysInfo['swapTotal']>0) - { - ?> - <!-- SWAP USAGE --> - <div class="col-sm-12" style="padding-top:10px"> - <!--div class="vertical-container"--> - <p style="font-size:10px"><?php echo T('SWAP_TITLE'); ?>: <?php echo "$swapPercent"; ?>%<br/> - <?php echo T('SWAP_TOTAL_TXT'); ?>: <?php echo T('TOTAL_L'); ?> <?php echo $st;?> | <?php echo T('SWAP_USED_TXT'); ?> <?php echo "$su"; ?> | <?php echo T('SWAP_IDLE_TXT'); ?> <?php echo "$sf"; ?></p> - <div class="progress progress-striped"> - <?php - if ($swapPercent < "70") { $ramcolor="progress-bar-success"; } - if ($swapPercent > "70") { $ramcolor="progress-bar-warning"; } - if ($swapPercent > "90") { $ramcolor="progress-bar-danger"; } - ?> - <div style="width:<?php echo "$swapPercent"; ?>%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="<?php echo "$swapPercent"; ?>" role="progressbar" class="progress-bar <?php echo $ramcolor ?>"> - <span class="sr-only"><?php echo "$swapPercent"; ?>% <?php echo T('USED'); ?></span> - </div> - </div> - <!--/div--> - </div> - <?php - } - ?> - - </div> - <hr /> - <h3><?php echo T('TOTAL_RAM'); ?></h3> - <h4 class="nomargin"><?php echo $memTotal;?> - <?php if ($username == "$master") { ?> - <a href="?clean_mem=true" id="cleanmem" data-toggle="modal" data-target="#sysResponse" style="margin: 0 auto"> <button class="btn btn-xs btn-default pull-right"><?php echo T('CLEAR_CACHE'); ?></button></a> - <?php } ?> - </h4> diff --git a/dashboard/widgets/shout.sql b/dashboard/widgets/shout.sql deleted file mode 100644 index 0265f737..00000000 --- a/dashboard/widgets/shout.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE TABLE `shouts` ( - `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, - `name` VARCHAR(45) NOT NULL, - `email` VARCHAR(60) NOT NULL, - `post` TEXT NOT NULL, - `ipaddress` VARCHAR(45) NOT NULL, - PRIMARY KEY (`id`) -); diff --git a/dashboard/widgets/stat.php b/dashboard/widgets/stat.php deleted file mode 100644 index 61c9b7ad..00000000 --- a/dashboard/widgets/stat.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -$interface = INETFACE; -header('Content-Type: text/event-stream'); -header('Cache-Control: no-cache'); -$data['rec'] = exec("cat /sys/class/net/INETFACE/statistics/rx_bytes"); -$data['snd'] = exec("cat /sys/class/net/INETFACE/statistics/tx_bytes"); -$output = json_encode($data); -echo "retry: 1000\n"; -echo "data: {$output}\n\n"; -flush(); diff --git a/dashboard/widgets/sys_data.php b/dashboard/widgets/sys_data.php deleted file mode 100644 index adf231ed..00000000 --- a/dashboard/widgets/sys_data.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -if (isset($_GET['clean_mem'])) { - header('Location: //'); - shell_exec("sudo /usr/local/bin/quickbox/system/clean_mem"); -} - -if (isset($_GET['clean_log'])) { - header('Location: /'); - shell_exec("sudo /usr/local/bin/quickbox/system/clean_log"); -} - -if (isset($_GET['updateQuickBox'])) { - header('Location: //'); - shell_exec("sudo /usr/local/bin/quickbox/system/box upgrade"); -} - -if (isset($_GET['updatetestingQuickBox'])) { - header('Location: //'); - shell_exec("sudo /usr/local/bin/quickbox/system/updatetestingQuickBox"); -} -?> diff --git a/dashboard/widgets/up.php b/dashboard/widgets/up.php deleted file mode 100644 index 284cbf80..00000000 --- a/dashboard/widgets/up.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -include ("../inc/localize.php"); - header('Refresh: 1'); - header('Content-Type: text/event-stream'); - header('Cache-Control: no-cache'); - $uptime = shell_exec("cut -d. -f1 /proc/uptime"); - $days = floor($uptime/60/60/24); - $hours = $uptime/60/60%24; - $mins = $uptime/60%60; - $secs = $uptime%60; -?> - <span style="font-size:14px;color:#dedede;"><b><?php echo "$days" ?></b> <small><?php echo T('DAYS_L'); ?></small> <b><?php echo "$hours" ?></b> <small><?php echo T('HOURS_L'); ?></small> <b><?php echo "$mins" ?></b> <small><?php echo T('MINUTES_L'); ?></small> <b><?php echo "$secs" ?></b> <small><?php echo T('SECONDS_L'); ?></small></span> -<?php flush(); ?> diff --git a/dashboard/widgets/vnstat.php b/dashboard/widgets/vnstat.php deleted file mode 100644 index f7ab3c92..00000000 --- a/dashboard/widgets/vnstat.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php - -// Valid values for other parameters you can pass to the script. -// Input parameters will always be limited to one of the values listed here. -// If a parameter is not provided or invalid it will revert to the default, -// the first parameter in the list. - - if (isset($_SERVER['PHP_SELF'])) { - $script = $_SERVER['PHP_SELF']; - } elseif (isset($_SERVER['SCRIPT_NAME'])) { - $script = $_SERVER['SCRIPT_NAME']; - } else { - die('can\'t determine script name!'); - } - - $page_list = array('s','h','d','m'); - - $page_title['s'] = T('summary'); - $page_title['h'] = T('hours'); - $page_title['d'] = T('days'); - $page_title['m'] = T('months'); - - - // - // functions - // - function validate_input() { - global $page, $page_list; - global $iface, $iface_list; - // - // get interface data - // - $page = isset($_GET['page']) ? $_GET['page'] : ''; - $iface = isset($_GET['if']) ? $_GET['if'] : ''; - - if (!in_array($page, $page_list)) { - $page = $page_list[0]; - } - - if (!in_array($iface, $iface_list)) { - $iface = $iface_list[0]; - } - } - - - function get_vnstat_data($use_label=true) { - global $iface, $vnstat_bin, $data_dir; - global $hour,$day,$month,$top,$summary; - $vnstat_data = array(); - if (!isset($vnstat_bin) || $vnstat_bin == '') { - if (file_exists("$data_dir/vnstat_dump_$iface")) { - $vnstat_data = file("$data_dir/vnstat_dump_$iface"); - } - } else { - $fd = popen("$vnstat_bin --dumpdb -i $iface", "r"); - if (is_resource($fd)) { - $buffer = ''; - while (!feof($fd)) { - $buffer .= fgets($fd); - } - $vnstat_data = explode("\n", $buffer); - pclose($fd); - } - } - - $day = array(); - $hour = array(); - $month = array(); - $top = array(); - - if (isset($vnstat_data[0]) && strpos($vnstat_data[0], 'Error') !== false) { - return; - } - - // - // extract data - // - foreach($vnstat_data as $line) { - $d = explode(';', trim($line)); - if ($d[0] == 'd') { - $day[$d[1]]['time'] = $d[2]; - $day[$d[1]]['rx'] = $d[3] * 1024 + $d[5]; - $day[$d[1]]['tx'] = $d[4] * 1024 + $d[6]; - $day[$d[1]]['act'] = $d[7]; - if ($d[2] != 0 && $use_label) { - $day[$d[1]]['label'] = strftime(T('datefmt_days'),$d[2]); - $day[$d[1]]['img_label'] = strftime(T('datefmt_days_img'), $d[2]); - } elseif($use_label) { - $day[$d[1]]['label'] = ''; - $day[$d[1]]['img_label'] = ''; - } - } else if ($d[0] == 'm') { - $month[$d[1]]['time'] = $d[2]; - $month[$d[1]]['rx'] = $d[3] * 1024 + $d[5]; - $month[$d[1]]['tx'] = $d[4] * 1024 + $d[6]; - $month[$d[1]]['act'] = $d[7]; - if ($d[2] != 0 && $use_label) { - $month[$d[1]]['label'] = strftime(T('datefmt_months'), $d[2]); - $month[$d[1]]['img_label'] = strftime(T('datefmt_months_img'), $d[2]); - } else if ($use_label) { - $month[$d[1]]['label'] = ''; - $month[$d[1]]['img_label'] = ''; - } - } else if ($d[0] == 'h') { - $hour[$d[1]]['time'] = $d[2]; - $hour[$d[1]]['rx'] = $d[3]; - $hour[$d[1]]['tx'] = $d[4]; - $hour[$d[1]]['act'] = 1; - if ($d[2] != 0 && $use_label) { - $st = $d[2] - ($d[2] % 3600); - $et = $st + 3600; - $hour[$d[1]]['label'] = strftime(T('datefmt_hours'), $st).' - '.strftime(T('datefmt_hours'), $et); - $hour[$d[1]]['img_label'] = strftime(T('datefmt_hours_img'), $d[2]); - } else if ($use_label) { - $hour[$d[1]]['label'] = ''; - $hour[$d[1]]['img_label'] = ''; - } - } else if ($d[0] == 't') { - $top[$d[1]]['time'] = $d[2]; - $top[$d[1]]['rx'] = $d[3] * 1024 + $d[5]; - $top[$d[1]]['tx'] = $d[4] * 1024 + $d[6]; - $top[$d[1]]['act'] = $d[7]; - if($use_label) { - $top[$d[1]]['label'] = strftime(T('datefmt_top'), $d[2]); - $top[$d[1]]['img_label'] = ''; - } - } else { - $summary[$d[0]] = isset($d[1]) ? $d[1] : ''; - } - } - - rsort($day); - rsort($month); - rsort($hour); - } -?> From fdbcbf8302b7ec8f96c63b0631b8c65a00625ce3 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Thu, 20 Apr 2017 15:46:23 -0500 Subject: [PATCH 02/14] update from defaulted and create theme.lock if none exist --- packages/system/updateQuickBox | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/system/updateQuickBox b/packages/system/updateQuickBox index dea98cd1..21d2dc50 100644 --- a/packages/system/updateQuickBox +++ b/packages/system/updateQuickBox @@ -270,11 +270,13 @@ function _updatedashboard() { fi else if [[ -n $(find /srv/rutorrent/home/db -name "branding-*.php") ]]; then - rsync -aP --exclude=disk_*.php --exclude=branding-l.php --exclude=share.php --exclude=custom.menu.php --exclude=url.override.php --exclude=custom.css ${local_dashboard}* ${rutorrent}home + rsync -aP --exclude=disk_*.php --exclude=branding-l.php --exclude=share.php --exclude=custom.menu.php --exclude=url.override.php --exclude=custom.css ${local_themes}defaulted/* ${rutorrent}home rm -f /srv/rutorrent/home/lang/*.php + touch /srv/rutorrent/home/db/.defaulted.lock else - rsync -aP --exclude=disk_*.php --exclude=share.php --exclude=custom.menu.php --exclude=url.override.php --exclude=custom.css ${local_dashboard}* ${rutorrent}home + rsync -aP --exclude=disk_*.php --exclude=share.php --exclude=custom.menu.php --exclude=url.override.php --exclude=custom.css ${local_themes}defaulted/* ${rutorrent}home rm -f /srv/rutorrent/home/lang/*.php + touch /srv/rutorrent/home/db/.defaulted.lock fi fi From 10fd1c696a0f7a8797895897d430b9fa4e014181 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 01:11:36 -0500 Subject: [PATCH 03/14] stage radarr for panel usage --- themes/smoked/inc/panel.scripts.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/themes/smoked/inc/panel.scripts.php b/themes/smoked/inc/panel.scripts.php index 1f8bdcf4..d49f6c23 100644 --- a/themes/smoked/inc/panel.scripts.php +++ b/themes/smoked/inc/panel.scripts.php @@ -252,6 +252,24 @@ </div><!-- modal-content --> </div><!-- modal-dialog --> </div><!-- modal --> +<!-- RADARR UNINSTALL MODAL --> +<div class="modal bounceIn animated" id="radarrRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="RadarrRemovalConfirm" aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h4 class="modal-title" id="RadarrRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Radarr?</h4> + </div> + <div class="modal-body"> + <?php echo T('UNINSTALL_RADARR_TXT'); ?> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> + <a href="?removepackage-radarr=true" id="radarrRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> + </div> + </div><!-- modal-content --> + </div><!-- modal-dialog --> +</div><!-- modal --> <!-- RAPIDLEECH UNINSTALL MODAL --> <div class="modal bounceIn animated" id="rapidleechRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="RapidleechRemovalConfirm" aria-hidden="true"> <div class="modal-dialog"> From 15d0b88d277fb04cbf5193b4233dddff99869b96 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 01:12:01 -0500 Subject: [PATCH 04/14] insert package installer/remover for Radarr --- .../package/install/installpackage-radarr | 110 ++++++++++++++++++ packages/package/remove/removepackage-radarr | 8 ++ 2 files changed, 118 insertions(+) create mode 100644 packages/package/install/installpackage-radarr create mode 100644 packages/package/remove/removepackage-radarr diff --git a/packages/package/install/installpackage-radarr b/packages/package/install/installpackage-radarr new file mode 100644 index 00000000..5dba0a33 --- /dev/null +++ b/packages/package/install/installpackage-radarr @@ -0,0 +1,110 @@ +#!/bin/bash +# +# [Quick Box :: Install Radarr package] +# +# GITHUB REPOS +# GitHub _ packages : https://github.com/PastaGringo/scripts +# LOCAL REPOS +# Local _ packages : /etc/QuickBox/packages +# Author : PastaGringo +# URL : https://plaza.quickbox.io +# +# QuickBox Copyright (C) 2017 QuickBox.io +# Licensed under GNU General Public License v3.0 GPL-3 (in short) +# +# You may copy, distribute and modify the software as long as you track +# changes/dates in source files. Any modifications to our software +# including (via compiler) GPL-licensed code must also be made available +# under the GPL along with build & install instructions. + +function _radarr_intro() { + echo "Radarr will now be installed." >>"${OUTTO}" 2>&1; + echo "This process may take up to 2 minutes." >>"${OUTTO}" 2>&1; + echo "Please wait until install is completed." >>"${OUTTO}" 2>&1; + echo + sleep 5 +} + +function _radarr_dependencies() { + apt update >/dev/null 2>&1 + apt-get install -y mono-runtime curl mediainfo >/dev/null 2>&1 +} + +function _radarr_install() { + cd /opt + wget https://github.com/Radarr/Radarr/releases/download/v0.2.0.210/Radarr.develop.0.2.0.210.linux.tar.gz >/dev/null 2>&1 + tar -xvzf /opt/Radarr.develop.0.2.0.210.linux.tar.gz >/dev/null 2>&1 + rm -rf /opt/Radarr.develop.0.2.0.210.linux.tar.gz +} + +function _radarr_configure() { +cat > /etc/systemd/system/radarr.service <<EOF +[Unit] +Description=Radarr Daemon +After=syslog.target network.target +[Service] +User=${username} +Group=${username} +Type=simple +ExecStart=/usr/bin/mono /opt/Radarr/Radarr.exe -nobrowser +TimeoutStopSec=20 +KillMode=process +Restart=on-failure +[Install] +WantedBy=multi-user.target +EOF + +cat > /etc/apache2/sites-enabled/radarr.conf <<EOF +<Location /radarr> +ProxyPass http://localhost:7878/radarr +ProxyPassReverse http://localhost:7878/radarr +AuthType Digest +AuthName "rutorrent" +AuthUserFile '/etc/htpasswd' +Require user ${username} +</Location> +EOF +chown -R ${username}: /opt/Radarr/ +chown www-data: /etc/apache2/sites-enabled/radarr.conf +systemctl enable radarr.service >/dev/null 2>&1 +systemctl daemon-reload +systemctl start radarr.service +sleep 10 +systemctl stop radarr.service +sleep 10 +sed -i "s/<UrlBase>.*/<UrlBase>radarr<\/UrlBase>/g" /home/${username}/.config/Radarr/config.xml +sed -i "s/<BindAddress>.*/<BindAddress>127.0.0.1<\/BindAddress>/g" /home/${username}/.config/Radarr/config.xml +service apache2 restart +} + +function _radarr_start() { +systemctl start radarr.service +touch /install/.radarr.lock +} + +function _radarr_final() { + echo "Radarr Install Complete!" >>"${OUTTO}" 2>&1; + echo "You can access it at : http://$ip/radarr" >>"${OUTTO}" 2>&1; + echo >>"${OUTTO}" 2>&1; + echo >>"${OUTTO}" 2>&1; + echo "Close this dialog box to refresh your browser" >>"${OUTTO}" 2>&1; +} + +#function _radarr_exit() { +# exit +#} + +OUTTO=/srv/rutorrent/home/db/output.log +local_setup=/etc/QuickBox/setup/ +local_packages=/etc/QuickBox/packages/ +username=$(cat /srv/rutorrent/home/db/master.txt) +distribution=$(lsb_release -is) +ip=$(curl -s http://whatismyip.akamai.com) + +_radarr_intro +echo "Installing dependencies ... " >>"${OUTTO}" 2>&1;_radarr_dependencies +echo "Installing Radar ... " >>"${OUTTO}" 2>&1;_radarr_install +echo "Configuring Radar ... " >>"${OUTTO}" 2>&1;_radarr_configure +echo "Starting Radar ... " >>"${OUTTO}" 2>&1;_radarr_start +_radarr_final +#_radarr_exit diff --git a/packages/package/remove/removepackage-radarr b/packages/package/remove/removepackage-radarr new file mode 100644 index 00000000..88e60030 --- /dev/null +++ b/packages/package/remove/removepackage-radarr @@ -0,0 +1,8 @@ +#!/bin/sh +systemctl stop radarr +systemctl disable radarr +rm -rf /etc/systemd/system/radarr.service +rm -rf /opt/Radarr +rm -rf /etc/apache2/sites-enabled/radarr.conf +rm -rf /install/.radarr.lock +echo "Radarr uninstalled!" From b5b40a98ef5c6896ee91427bfc52daa21740f093 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 14:50:40 -0500 Subject: [PATCH 05/14] can now view/compare current commit status to latest --- themes/defaulted/index.php | 33 +++++++++++++++++---------------- themes/smoked/index.php | 33 +++++++++++++++++---------------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/themes/defaulted/index.php b/themes/defaulted/index.php index f142fcfa..1374bbd6 100644 --- a/themes/defaulted/index.php +++ b/themes/defaulted/index.php @@ -541,26 +541,27 @@ </div> </div><!-- CPU WIDGET --> <?php if ($username == "$master") { ?> - <div class="col-sm-12"> - <div id="project-commits" class="panel panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title text-success"><?php echo T('RECENT_UPDATES'); ?> + <div class="col-sm-12"> + <div id="project-commits" class="panel panel-inverse"> + <div class="panel-heading"> + <h4 class="panel-title text-success"><?php echo T('RECENT_UPDATES'); ?> - <small><a href="https://github.com/QuickBox/QB/compare/<?php echo $version ?>...master" target="blank" title="Compare recent QuickBox versions to latest commits" data-placement="top" class="label label-primary tooltips" style="font-size:10px; padding-top:0; padding-bottom:0px; top: -2px; position: relative;" target='_blank'>QuickBox :: <span style="color: #fff;text-shadow: 0px 0px 6px #fff;"><?php echo "$version"; ?></span></a></small> + <a href="https://github.com/QuickBox/QB/compare/<?php echo $version ?>...master" target="blank" title="View your current versions changelog" data-placement="top" class="label label-primary tooltips" style="font-size:10px; padding-top:0; padding-bottom:0px; top: -2px; position: relative;" target='_blank'>QuickBox :: <span style="color: #fff;text-shadow: 0px 0px 6px #fff;"><?php echo "$version"; ?></span></a></small> - </h4> - </div> - <div class="panel-body ps-container" style="max-height: 350px; padding: 0;"> - <div class="alert alert-default" style="margin-bottom: 4px; text-align: center" role="alert"> - <strong><?php echo T('RECENT_UPDATES_TXT'); ?></strong> + </h4> + </div> + <div class="panel-body ps-container" style="max-height: 350px; padding: 0;"> + <div class="alert alert-default" style="margin-bottom: 4px; text-align: center" role="alert"> + You are on QuickBox commit - <code><a href="https://github.com/QuickBox/QB/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank" title="View your current commit status" data-placement="top" class="tooltips"><?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/QB/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank" title="Compare your current status to the latest commits" data-placement="top" class="tooltips">latest</a></code></a><br> + <strong><?php echo T('RECENT_UPDATES_TXT'); ?></strong> + </div> + <div id="activityfeed"></div> + </div> + <div class="panel-footer"> + <a href="?updateQuickBox=true" data-toggle="modal" data-target="#sysResponse"><button class="btn btn-success btn-quirk btn-block"><i class="fa fa-bell text-success"></i> <?php echo T('UPDATE'); ?> </button></a> </div> - <div id="activityfeed"></div> - </div> - <div class="panel-footer"> - <a href="?updateQuickBox=true" data-toggle="modal" data-target="#sysResponse"><button class="btn btn-success btn-quirk btn-block"><i class="fa fa-bell text-success"></i> <?php echo T('UPDATE'); ?> </button></a> </div> - </div> - </div><!-- QUICKBOX UPDATE WIDGET --> + </div><!-- QUICKBOX UPDATE WIDGET --> <?php } ?> </div><!-- row --> </div> diff --git a/themes/smoked/index.php b/themes/smoked/index.php index a154170e..f10d6961 100644 --- a/themes/smoked/index.php +++ b/themes/smoked/index.php @@ -541,26 +541,27 @@ </div> </div><!-- CPU WIDGET --> <?php if ($username == "$master") { ?> - <div class="col-sm-12"> - <div id="project-commits" class="panel panel-inverse"> - <div class="panel-heading"> - <h4 class="panel-title text-success"><?php echo T('RECENT_UPDATES'); ?> + <div class="col-sm-12"> + <div id="project-commits" class="panel panel-inverse"> + <div class="panel-heading"> + <h4 class="panel-title text-success"><?php echo T('RECENT_UPDATES'); ?> - <small><a href="https://github.com/QuickBox/QB/compare/<?php echo $version ?>...master" target="blank" title="Compare recent QuickBox versions to latest commits" data-placement="top" class="label label-primary tooltips" style="font-size:10px; padding-top:0; padding-bottom:0px; top: -2px; position: relative;" target='_blank'>QuickBox :: <span style="color: #fff;text-shadow: 0px 0px 6px #fff;"><?php echo "$version"; ?></span></a></small> + <a href="https://github.com/QuickBox/QB/compare/<?php echo $version ?>...master" target="blank" title="View your current versions changelog" data-placement="top" class="label label-primary tooltips" style="font-size:10px; padding-top:0; padding-bottom:0px; top: -2px; position: relative;" target='_blank'>QuickBox :: <span style="color: #fff;text-shadow: 0px 0px 6px #fff;"><?php echo "$version"; ?></span></a></small> - </h4> - </div> - <div class="panel-body ps-container" style="max-height: 350px; padding: 0;"> - <div class="alert alert-default" style="margin-bottom: 4px; text-align: center" role="alert"> - <strong><?php echo T('RECENT_UPDATES_TXT'); ?></strong> + </h4> + </div> + <div class="panel-body ps-container" style="max-height: 350px; padding: 0;"> + <div class="alert alert-default" style="margin-bottom: 4px; text-align: center" role="alert"> + You are on QuickBox commit - <code><a href="https://github.com/QuickBox/QB/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank" title="View your current commit status" data-placement="top" class="tooltips"><?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/QB/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank" title="Compare your current status to the latest commits" data-placement="top" class="tooltips">latest</a></code></a><br> + <strong><?php echo T('RECENT_UPDATES_TXT'); ?></strong> + </div> + <div id="activityfeed"></div> + </div> + <div class="panel-footer"> + <a href="?updateQuickBox=true" data-toggle="modal" data-target="#sysResponse"><button class="btn btn-success btn-quirk btn-block"><i class="fa fa-bell text-success"></i> <?php echo T('UPDATE'); ?> </button></a> </div> - <div id="activityfeed"></div> - </div> - <div class="panel-footer"> - <a href="?updateQuickBox=true" data-toggle="modal" data-target="#sysResponse"><button class="btn btn-success btn-quirk btn-block"><i class="fa fa-bell text-success"></i> <?php echo T('UPDATE'); ?> </button></a> </div> - </div> - </div><!-- QUICKBOX UPDATE WIDGET --> + </div><!-- QUICKBOX UPDATE WIDGET --> <?php } ?> </div><!-- row --> </div> From acd909cd8d3bef6fcc718c9ed95e736d60a603a6 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 14:59:06 -0500 Subject: [PATCH 06/14] add conditions to commit comparison (if developer view development) --- themes/smoked/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/smoked/index.php b/themes/smoked/index.php index f10d6961..f60ca784 100644 --- a/themes/smoked/index.php +++ b/themes/smoked/index.php @@ -552,7 +552,7 @@ </div> <div class="panel-body ps-container" style="max-height: 350px; padding: 0;"> <div class="alert alert-default" style="margin-bottom: 4px; text-align: center" role="alert"> - You are on QuickBox commit - <code><a href="https://github.com/QuickBox/QB/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank" title="View your current commit status" data-placement="top" class="tooltips"><?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/QB/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank" title="Compare your current status to the latest commits" data-placement="top" class="tooltips">latest</a></code></a><br> + You are on QuickBox commit - <code><a href="https://github.com/QuickBox/QB/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank" title="View your current commit status" data-placement="top" class="tooltips"><?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/QB/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...<?php if (file_exists('/install/.developer.lock')) { ?>development<?php } else { ?>master<?php } ?>" target="_blank" title="Compare your current status to the latest commits" data-placement="top" class="tooltips">latest</a></code></a><br> <strong><?php echo T('RECENT_UPDATES_TXT'); ?></strong> </div> <div id="activityfeed"></div> From b1c7bddea337d2fc0dacc83d2ba1089d4a28c354 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 15:57:19 -0500 Subject: [PATCH 07/14] [wip] build radarr into smoked theme --- themes/smoked/img/brands/radarr.png | Bin 0 -> 2169 bytes themes/smoked/inc/config.php | 17 +++++++++++++++++ themes/smoked/inc/panel.menu.php | 3 +++ themes/smoked/index.php | 17 +++++++++++++++++ themes/smoked/widgets/package_data.php | 1 + 5 files changed, 38 insertions(+) create mode 100644 themes/smoked/img/brands/radarr.png diff --git a/themes/smoked/img/brands/radarr.png b/themes/smoked/img/brands/radarr.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fe93db5f727a780b800fba1dddca9021db9a3a GIT binary patch literal 2169 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 literal 0 HcmV?d00001 diff --git a/themes/smoked/inc/config.php b/themes/smoked/inc/config.php index 359e76ac..faf04862 100644 --- a/themes/smoked/inc/config.php +++ b/themes/smoked/inc/config.php @@ -260,6 +260,7 @@ function processExists($processName, $username) { $plexpy = processExists("plexpy",plexpy); $ombi = processExists("ombi",$username); $pyload = processExists("pyload",$username); +$radarr = processExists("radarr",$username); $rtorrent = processExists("rtorrent",$username); $sabnzbd = processExists("sabnzbd",$username); $sickrage = processExists("sickrage",$username); @@ -300,6 +301,7 @@ function isEnabled($process, $username){ $plexpyURL = "https://" . $_SERVER['HTTP_HOST'] . "/plexpy"; $ombiURL = "https://" . $_SERVER['HTTP_HOST'] . "/ombi"; $pyloadURL = "http://" . $_SERVER['HTTP_HOST'] . ":8000"; + $radarrURL = "https://" . $_SERVER['HTTP_HOST'] . "/radarr"; $rapidleechURL = "https://" . $_SERVER['HTTP_HOST'] . "/rapidleech"; $sabnzbdURL = "https://" . $_SERVER['HTTP_HOST'] . "/sabnzbd"; $sickrageURL = "https://" . $_SERVER['HTTP_HOST'] . "/sickrage"; @@ -369,6 +371,10 @@ function isEnabled($process, $username){ } else { $qval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; } +if ($radarr == "1") { $radval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; +} else { $radval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; +} + if (file_exists('/install/.rapidleech.lock')) { $rlval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; } else { $rlval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; } @@ -442,6 +448,8 @@ function isEnabled($process, $username){ $cbodypl .= $pyload; $quassel = isEnabled("quassel", $username); $cbodyq .= $quassel; + $radarr = isEnabled("radarr", $username); + $cbodyrad .= $radarr; $rapidleech = isEnabled("rapidleech", $username); $cbodyrl .= $rapidleech; $sabnzbd = isEnabled("sabnzbd", $username); @@ -482,6 +490,9 @@ function isEnabled($process, $username){ } elseif ($process == "ombi"){ shell_exec("sudo systemctl enable $process"); shell_exec("sudo systemctl start $process"); + } elseif ($process == "radarr"){ + shell_exec("sudo systemctl enable $process"); + shell_exec("sudo systemctl start $process"); } elseif ($process == "subsonic"){ shell_exec("sudo systemctl enable $process"); shell_exec("sudo systemctl start $process"); @@ -513,6 +524,9 @@ function isEnabled($process, $username){ } elseif ($process == "ombi"){ shell_exec("sudo systemctl stop $process"); shell_exec("sudo systemctl disable $process"); + } elseif ($process == "radarr"){ + shell_exec("sudo systemctl stop $process"); + shell_exec("sudo systemctl disable $process"); } elseif ($process == "subsonic"){ shell_exec("sudo systemctl stop $process"); shell_exec("sudo systemctl disable $process"); @@ -544,6 +558,9 @@ function isEnabled($process, $username){ } elseif ($process == "ombi"){ shell_exec("sudo systemctl enable $process"); shell_exec("sudo systemctl restart $process"); + } elseif ($process == "radarr"){ + shell_exec("sudo systemctl enable $process"); + shell_exec("sudo systemctl restart $process"); } elseif ($process == "subsonic"){ shell_exec("sudo systemctl enable $process"); shell_exec("sudo systemctl restart $process"); diff --git a/themes/smoked/inc/panel.menu.php b/themes/smoked/inc/panel.menu.php index ea5e17ab..866f045c 100644 --- a/themes/smoked/inc/panel.menu.php +++ b/themes/smoked/inc/panel.menu.php @@ -163,6 +163,9 @@ <?php if (file_exists('/install/.pyload.lock')) { ?> <li><a class="grayscale" href="<?php echo "$pyloadURL"; ?>" target="_blank"><img src="img/brands/pyload.png" class="brand-ico"> <span>pyLoad</span></a></li> <?php } ?> + <?php if (file_exists('/install/.radarr.lock')) { ?> + <li><a class="grayscale" href="<?php echo "$radarrURL"; ?>" target="_blank"><img src="img/brands/radarr.png" class="brand-ico"> <span>Radarr</span></a></li> + <?php } ?> <?php if (file_exists('/install/.rapidleech.lock')) { ?> <li><a class="grayscale" href="<?php echo "$rapidleechURL"; ?>" target="_blank"><img src="img/brands/rapidleech.png" class="brand-ico"> <span>Rapidleech</span></a></li> <?php } ?> diff --git a/themes/smoked/index.php b/themes/smoked/index.php index f60ca784..86b0d477 100644 --- a/themes/smoked/index.php +++ b/themes/smoked/index.php @@ -195,6 +195,14 @@ </tr> <?php } ?> + <?php if (file_exists("/install/.radarr.lock")) { ?> + <tr> + <td><?php echo "$plval"; ?> Radarr </td> + <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=radarr'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> + <td class="text-center"><?php echo "$cbodyrad"; ?></td> + </tr> + <?php } ?> + <?php if (file_exists("/install/.sabnzbd.lock")) { ?> <tr> <td><?php echo "$srval"; ?> SABnzbd </td> @@ -398,6 +406,15 @@ <td style="vertical-align: middle; text-align: center"><a href="?installpackage-quota=true" data-toggle="modal" data-target="#sysResponse" id="quotaInstall" class="btn btn-xs btn-default"><?php echo T('INSTALL'); ?></a></td> <?php } ?> </tr> + <tr> + <td>Radarr</td> + <td><?php echo T('RADARR'); ?></td> + <?php if (file_exists("/install/.radarr.lock")) { ?> + <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#radarrRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> + <?php } else { ?> + <td style="vertical-align: middle; text-align: center"><a href="?installpackage-radarr=true" data-toggle="modal" data-target="#sysResponse" id="radarrInstall" class="btn btn-xs btn-default"><?php echo T('INSTALL'); ?></a></td> + <?php } ?> + </tr> <tr> <td>Rapidleech</td> <td><?php echo T('RAPIDLEECH'); ?></td> diff --git a/themes/smoked/widgets/package_data.php b/themes/smoked/widgets/package_data.php index 05851731..6f3e3349 100644 --- a/themes/smoked/widgets/package_data.php +++ b/themes/smoked/widgets/package_data.php @@ -13,6 +13,7 @@ 'plexpy', 'ombi', 'pyload', + 'radarr', 'rapidleech', 'sabnzbd', 'sickrage', From e628ce493492845b72b0183a9e74855245f86c1e Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 15:59:41 -0500 Subject: [PATCH 08/14] fix radarr value on service switch --- themes/smoked/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/smoked/index.php b/themes/smoked/index.php index 86b0d477..b2518769 100644 --- a/themes/smoked/index.php +++ b/themes/smoked/index.php @@ -197,7 +197,7 @@ <?php if (file_exists("/install/.radarr.lock")) { ?> <tr> - <td><?php echo "$plval"; ?> Radarr </td> + <td><?php echo "$radval"; ?> Radarr </td> <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=radarr'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> <td class="text-center"><?php echo "$cbodyrad"; ?></td> </tr> From 3b3f93af710df9e783de717a8cb921f237ddfc7b Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 16:25:48 -0500 Subject: [PATCH 09/14] match themes --- themes/defaulted/db/.gitignore | 3 +- themes/defaulted/db/branding-l.php | 1 + themes/defaulted/img/brands/radarr.png | Bin 0 -> 2169 bytes themes/defaulted/inc/config.php | 17 + themes/defaulted/inc/localize.php | 2 +- themes/defaulted/inc/panel.menu.php | 3 + themes/defaulted/inc/panel.scripts.php | 19 + themes/defaulted/index.php | 19 +- themes/defaulted/lang/lang_en | 3 + .../lib/datatables/jquery.dataTables.js | 3829 ++++++++--------- themes/defaulted/widgets/package_data.php | 1 + themes/smoked/inc/panel.scripts.php | 19 - themes/smoked/lang/lang_en | 7 +- 13 files changed, 1984 insertions(+), 1939 deletions(-) create mode 100644 themes/defaulted/db/branding-l.php create mode 100644 themes/defaulted/img/brands/radarr.png diff --git a/themes/defaulted/db/.gitignore b/themes/defaulted/db/.gitignore index c145c363..8cf89d78 100644 --- a/themes/defaulted/db/.gitignore +++ b/themes/defaulted/db/.gitignore @@ -3,6 +3,7 @@ # Except this file !.gitignore !.defaulted.lock -#!branding-l.php +!branding-l.php !branding-m.php #!domain.list +#!interface.txt diff --git a/themes/defaulted/db/branding-l.php b/themes/defaulted/db/branding-l.php new file mode 100644 index 00000000..bc5038d9 --- /dev/null +++ b/themes/defaulted/db/branding-l.php @@ -0,0 +1 @@ +<a href="#"><img src="img/logo-dark.png" alt="QuickBox Seedbox" class="logo-image" height="50" /></a> diff --git a/themes/defaulted/img/brands/radarr.png b/themes/defaulted/img/brands/radarr.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fe93db5f727a780b800fba1dddca9021db9a3a GIT binary patch literal 2169 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 literal 0 HcmV?d00001 diff --git a/themes/defaulted/inc/config.php b/themes/defaulted/inc/config.php index 3d2e94f7..67eeeba0 100644 --- a/themes/defaulted/inc/config.php +++ b/themes/defaulted/inc/config.php @@ -260,6 +260,7 @@ function processExists($processName, $username) { $plexpy = processExists("plexpy",plexpy); $ombi = processExists("ombi",$username); $pyload = processExists("pyload",$username); +$radarr = processExists("radarr",$username); $rtorrent = processExists("rtorrent",$username); $sabnzbd = processExists("sabnzbd",$username); $sickrage = processExists("sickrage",$username); @@ -300,6 +301,7 @@ function isEnabled($process, $username){ $plexpyURL = "https://" . $_SERVER['HTTP_HOST'] . "/plexpy"; $ombiURL = "https://" . $_SERVER['HTTP_HOST'] . "/ombi"; $pyloadURL = "http://" . $_SERVER['HTTP_HOST'] . ":8000"; + $radarrURL = "https://" . $_SERVER['HTTP_HOST'] . "/radarr"; $rapidleechURL = "https://" . $_SERVER['HTTP_HOST'] . "/rapidleech"; $sabnzbdURL = "https://" . $_SERVER['HTTP_HOST'] . "/sabnzbd"; $sickrageURL = "https://" . $_SERVER['HTTP_HOST'] . "/sickrage"; @@ -369,6 +371,10 @@ function isEnabled($process, $username){ } else { $qval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; } +if ($radarr == "1") { $radval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; +} else { $radval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; +} + if (file_exists('/install/.rapidleech.lock')) { $rlval = "<span class=\"badge badge-service-running-dot\"></span><span class=\"badge badge-service-running-pulse\"></span>"; } else { $rlval = "<span class=\"badge badge-service-disabled-dot\"></span><span class=\"badge badge-service-disabled-pulse\"></span>"; } @@ -442,6 +448,8 @@ function isEnabled($process, $username){ $cbodypl .= $pyload; $quassel = isEnabled("quassel", $username); $cbodyq .= $quassel; + $radarr = isEnabled("radarr", $username); + $cbodyrad .= $radarr; $rapidleech = isEnabled("rapidleech", $username); $cbodyrl .= $rapidleech; $sabnzbd = isEnabled("sabnzbd", $username); @@ -482,6 +490,9 @@ function isEnabled($process, $username){ } elseif ($process == "ombi"){ shell_exec("sudo systemctl enable $process"); shell_exec("sudo systemctl start $process"); + } elseif ($process == "radarr"){ + shell_exec("sudo systemctl enable $process"); + shell_exec("sudo systemctl start $process"); } elseif ($process == "subsonic"){ shell_exec("sudo systemctl enable $process"); shell_exec("sudo systemctl start $process"); @@ -513,6 +524,9 @@ function isEnabled($process, $username){ } elseif ($process == "ombi"){ shell_exec("sudo systemctl stop $process"); shell_exec("sudo systemctl disable $process"); + } elseif ($process == "radarr"){ + shell_exec("sudo systemctl stop $process"); + shell_exec("sudo systemctl disable $process"); } elseif ($process == "subsonic"){ shell_exec("sudo systemctl stop $process"); shell_exec("sudo systemctl disable $process"); @@ -544,6 +558,9 @@ function isEnabled($process, $username){ } elseif ($process == "ombi"){ shell_exec("sudo systemctl enable $process"); shell_exec("sudo systemctl restart $process"); + } elseif ($process == "radarr"){ + shell_exec("sudo systemctl enable $process"); + shell_exec("sudo systemctl restart $process"); } elseif ($process == "subsonic"){ shell_exec("sudo systemctl enable $process"); shell_exec("sudo systemctl restart $process"); diff --git a/themes/defaulted/inc/localize.php b/themes/defaulted/inc/localize.php index 844b29f3..b47fe742 100644 --- a/themes/defaulted/inc/localize.php +++ b/themes/defaulted/inc/localize.php @@ -1,7 +1,7 @@ <?php $locale = 'en_GB.UTF-8'; $language = 'lang_en'; - setlocale(LC_ALL, en_GB.UTF-8); + setlocale(LC_ALL, 'en_GB.UTF-8'); require ($_SERVER['DOCUMENT_ROOT']."/lang/lang_en"); function T($str) diff --git a/themes/defaulted/inc/panel.menu.php b/themes/defaulted/inc/panel.menu.php index ea5e17ab..866f045c 100644 --- a/themes/defaulted/inc/panel.menu.php +++ b/themes/defaulted/inc/panel.menu.php @@ -163,6 +163,9 @@ <?php if (file_exists('/install/.pyload.lock')) { ?> <li><a class="grayscale" href="<?php echo "$pyloadURL"; ?>" target="_blank"><img src="img/brands/pyload.png" class="brand-ico"> <span>pyLoad</span></a></li> <?php } ?> + <?php if (file_exists('/install/.radarr.lock')) { ?> + <li><a class="grayscale" href="<?php echo "$radarrURL"; ?>" target="_blank"><img src="img/brands/radarr.png" class="brand-ico"> <span>Radarr</span></a></li> + <?php } ?> <?php if (file_exists('/install/.rapidleech.lock')) { ?> <li><a class="grayscale" href="<?php echo "$rapidleechURL"; ?>" target="_blank"><img src="img/brands/rapidleech.png" class="brand-ico"> <span>Rapidleech</span></a></li> <?php } ?> diff --git a/themes/defaulted/inc/panel.scripts.php b/themes/defaulted/inc/panel.scripts.php index 7cba9ad1..965b1390 100644 --- a/themes/defaulted/inc/panel.scripts.php +++ b/themes/defaulted/inc/panel.scripts.php @@ -252,6 +252,24 @@ </div><!-- modal-content --> </div><!-- modal-dialog --> </div><!-- modal --> +<!-- RADARR UNINSTALL MODAL --> +<div class="modal bounceIn animated" id="radarrRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="RadarrRemovalConfirm" aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h4 class="modal-title" id="RadarrRemovalConfirm"><?php echo T('UNINSTALL_TITLE'); ?> Radarr?</h4> + </div> + <div class="modal-body"> + <?php echo T('UNINSTALL_RADARR_TXT'); ?> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> + <a href="?removepackage-radarr=true" id="radarrRemove" class="btn btn-primary"><?php echo T('AGREE'); ?></a> + </div> + </div><!-- modal-content --> + </div><!-- modal-dialog --> +</div><!-- modal --> <!-- RAPIDLEECH UNINSTALL MODAL --> <div class="modal bounceIn animated" id="rapidleechRemovalConfirm" tabindex="-1" role="dialog" aria-labelledby="RapidleechRemovalConfirm" aria-hidden="true"> <div class="modal-dialog"> @@ -493,6 +511,7 @@ close: false, save: true, sortable: true, + stateful: true, draggable: true, reload: false, resize: true, diff --git a/themes/defaulted/index.php b/themes/defaulted/index.php index 1374bbd6..63f4a9eb 100644 --- a/themes/defaulted/index.php +++ b/themes/defaulted/index.php @@ -195,6 +195,14 @@ </tr> <?php } ?> + <?php if (file_exists("/install/.radarr.lock")) { ?> + <tr> + <td><?php echo "$radval"; ?> Radarr </td> + <td class="text-center"><a href="javascript:;" onclick="location.href='?id=88&servicestart=radarr'" class="btn btn-xs btn-default"><i class="fa fa-refresh text-info"></i> <?php echo T('REFRESH'); ?></a></td> + <td class="text-center"><?php echo "$cbodyrad"; ?></td> + </tr> + <?php } ?> + <?php if (file_exists("/install/.sabnzbd.lock")) { ?> <tr> <td><?php echo "$srval"; ?> SABnzbd </td> @@ -398,6 +406,15 @@ <td style="vertical-align: middle; text-align: center"><a href="?installpackage-quota=true" data-toggle="modal" data-target="#sysResponse" id="quotaInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> <?php } ?> </tr> +<tr> + <td>Radarr</td> + <td><?php echo T('RADARR'); ?></td> + <?php if (file_exists("/install/.radarr.lock")) { ?> + <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#radarrRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> + <?php } else { ?> + <td style="vertical-align: middle; text-align: center"><a href="?installpackage-radarr=true" data-toggle="modal" data-target="#sysResponse" id="radarrInstall" class="btn btn-xs btn-default"><?php echo T('INSTALL'); ?></a></td> + <?php } ?> + </tr> <tr> <td>Rapidleech</td> <td><?php echo T('RAPIDLEECH'); ?></td> @@ -552,7 +569,7 @@ </div> <div class="panel-body ps-container" style="max-height: 350px; padding: 0;"> <div class="alert alert-default" style="margin-bottom: 4px; text-align: center" role="alert"> - You are on QuickBox commit - <code><a href="https://github.com/QuickBox/QB/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank" title="View your current commit status" data-placement="top" class="tooltips"><?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/QB/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank" title="Compare your current status to the latest commits" data-placement="top" class="tooltips">latest</a></code></a><br> + You are on QuickBox commit - <code><a href="https://github.com/QuickBox/QB/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank" title="View your current commit status" data-placement="top" class="tooltips"><?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/QB/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...<?php if (file_exists('/install/.developer.lock')) { ?>development<?php } else { ?>master<?php } ?>" target="_blank" title="Compare your current status to the latest commits" data-placement="top" class="tooltips">latest</a></code></a><br> <strong><?php echo T('RECENT_UPDATES_TXT'); ?></strong> </div> <div id="activityfeed"></div> diff --git a/themes/defaulted/lang/lang_en b/themes/defaulted/lang/lang_en index 88709332..c9dbad96 100644 --- a/themes/defaulted/lang/lang_en +++ b/themes/defaulted/lang/lang_en @@ -124,6 +124,8 @@ $L['PLEXPY'] = 'A python based web application for monitoring, analytics and not $L['PYLOAD'] = 'pyLoad is a download manager for `Hoster` websites, video sites, and HTTP/FTP links. A list of supported sites can be found <a href="https://github.com/pyload/pyload/wiki/Supported-Hoster" target="_blank">here</a>'; $L['QUASSEL'] = 'Quassel IRC is a modern, cross-platform, distributed IRC client based on the Qt4 framework.'; $L['QUOTAS'] = 'This feature of Linux allows the system administrator to allocate a maximum amount of disk space a user or group may use.'; +$L['RADARR'] = 'Radarr is an independent fork of Sonarr reworked for automatically downloading movies via Usenet and BitTorrent.<br> +The project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.'; $L['RAPIDLEECH'] = 'Rapid Leech is a free server transfer script for use on various popular upload/download sites such as uploaded.net, Rapidshare.com and more than 120 others.'; $L['SABNZBD'] = 'SABnzbd is a multi-platform binary newsgroup downloader. The program works in the background and simplifies the downloading verifying and extracting of files from Usenet. SABnzbd uses NZB files (similar to .torrent files, but for Usenet), instead of browsing Usenet directly.'; $L['SICKRAGE'] = 'Video File Manager for TV Shows, It watches for new episodes of your favorite shows and when they are posted it does its magic.'; @@ -318,6 +320,7 @@ $L['UNINSTALL_PLEXREQUESTS_TXT'] = 'You are about to uninstall Ombi from your sy $L['UNINSTALL_PYLOAD_TXT'] = 'You are about to uninstall pyLoad from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall pyLoad at any time, however, your configuration settings will be reset to default.'; $L['UNINSTALL_QUASSEL_TXT'] = 'You are about to uninstall Quassel from your system.<br/><br/> This will completely remove Quassel and all settings/stored backlogs from your system.'; $L['UNINSTALL_QUOTAS_TXT'] = 'You are about to uninstall quotas from your system.<br/><br/> This will completely remove user quotas and any settings associated with them.'; +$L['UNINSTALL_RADARR_TXT'] = 'You are about to uninstall Radarr from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Radarr at any time, however, your configuration settings will be reset to default.'; $L['UNINSTALL_RAPIDLEECH_TXT'] = 'You are about to uninstall Rapidleech from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Rapidleech at any time, however, your configuration settings will be reset to default.'; $L['UNINSTALL_SABNZBD_TXT'] = 'You are about to uninstall SABnzbd from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall SABnzbd at any time, however, your configuration settings will be reset to default.'; $L['UNINSTALL_SICKRAGE_TXT'] = 'You are about to uninstall SickRage from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall SickRage at any time, however, your configuration settings will be reset to default.'; diff --git a/themes/defaulted/lib/datatables/jquery.dataTables.js b/themes/defaulted/lib/datatables/jquery.dataTables.js index 89f5d7c0..6d25fa70 100644 --- a/themes/defaulted/lib/datatables/jquery.dataTables.js +++ b/themes/defaulted/lib/datatables/jquery.dataTables.js @@ -80,7 +80,7 @@ */ var DataTable; - + /* * It is useful to have variables which are scoped locally so only the * DataTables functions can access them and they don't leak into global space. @@ -89,28 +89,28 @@ * by DataTables as private variables here. This also ensures that there is no * clashing of variable names and that they can easily referenced for reuse. */ - - + + // Defined else where // _selector_run // _selector_opts // _selector_first // _selector_row_indexes - + var _ext; // DataTable.ext var _Api; // DataTable.Api var _api_register; // DataTable.Api.register var _api_registerPlural; // DataTable.Api.registerPlural - + var _re_dic = {}; var _re_new_lines = /[\r\n]/g; var _re_html = /<.*?>/g; var _re_date_start = /^[\w\+\-]/; var _re_date_end = /[\w\+\-]$/; - + // Escape regular expression special characters var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); - + // http://en.wikipedia.org/wiki/Foreign_exchange_market // - \u20BD - Russian ruble. // - \u20a9 - South Korean Won @@ -122,18 +122,18 @@ // - \u2009 is thin space and \u202F is narrow no-break space, both used in many // standards as thousands separators. var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi; - - + + var _empty = function ( d ) { return !d || d === true || d === '-' ? true : false; }; - - + + var _intVal = function ( s ) { var integer = parseInt( s, 10 ); return !isNaN(integer) && isFinite(s) ? integer : null; }; - + // Convert from a formatted number with characters other than `.` as the // decimal place, to a Javascript number var _numToDecimal = function ( num, decimalPoint ) { @@ -145,41 +145,41 @@ num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) : num; }; - - + + var _isNumber = function ( d, decimalPoint, formatted ) { var strType = typeof d === 'string'; - + // If empty return immediately so there must be a number if it is a // formatted string (this stops the string "k", or "kr", etc being detected // as a formatted number for currency if ( _empty( d ) ) { return true; } - + if ( decimalPoint && strType ) { d = _numToDecimal( d, decimalPoint ); } - + if ( formatted && strType ) { d = d.replace( _re_formatted_numeric, '' ); } - + return !isNaN( parseFloat(d) ) && isFinite( d ); }; - - + + // A string without HTML in it can be considered to be HTML still var _isHtml = function ( d ) { return _empty( d ) || typeof d === 'string'; }; - - + + var _htmlNumeric = function ( d, decimalPoint, formatted ) { if ( _empty( d ) ) { return true; } - + var html = _isHtml( d ); return ! html ? null : @@ -187,12 +187,12 @@ true : null; }; - - + + var _pluck = function ( a, prop, prop2 ) { var out = []; var i=0, ien=a.length; - + // Could have the test in the loop for slightly smaller code, but speed // is essential here if ( prop2 !== undefined ) { @@ -209,18 +209,18 @@ } } } - + return out; }; - - + + // Basically the same as _pluck, but rather than looping over `a` we use `order` // as the indexes to pick from `a` var _pluck_order = function ( a, order, prop, prop2 ) { var out = []; var i=0, ien=order.length; - + // Could have the test in the loop for slightly smaller code, but speed // is essential here if ( prop2 !== undefined ) { @@ -235,16 +235,16 @@ out.push( a[ order[i] ][ prop ] ); } } - + return out; }; - - + + var _range = function ( len, start ) { var out = []; var end; - + if ( start === undefined ) { start = 0; end = len; @@ -253,34 +253,34 @@ end = start; start = len; } - + for ( var i=start ; i<end ; i++ ) { out.push( i ); } - + return out; }; - - + + var _removeEmpty = function ( a ) { var out = []; - + for ( var i=0, ien=a.length ; i<ien ; i++ ) { if ( a[i] ) { // careful - will remove all falsy values! out.push( a[i] ); } } - + return out; }; - - + + var _stripHtml = function ( d ) { return d.replace( _re_html, '' ); }; - - + + /** * Find the unique elements in a source array. * @@ -299,25 +299,25 @@ val, i, ien=src.length, j, k=0; - + again: for ( i=0 ; i<ien ; i++ ) { val = src[i]; - + for ( j=0 ; j<k ; j++ ) { if ( out[j] === val ) { continue again; } } - + out.push( val ); k++; } - + return out; }; - - - + + + /** * Create a mapping object that allows camel case parameters to be looked up * for their Hungarian counterparts. The mapping is stored in a private @@ -332,26 +332,26 @@ match, newKey, map = {}; - + $.each( o, function (key, val) { match = key.match(/^([^A-Z]+?)([A-Z])/); - + if ( match && hungarian.indexOf(match[1]+' ') !== -1 ) { newKey = key.replace( match[0], match[2].toLowerCase() ); map[ newKey ] = key; - + if ( match[1] === 'o' ) { _fnHungarianMap( o[key] ); } } } ); - + o._hungarianMap = map; } - - + + /** * Convert from camel case parameters to Hungarian, based on a Hungarian map * created by _fnHungarianMap. @@ -368,12 +368,12 @@ if ( ! src._hungarianMap ) { _fnHungarianMap( src ); } - + var hungarianKey; - + $.each( user, function (key, val) { hungarianKey = src._hungarianMap[ key ]; - + if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) ) { // For objects, we need to buzz down into the object to copy parameters @@ -384,7 +384,7 @@ user[ hungarianKey ] = {}; } $.extend( true, user[hungarianKey], user[key] ); - + _fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force ); } else { @@ -393,8 +393,8 @@ } } ); } - - + + /** * Language compatibility - when certain options are given, and others aren't, we * need to duplicate the values over, in order to provide backwards compatibility @@ -406,7 +406,7 @@ { var defaults = DataTable.defaults.oLanguage; var zeroRecords = lang.sZeroRecords; - + /* Backwards compatibility - if there is no sEmptyTable given, then use the same as * sZeroRecords - assuming that is given. */ @@ -415,26 +415,26 @@ { _fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' ); } - + /* Likewise with loading records */ if ( ! lang.sLoadingRecords && zeroRecords && defaults.sLoadingRecords === "Loading..." ) { _fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' ); } - + // Old parameter name of the thousands separator mapped onto the new if ( lang.sInfoThousands ) { lang.sThousands = lang.sInfoThousands; } - + var decimal = lang.sDecimal; if ( decimal ) { _addNumericSort( decimal ); } } - - + + /** * Map one parameter onto another * @param {object} o Object to map @@ -446,8 +446,8 @@ o[ old ] = o[ knew ]; } }; - - + + /** * Provide backwards compatibility for the main DT options. Note that the new * options are mapped onto the old parameters, so this is an external interface @@ -466,11 +466,11 @@ _fnCompatMap( init, 'pagingType', 'sPaginationType' ); _fnCompatMap( init, 'pageLength', 'iDisplayLength' ); _fnCompatMap( init, 'searching', 'bFilter' ); - + // Column search objects are in an array, so it needs to be converted // element by element var searchCols = init.aoSearchCols; - + if ( searchCols ) { for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) { if ( searchCols[i] ) { @@ -479,8 +479,8 @@ } } } - - + + /** * Provide backwards compatibility for column options. Note that the new options * are mapped onto the old parameters, so this is an external interface change @@ -493,15 +493,15 @@ _fnCompatMap( init, 'orderData', 'aDataSort' ); _fnCompatMap( init, 'orderSequence', 'asSorting' ); _fnCompatMap( init, 'orderDataType', 'sortDataType' ); - + // orderData can be given as an integer var dataSort = init.aDataSort; if ( dataSort && ! $.isArray( dataSort ) ) { init.aDataSort = [ dataSort ]; } } - - + + /** * Browser feature detection for capabilities, quirks * @param {object} settings dataTables settings object @@ -510,7 +510,7 @@ function _fnBrowserDetect( settings ) { var browser = settings.oBrowser; - + // Scrolling feature / quirks detection var n = $('<div/>') .css( { @@ -539,22 +539,22 @@ ) ) .appendTo( 'body' ); - + var test = n.find('.test'); - + // IE6/7 will oversize a width 100% element inside a scrolling element, to // include the width of the scrollbar, while other browsers ensure the inner // element is contained without forcing scrolling browser.bScrollOversize = test[0].offsetWidth === 100; - + // In rtl text layout, some browsers (most, but not all) will place the // scrollbar on the left, rather than the right. browser.bScrollbarLeft = Math.round( test.offset().left ) !== 1; - + n.remove(); } - - + + /** * Array.prototype reduce[Right] method, used for browsers which don't support * JS 1.6. Done this way to reduce code size, since we iterate either way @@ -567,28 +567,28 @@ i = start, value, isSet = false; - + if ( init !== undefined ) { value = init; isSet = true; } - + while ( i !== end ) { if ( ! that.hasOwnProperty(i) ) { continue; } - + value = isSet ? fn( value, that[i], i, that ) : that[i]; - + isSet = true; i += inc; } - + return value; } - + /** * Add a column to the list used for the table with default values * @param {object} oSettings dataTables settings object @@ -608,18 +608,18 @@ idx: iCol } ); oSettings.aoColumns.push( oCol ); - + // Add search object for column specific search. Note that the `searchCols[ iCol ]` // passed into extend can be undefined. This allows the user to give a default // with only some of the parameters defined, and also not give a default var searchCols = oSettings.aoPreSearchCols; searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); - + // Use the default column options function to initialise classes etc _fnColumnOptions( oSettings, iCol, $(nTh).data() ); } - - + + /** * Apply options for a column * @param {object} oSettings dataTables settings object @@ -632,50 +632,50 @@ var oCol = oSettings.aoColumns[ iCol ]; var oClasses = oSettings.oClasses; var th = $(oCol.nTh); - + // Try to get width information from the DOM. We can't get it from CSS // as we'd need to parse the CSS stylesheet. `width` option can override if ( ! oCol.sWidthOrig ) { // Width attribute oCol.sWidthOrig = th.attr('width') || null; - + // Style attribute var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/); if ( t ) { oCol.sWidthOrig = t[1]; } } - + /* User specified column options */ if ( oOptions !== undefined && oOptions !== null ) { // Backwards compatibility _fnCompatCols( oOptions ); - + // Map camel case parameters to their Hungarian counterparts _fnCamelToHungarian( DataTable.defaults.column, oOptions ); - + /* Backwards compatibility for mDataProp */ if ( oOptions.mDataProp !== undefined && !oOptions.mData ) { oOptions.mData = oOptions.mDataProp; } - + if ( oOptions.sType ) { oCol._sManualType = oOptions.sType; } - + // `class` is a reserved word in Javascript, so we need to provide // the ability to use a valid name for the camel case input if ( oOptions.className && ! oOptions.sClass ) { oOptions.sClass = oOptions.className; } - + $.extend( oCol, oOptions ); _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); - + /* iDataSort to be applied (backwards compatibility), but aDataSort will take * priority if defined */ @@ -685,22 +685,22 @@ } _fnMap( oCol, oOptions, "aDataSort" ); } - + /* Cache the data get and set functions for speed */ var mDataSrc = oCol.mData; var mData = _fnGetObjectDataFn( mDataSrc ); var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; - + var attrTest = function( src ) { return typeof src === 'string' && src.indexOf('@') !== -1; }; oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && ( attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter) ); - + oCol.fnGetData = function (rowData, type, meta) { var innerData = mData( rowData, type, undefined, meta ); - + return mRender && type ? mRender( innerData, type, rowData, meta ) : innerData; @@ -708,20 +708,20 @@ oCol.fnSetData = function ( rowData, val, meta ) { return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta ); }; - + // Indicate if DataTables should read DOM data as an object or array // Used in _fnGetRowElements if ( typeof mDataSrc !== 'number' ) { oSettings._rowReadObject = true; } - + /* Feature sorting overrides column specific when off */ if ( !oSettings.oFeatures.bSort ) { oCol.bSortable = false; th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called } - + /* Check that the class assignment is correct for sorting */ var bAsc = $.inArray('asc', oCol.asSorting) !== -1; var bDesc = $.inArray('desc', oCol.asSorting) !== -1; @@ -746,8 +746,8 @@ oCol.sSortingClassJUI = oClasses.sSortJUI; } } - - + + /** * Adjust the table column widths for new data. Note: you would probably want to * do a redraw after calling this function! @@ -760,24 +760,24 @@ if ( settings.oFeatures.bAutoWidth !== false ) { var columns = settings.aoColumns; - + _fnCalculateColumnWidths( settings ); for ( var i=0 , iLen=columns.length ; i<iLen ; i++ ) { columns[i].nTh.style.width = columns[i].sWidth; } } - + var scroll = settings.oScroll; if ( scroll.sY !== '' || scroll.sX !== '') { _fnScrollDraw( settings ); } - + _fnCallbackFire( settings, null, 'column-sizing', [settings] ); } - - + + /** * Covert the index of a visible column to the index in the data array (take account * of hidden columns) @@ -789,13 +789,13 @@ function _fnVisibleToColumnIndex( oSettings, iMatch ) { var aiVis = _fnGetColumns( oSettings, 'bVisible' ); - + return typeof aiVis[iMatch] === 'number' ? aiVis[iMatch] : null; } - - + + /** * Covert the index of an index in the data array and convert it to the visible * column index (take account of hidden columns) @@ -808,11 +808,11 @@ { var aiVis = _fnGetColumns( oSettings, 'bVisible' ); var iPos = $.inArray( iMatch, aiVis ); - + return iPos !== -1 ? iPos : null; } - - + + /** * Get the number of visible columns * @param {object} oSettings dataTables settings object @@ -823,8 +823,8 @@ { return _fnGetColumns( oSettings, 'bVisible' ).length; } - - + + /** * Get an array of column indexes that match a given property * @param {object} oSettings dataTables settings object @@ -836,17 +836,17 @@ function _fnGetColumns( oSettings, sParam ) { var a = []; - + $.map( oSettings.aoColumns, function(val, i) { if ( val[sParam] ) { a.push( i ); } } ); - + return a; } - - + + /** * Calculate the 'type' of a column * @param {object} settings dataTables settings object @@ -859,12 +859,12 @@ var types = DataTable.ext.type.detect; var i, ien, j, jen, k, ken; var col, cell, detectedType, cache; - - // For each column, spin over the + + // For each column, spin over the for ( i=0, ien=columns.length ; i<ien ; i++ ) { col = columns[i]; cache = []; - + if ( ! col.sType && col._sManualType ) { col.sType = col._sManualType; } @@ -876,9 +876,9 @@ if ( cache[k] === undefined ) { cache[k] = _fnGetCellData( settings, k, i, 'type' ); } - + detectedType = types[j]( cache[k], settings ); - + // If null, then this type can't apply to this column, so // rather than testing all cells, break out. There is an // exception for the last type which is `html`. We need to @@ -887,14 +887,14 @@ if ( ! detectedType && j !== types.length-1 ) { break; } - + // Only a single match is needed for html type since it is // bottom of the pile and very similar to string if ( detectedType === 'html' ) { break; } } - + // Type is valid for all data points in the column - use this // type if ( detectedType ) { @@ -902,7 +902,7 @@ break; } } - + // Fall back - if no type was detected, always use string if ( ! col.sType ) { col.sType = 'string'; @@ -910,8 +910,8 @@ } } } - - + + /** * Take the column definitions and static columns arrays and calculate how * they relate to column indexes. The callback function will then apply the @@ -927,7 +927,7 @@ { var i, iLen, j, jLen, k, kLen, def; var columns = oSettings.aoColumns; - + // Column definitions with aTargets if ( aoColDefs ) { @@ -935,17 +935,17 @@ for ( i=aoColDefs.length-1 ; i>=0 ; i-- ) { def = aoColDefs[i]; - + /* Each definition can target multiple columns, as it is an array */ var aTargets = def.targets !== undefined ? def.targets : def.aTargets; - + if ( ! $.isArray( aTargets ) ) { aTargets = [ aTargets ]; } - + for ( j=0, jLen=aTargets.length ; j<jLen ; j++ ) { if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 ) @@ -955,7 +955,7 @@ { _fnAddColumn( oSettings ); } - + /* Integer, basic index */ fn( aTargets[j], def ); } @@ -979,7 +979,7 @@ } } } - + // Statically defined columns array if ( aoCols ) { @@ -989,7 +989,7 @@ } } } - + /** * Add a data array to the table, creating DOM node etc. This is the parallel to * _fnGatherData, but for adding rows from a Javascript source, rather than a @@ -1010,10 +1010,10 @@ var oData = $.extend( true, {}, DataTable.models.oRow, { src: nTr ? 'dom' : 'data' } ); - + oData._aData = aDataIn; oSettings.aoData.push( oData ); - + /* Create the cells */ var nTd, sThisType; var columns = oSettings.aoColumns; @@ -1027,20 +1027,20 @@ } columns[i].sType = null; } - + /* Add to the display array */ oSettings.aiDisplayMaster.push( iRow ); - + /* Create the DOM information, or register it if already present */ if ( nTr || ! oSettings.oFeatures.bDeferRender ) { _fnCreateTr( oSettings, iRow, nTr, anTds ); } - + return iRow; } - - + + /** * Add one or more TR elements to the table. Generally we'd expect to * use this for reading data from a DOM sourced table, but it could be @@ -1054,19 +1054,19 @@ function _fnAddTr( settings, trs ) { var row; - + // Allow an individual node to be passed in if ( ! (trs instanceof $) ) { trs = $(trs); } - + return trs.map( function (i, el) { row = _fnGetRowElements( settings, el ); return _fnAddData( settings, row.data, el, row.cells ); } ); } - - + + /** * Take a TR element and convert it to an index in aoData * @param {object} oSettings dataTables settings object @@ -1078,8 +1078,8 @@ { return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null; } - - + + /** * Take a TD element and convert it into a column data index (not the visible index) * @param {object} oSettings dataTables settings object @@ -1092,8 +1092,8 @@ { return $.inArray( n, oSettings.aoData[ iRow ].anCells ); } - - + + /** * Get the data for a given cell from the internal cache, taking into account data mapping * @param {object} settings dataTables settings object @@ -1114,7 +1114,7 @@ row: rowIdx, col: colIdx } ); - + if ( cellData === undefined ) { if ( settings.iDrawError != draw && defaultContent === null ) { _fnLog( settings, 0, "Requested unknown parameter "+ @@ -1124,7 +1124,7 @@ } return defaultContent; } - + /* When the data source is null, we can use default column data */ if ( (cellData === rowData || cellData === null) && defaultContent !== null ) { cellData = defaultContent; @@ -1134,14 +1134,14 @@ // executing in the scope of the data object (for instances) return cellData.call( rowData ); } - + if ( cellData === null && type == 'display' ) { return ''; } return cellData; } - - + + /** * Set the value for a specific cell, into the internal data cache * @param {object} settings dataTables settings object @@ -1154,19 +1154,19 @@ { var col = settings.aoColumns[colIdx]; var rowData = settings.aoData[rowIdx]._aData; - + col.fnSetData( rowData, val, { settings: settings, row: rowIdx, col: colIdx } ); } - - + + // Private variable that is used to match action syntax in the data property object var __reArray = /\[.*?\]$/; var __reFn = /\(\)$/; - + /** * Split string on periods, taking into account escaped periods * @param {string} str String to split @@ -1178,8 +1178,8 @@ return s.replace(/\\./g, '.'); } ); } - - + + /** * Return a function that can be used to get data from a source object, taking * into account the ability to use nested objects as a source @@ -1198,7 +1198,7 @@ o[key] = _fnGetObjectDataFn( val ); } } ); - + return function (data, type, row, meta) { var t = o[type] || o._; return t !== undefined ? @@ -1230,42 +1230,42 @@ */ var fetchData = function (data, type, src) { var arrayNotation, funcNotation, out, innerSrc; - + if ( src !== "" ) { var a = _fnSplitObjNotation( src ); - + for ( var i=0, iLen=a.length ; i<iLen ; i++ ) { // Check if we are dealing with special notation arrayNotation = a[i].match(__reArray); funcNotation = a[i].match(__reFn); - + if ( arrayNotation ) { // Array notation a[i] = a[i].replace(__reArray, ''); - + // Condition allows simply [] to be passed in if ( a[i] !== "" ) { data = data[ a[i] ]; } out = []; - + // Get the remainder of the nested object to get a.splice( 0, i+1 ); innerSrc = a.join('.'); - + // Traverse each entry in the array getting the properties requested for ( var j=0, jLen=data.length ; j<jLen ; j++ ) { out.push( fetchData( data[j], type, innerSrc ) ); } - + // If a string is given in between the array notation indicators, that // is used to join the strings together, otherwise an array is returned var join = arrayNotation[0].substring(1, arrayNotation[0].length-1); data = (join==="") ? out : out.join(join); - + // The inner call to fetchData has already traversed through the remainder // of the source requested, so we exit from the loop break; @@ -1277,7 +1277,7 @@ data = data[ a[i] ](); continue; } - + if ( data === null || data[ a[i] ] === undefined ) { return undefined; @@ -1285,10 +1285,10 @@ data = data[ a[i] ]; } } - + return data; }; - + return function (data, type) { // row and meta also passed, but not used return fetchData( data, type, mSource ); }; @@ -1301,8 +1301,8 @@ }; } } - - + + /** * Return a function that can be used to set data from a source object, taking * into account the ability to use nested objects as a source @@ -1340,23 +1340,23 @@ var a = _fnSplitObjNotation( src ), b; var aLast = a[a.length-1]; var arrayNotation, funcNotation, o, innerSrc; - + for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) { // Check if we are dealing with an array notation request arrayNotation = a[i].match(__reArray); funcNotation = a[i].match(__reFn); - + if ( arrayNotation ) { a[i] = a[i].replace(__reArray, ''); data[ a[i] ] = []; - + // Get the remainder of the nested object to set so we can recurse b = a.slice(); b.splice( 0, i+1 ); innerSrc = b.join('.'); - + // Traverse each entry in the array setting the properties requested for ( var j=0, jLen=val.length ; j<jLen ; j++ ) { @@ -1364,7 +1364,7 @@ setData( o, val[j], innerSrc ); data[ a[i] ].push( o ); } - + // The inner call to setData has already traversed through the remainder // of the source and has set the data, thus we can exit here return; @@ -1375,7 +1375,7 @@ a[i] = a[i].replace(__reFn, ''); data = data[ a[i] ]( val ); } - + // If the nested object doesn't currently exist - since we are // trying to set the value - create it if ( data[ a[i] ] === null || data[ a[i] ] === undefined ) @@ -1384,7 +1384,7 @@ } data = data[ a[i] ]; } - + // Last item in the input - i.e, the actual set if ( aLast.match(__reFn ) ) { @@ -1398,7 +1398,7 @@ data[ aLast.replace(__reArray, '') ] = val; } }; - + return function (data, val) { // meta is also passed in, but not used return setData( data, val, mSource ); }; @@ -1411,8 +1411,8 @@ }; } } - - + + /** * Return an array with the full table data * @param {object} oSettings dataTables settings object @@ -1423,8 +1423,8 @@ { return _pluck( settings.aoData, '_aData' ); } - - + + /** * Nuke the table * @param {object} oSettings dataTables settings object @@ -1436,8 +1436,8 @@ settings.aiDisplayMaster.length = 0; settings.aiDisplay.length = 0; } - - + + /** * Take an array of integers (index array) and remove a target integer (value - not * the key!) @@ -1448,7 +1448,7 @@ function _fnDeleteIndex( a, iTarget, splice ) { var iTargetIndex = -1; - + for ( var i=0, iLen=a.length ; i<iLen ; i++ ) { if ( a[i] == iTarget ) @@ -1460,14 +1460,14 @@ a[i]--; } } - + if ( iTargetIndex != -1 && splice === undefined ) { a.splice( iTargetIndex, 1 ); } } - - + + /** * Mark cached data as invalid such that a re-read of the data will occur when * the cached data is next requested. Also update from the data source object. @@ -1495,10 +1495,10 @@ while ( cell.childNodes.length ) { cell.removeChild( cell.firstChild ); } - + cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' ); }; - + // Are we reading last data from DOM or the data object? if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) { // Read the data from the DOM @@ -1510,7 +1510,7 @@ else { // Reading from data object, update the DOM var cells = row.anCells; - + if ( cells ) { if ( colIdx !== undefined ) { cellWrite( cells[colIdx], colIdx ); @@ -1522,12 +1522,12 @@ } } } - + // For both row and cell invalidation, the cached data for sorting and // filtering is nulled out row._aSortData = null; row._aFilterData = null; - + // Invalidate the type for a specific column (if given) or all columns since // the data might have changed var cols = settings.aoColumns; @@ -1538,13 +1538,13 @@ for ( i=0, ien=cols.length ; i<ien ; i++ ) { cols[i].sType = null; } - + // Update DataTables special `DT_*` attributes for the row _fnRowAttributes( row ); } } - - + + /** * Build a data source object from an HTML row, reading the contents of the * cells that are in the row. @@ -1570,14 +1570,14 @@ name, col, o, i=0, contents, columns = settings.aoColumns, objectRead = settings._rowReadObject; - + // Allow the data object to be passed in, or construct d = d || objectRead ? {} : []; - + var attr = function ( str, td ) { if ( typeof str === 'string' ) { var idx = str.indexOf('@'); - + if ( idx !== -1 ) { var attr = str.substring( idx+1 ); var setter = _fnSetObjectDataFn( str ); @@ -1585,17 +1585,17 @@ } } }; - + // Read data from a cell and store into the data object var cellProcess = function ( cell ) { if ( colIdx === undefined || colIdx === i ) { col = columns[i]; contents = $.trim(cell.innerHTML); - + if ( col && col._bAttrSrc ) { var setter = _fnSetObjectDataFn( col.mData._ ); setter( d, contents ); - + attr( col.mData.sort, cell ); attr( col.mData.type, cell ); attr( col.mData.filter, cell ); @@ -1615,32 +1615,32 @@ } } } - + i++; }; - + if ( td ) { // `tr` element was passed in while ( td ) { name = td.nodeName.toUpperCase(); - + if ( name == "TD" || name == "TH" ) { cellProcess( td ); tds.push( td ); } - + td = td.nextSibling; } } else { // Existing row object passed in tds = row.anCells; - + for ( var j=0, jen=tds.length ; j<jen ; j++ ) { cellProcess( tds[j] ); } } - + return { data: d, cells: tds @@ -1664,42 +1664,42 @@ cells = [], nTr, nTd, oCol, i, iLen; - + if ( row.nTr === null ) { nTr = nTrIn || document.createElement('tr'); - + row.nTr = nTr; row.anCells = cells; - + /* Use a private property on the node to allow reserve mapping from the node * to the aoData array for fast look up */ nTr._DT_RowIndex = iRow; - + /* Special parameters can be given by the data source to be used on the row */ _fnRowAttributes( row ); - + /* Process each column */ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ ) { oCol = oSettings.aoColumns[i]; - + nTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType ); cells.push( nTd ); - + // Need to create the HTML if new, or if a rendering function is defined if ( !nTrIn || oCol.mRender || oCol.mData !== i ) { nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' ); } - + /* Add user defined class */ if ( oCol.sClass ) { nTd.className += ' '+oCol.sClass; } - + // Visibility - add or remove as required if ( oCol.bVisible && ! nTrIn ) { @@ -1709,7 +1709,7 @@ { nTd.parentNode.removeChild( nTd ); } - + if ( oCol.fnCreatedCell ) { oCol.fnCreatedCell.call( oSettings.oInstance, @@ -1717,16 +1717,16 @@ ); } } - + _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] ); } - + // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved // and deployed row.nTr.setAttribute( 'role', 'row' ); } - - + + /** * Add attributes to a row based on the special `DT_*` parameters in a data * source object. @@ -1737,35 +1737,35 @@ { var tr = row.nTr; var data = row._aData; - + if ( tr ) { if ( data.DT_RowId ) { tr.id = data.DT_RowId; } - + if ( data.DT_RowClass ) { // Remove any classes added by DT_RowClass before var a = data.DT_RowClass.split(' '); row.__rowc = row.__rowc ? _unique( row.__rowc.concat( a ) ) : a; - + $(tr) .removeClass( row.__rowc.join(' ') ) .addClass( data.DT_RowClass ); } - + if ( data.DT_RowAttr ) { $(tr).attr( data.DT_RowAttr ); } - + if ( data.DT_RowData ) { $(tr).data( data.DT_RowData ); } } } - - + + /** * Create the HTML header for the table * @param {object} oSettings dataTables settings object @@ -1779,71 +1779,71 @@ var createHeader = $('th, td', thead).length === 0; var classes = oSettings.oClasses; var columns = oSettings.aoColumns; - + if ( createHeader ) { row = $('<tr/>').appendTo( thead ); } - + for ( i=0, ien=columns.length ; i<ien ; i++ ) { column = columns[i]; cell = $( column.nTh ).addClass( column.sClass ); - + if ( createHeader ) { cell.appendTo( row ); } - + // 1.11 move into sorting if ( oSettings.oFeatures.bSort ) { cell.addClass( column.sSortingClass ); - + if ( column.bSortable !== false ) { cell .attr( 'tabindex', oSettings.iTabIndex ) .attr( 'aria-controls', oSettings.sTableId ); - + _fnSortAttachListener( oSettings, column.nTh, i ); } } - + if ( column.sTitle != cell.html() ) { cell.html( column.sTitle ); } - + _fnRenderer( oSettings, 'header' )( oSettings, cell, column, classes ); } - + if ( createHeader ) { _fnDetectHeader( oSettings.aoHeader, thead ); } - + /* ARIA role for the rows */ $(thead).find('>tr').attr('role', 'row'); - + /* Deal with the footer - add classes if required */ $(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH ); $(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH ); - + // Cache the footer cells. Note that we only take the cells from the first // row in the footer. If there is more than one row the user wants to // interact with, they need to use the table().foot() method. Note also this // allows cells to be used for multiple columns using colspan if ( tfoot !== null ) { var cells = oSettings.aoFooter[0]; - + for ( i=0, ien=cells.length ; i<ien ; i++ ) { column = columns[i]; column.nTf = cells[i].cell; - + if ( column.sClass ) { $(column.nTf).addClass( column.sClass ); } } } } - - + + /** * Draw the header (or footer) element based on the column visibility states. The * methodology here is to use the layout array from _fnDetectHeader, modified for @@ -1864,23 +1864,23 @@ var aApplied = []; var iColumns = oSettings.aoColumns.length; var iRowspan, iColspan; - + if ( ! aoSource ) { return; } - + if ( bIncludeHidden === undefined ) { bIncludeHidden = false; } - + /* Make a copy of the master layout array, but without the visible columns in it */ for ( i=0, iLen=aoSource.length ; i<iLen ; i++ ) { aoLocal[i] = aoSource[i].slice(); aoLocal[i].nTr = aoSource[i].nTr; - + /* Remove any columns which are currently hidden */ for ( j=iColumns-1 ; j>=0 ; j-- ) { @@ -1889,15 +1889,15 @@ aoLocal[i].splice( j, 1 ); } } - + /* Prep the applied array - it needs an element for each row */ aApplied.push( [] ); } - + for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ ) { nLocalTr = aoLocal[i].nTr; - + /* All cells are going to be replaced, so empty out the row */ if ( nLocalTr ) { @@ -1906,12 +1906,12 @@ nLocalTr.removeChild( n ); } } - + for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ ) { iRowspan = 1; iColspan = 1; - + /* Check to see if there is already a cell (row/colspan) covering our target * insert point. If there is, then there is nothing to do. */ @@ -1919,7 +1919,7 @@ { nLocalTr.appendChild( aoLocal[i][j].cell ); aApplied[i][j] = 1; - + /* Expand the cell to cover as many rows as needed */ while ( aoLocal[i+iRowspan] !== undefined && aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell ) @@ -1927,7 +1927,7 @@ aApplied[i+iRowspan][j] = 1; iRowspan++; } - + /* Expand the cell to cover as many columns as needed */ while ( aoLocal[i][j+iColspan] !== undefined && aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell ) @@ -1939,7 +1939,7 @@ } iColspan++; } - + /* Do the actual expansion in the DOM */ $(aoLocal[i][j].cell) .attr('rowspan', iRowspan) @@ -1948,8 +1948,8 @@ } } } - - + + /** * Insert the required TR nodes into the table for display * @param {object} oSettings dataTables settings object @@ -1964,7 +1964,7 @@ _fnProcessingDisplay( oSettings, false ); return; } - + var i, iLen, n; var anRows = []; var iRowCount = 0; @@ -1975,9 +1975,9 @@ var iInitDisplayStart = oSettings.iInitDisplayStart; var bServerSide = _fnDataSource( oSettings ) == 'ssp'; var aiDisplay = oSettings.aiDisplay; - + oSettings.bDrawing = true; - + /* Check and see if we have an initial draw position from state saving */ if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 ) { @@ -1986,13 +1986,13 @@ iInitDisplayStart >= oSettings.fnRecordsDisplay() ? 0 : iInitDisplayStart; - + oSettings.iInitDisplayStart = -1; } - + var iDisplayStart = oSettings._iDisplayStart; var iDisplayEnd = oSettings.fnDisplayEnd(); - + /* Server-side processing draw intercept */ if ( oSettings.bDeferLoading ) { @@ -2008,12 +2008,12 @@ { return; } - + if ( aiDisplay.length !== 0 ) { var iStart = bServerSide ? 0 : iDisplayStart; var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd; - + for ( var j=iStart ; j<iEnd ; j++ ) { var iDataIndex = aiDisplay[j]; @@ -2022,9 +2022,9 @@ { _fnCreateTr( oSettings, iDataIndex ); } - + var nRow = aoData.nTr; - + /* Remove the old striping classes and then add the new one */ if ( iStripes !== 0 ) { @@ -2035,13 +2035,13 @@ aoData._sRowStripe = sStripe; } } - + // Row callback functions - might want to manipulate the row // iRowCount and j are not currently documented. Are they at all // useful? _fnCallbackFire( oSettings, 'aoRowCallback', null, [nRow, aoData._aData, iRowCount, j] ); - + anRows.push( nRow ); iRowCount++; } @@ -2058,7 +2058,7 @@ { sZero = oLang.sEmptyTable; } - + anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } ) .append( $('<td />', { 'valign': 'top', @@ -2066,29 +2066,29 @@ 'class': oSettings.oClasses.sRowEmpty } ).html( sZero ) )[0]; } - + /* Header and footer callbacks */ _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); - + _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); - + var body = $(oSettings.nTBody); - + body.children().detach(); body.append( $(anRows) ); - + /* Call all required callback functions for the end of a draw */ _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] ); - + /* Draw is complete, sorting and filtering must be as well */ oSettings.bSorted = false; oSettings.bFiltered = false; oSettings.bDrawing = false; } - - + + /** * Redraw the table - taking account of the various features which are enabled * @param {object} oSettings dataTables settings object @@ -2102,11 +2102,11 @@ features = settings.oFeatures, sort = features.bSort, filter = features.bFilter; - + if ( sort ) { _fnSort( settings ); } - + if ( filter ) { _fnFilterComplete( settings, settings.oPreviousSearch ); } @@ -2114,21 +2114,21 @@ // No filtering, so we want to just use the display master settings.aiDisplay = settings.aiDisplayMaster.slice(); } - + if ( holdPosition !== true ) { settings._iDisplayStart = 0; } - + // Let any modules know about the draw hold position state (used by // scrolling internally) settings._drawHold = holdPosition; - + _fnDraw( settings ); - + settings._drawHold = false; } - - + + /** * Add the options to the page HTML for the table * @param {object} oSettings dataTables settings object @@ -2140,17 +2140,17 @@ var table = $(oSettings.nTable); var holding = $('<div/>').insertBefore( table ); // Holding element for speed var features = oSettings.oFeatures; - + // All DataTables are wrapped in a div var insert = $('<div/>', { id: oSettings.sTableId+'_wrapper', 'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter) } ); - + oSettings.nHolding = holding[0]; oSettings.nTableWrapper = insert[0]; oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling; - + /* Loop over the user set positioning and place the elements as needed */ var aDom = oSettings.sDom.split(''); var featureNode, cOption, nNewNode, cNext, sAttr, j; @@ -2158,12 +2158,12 @@ { featureNode = null; cOption = aDom[i]; - + if ( cOption == '<' ) { /* New container div */ nNewNode = $('<div/>')[0]; - + /* Check to see if we should append an id and/or a class name to the container */ cNext = aDom[i+1]; if ( cNext == "'" || cNext == '"' ) @@ -2175,7 +2175,7 @@ sAttr += aDom[i+j]; j++; } - + /* Replace jQuery UI constants @todo depreciated */ if ( sAttr == "H" ) { @@ -2185,7 +2185,7 @@ { sAttr = classes.sJUIFooter; } - + /* The attribute can be in the format of "#id.class", "#id" or "class" This logic * breaks the string into parts and applies them as needed */ @@ -2203,10 +2203,10 @@ { nNewNode.className = sAttr; } - + i += j; /* Move along the position array */ } - + insert.append( nNewNode ); insert = $(nNewNode); } @@ -2259,27 +2259,27 @@ } } } - + /* Add to the 2D features array */ if ( featureNode ) { var aanFeatures = oSettings.aanFeatures; - + if ( ! aanFeatures[cOption] ) { aanFeatures[cOption] = []; } - + aanFeatures[cOption].push( featureNode ); insert.append( featureNode ); } } - + /* Built our DOM structure - replace the holding div with what we want */ holding.replaceWith( insert ); } - - + + /** * Use the DOM source to create up an array of header cells. The idea here is to * create a layout grid (array) of rows x columns, which contains a reference @@ -2302,21 +2302,21 @@ } return j; }; - + aLayout.splice( 0, aLayout.length ); - + /* We know how many rows there are in the layout - so prep it */ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) { aLayout.push( [] ); } - + /* Calculate a layout array */ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) { nTr = nTrs[i]; iColumn = 0; - + /* For every cell in the row... */ nCell = nTr.firstChild; while ( nCell ) { @@ -2328,15 +2328,15 @@ iRowspan = nCell.getAttribute('rowspan') * 1; iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan; iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan; - + /* There might be colspan cells already in this row, so shift our target * accordingly */ iColShifted = fnShiftCol( aLayout, i, iColumn ); - + /* Cache calculation for unique columns */ bUnique = iColspan === 1 ? true : false; - + /* If there is col / rowspan, copy the information into the layout grid */ for ( l=0 ; l<iColspan ; l++ ) { @@ -2354,8 +2354,8 @@ } } } - - + + /** * Get an array of unique th elements, one for each column * @param {object} oSettings dataTables settings object @@ -2376,7 +2376,7 @@ _fnDetectHeader( aLayout, nHeader ); } } - + for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ ) { for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ ) @@ -2388,10 +2388,10 @@ } } } - + return aReturn; } - + /** * Create an Ajax call based on the table's settings, taking into account that * parameters can have multiple forms, and backwards compatibility. @@ -2405,20 +2405,20 @@ { // Compatibility with 1.9-, allow fnServerData and event to manipulate _fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] ); - + // Convert to object based for 1.10+ if using the old array scheme which can // come from server-side processing or serverParams if ( data && $.isArray(data) ) { var tmp = {}; var rbracket = /(.*?)\[\]$/; - + $.each( data, function (key, val) { var match = val.name.match(rbracket); - + if ( match ) { // Support for arrays var name = match[0]; - + if ( ! tmp[ name ] ) { tmp[ name ] = []; } @@ -2430,7 +2430,7 @@ } ); data = tmp; } - + var ajaxData; var ajax = oSettings.ajax; var instance = oSettings.oInstance; @@ -2438,25 +2438,25 @@ _fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] ); fn( json ); }; - + if ( $.isPlainObject( ajax ) && ajax.data ) { ajaxData = ajax.data; - + var newData = $.isFunction( ajaxData ) ? ajaxData( data, oSettings ) : // fn can manipulate data or return ajaxData; // an object object or array to merge - + // If the function returned something, use that alone data = $.isFunction( ajaxData ) && newData ? newData : $.extend( true, data, newData ); - + // Remove the data property as we've resolved it already and don't want // jQuery to do it again (it is restored at the end of the function) delete ajax.data; } - + var baseAjax = { "data": data, "success": function (json) { @@ -2464,7 +2464,7 @@ if ( error ) { _fnLog( oSettings, 0, error ); } - + oSettings.json = json; callback( json ); }, @@ -2473,7 +2473,7 @@ "type": oSettings.sServerMethod, "error": function (xhr, error, thrown) { var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] ); - + if ( $.inArray( true, ret ) === -1 ) { if ( error == "parsererror" ) { _fnLog( oSettings, 0, 'Invalid JSON response', 1 ); @@ -2482,17 +2482,17 @@ _fnLog( oSettings, 0, 'Ajax error', 7 ); } } - + _fnProcessingDisplay( oSettings, false ); } }; - + // Store the data submitted for the API oSettings.oAjaxData = data; - + // Allow plug-ins and external processes to modify the data _fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] ); - + if ( oSettings.fnServerData ) { // DataTables 1.9- compatibility @@ -2521,13 +2521,13 @@ { // Object to extend the base settings oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) ); - + // Restore for next time around ajax.data = ajaxData; } } - - + + /** * Update the table using an Ajax call * @param {object} settings dataTables settings object @@ -2539,7 +2539,7 @@ if ( settings.bAjaxDataGet ) { settings.iDraw++; _fnProcessingDisplay( settings, true ); - + _fnBuildAjax( settings, _fnAjaxParameters( settings ), @@ -2547,13 +2547,13 @@ _fnAjaxUpdateDraw( settings, json ); } ); - + return false; } return true; } - - + + /** * Build up the parameters in an object needed for a server-side processing * request. Note that this is basically done twice, is different ways - a modern @@ -2579,18 +2579,18 @@ displayLength = features.bPaginate !== false ? settings._iDisplayLength : -1; - + var param = function ( name, value ) { data.push( { 'name': name, 'value': value } ); }; - + // DataTables 1.9- compatible method param( 'sEcho', settings.iDraw ); param( 'iColumns', columnCount ); param( 'sColumns', _pluck( columns, 'sName' ).join(',') ); param( 'iDisplayStart', displayStart ); param( 'iDisplayLength', displayLength ); - + // DataTables 1.10+ method var d = { draw: settings.iDraw, @@ -2603,12 +2603,12 @@ regex: preSearch.bRegex } }; - + for ( i=0 ; i<columnCount ; i++ ) { column = columns[i]; columnSearch = preColSearch[i]; dataProp = typeof column.mData=="function" ? 'function' : column.mData ; - + d.columns.push( { data: dataProp, name: column.sName, @@ -2619,49 +2619,49 @@ regex: columnSearch.bRegex } } ); - + param( "mDataProp_"+i, dataProp ); - + if ( features.bFilter ) { param( 'sSearch_'+i, columnSearch.sSearch ); param( 'bRegex_'+i, columnSearch.bRegex ); param( 'bSearchable_'+i, column.bSearchable ); } - + if ( features.bSort ) { param( 'bSortable_'+i, column.bSortable ); } } - + if ( features.bFilter ) { param( 'sSearch', preSearch.sSearch ); param( 'bRegex', preSearch.bRegex ); } - + if ( features.bSort ) { $.each( sort, function ( i, val ) { d.order.push( { column: val.col, dir: val.dir } ); - + param( 'iSortCol_'+i, val.col ); param( 'sSortDir_'+i, val.dir ); } ); - + param( 'iSortingCols', sort.length ); } - + // If the legacy.ajax parameter is null, then we automatically decide which // form to use, based on sAjaxSource var legacy = DataTable.ext.legacy.ajax; if ( legacy === null ) { return settings.sAjaxSource ? data : d; } - + // Otherwise, if legacy has been specified then we use that to decide on the // form return legacy ? data : d; } - - + + /** * Data the data from the server (nuking the old) and redraw the table * @param {object} oSettings dataTables settings object @@ -2680,12 +2680,12 @@ var compat = function ( old, modern ) { return json[old] !== undefined ? json[old] : json[modern]; }; - + var data = _fnAjaxDataSrc( settings, json ); var draw = compat( 'sEcho', 'draw' ); var recordsTotal = compat( 'iTotalRecords', 'recordsTotal' ); var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' ); - + if ( draw ) { // Protect against out of sequence returns if ( draw*1 < settings.iDraw ) { @@ -2693,28 +2693,28 @@ } settings.iDraw = draw * 1; } - + _fnClearTable( settings ); settings._iRecordsTotal = parseInt(recordsTotal, 10); settings._iRecordsDisplay = parseInt(recordsFiltered, 10); - + for ( var i=0, ien=data.length ; i<ien ; i++ ) { _fnAddData( settings, data[i] ); } settings.aiDisplay = settings.aiDisplayMaster.slice(); - + settings.bAjaxDataGet = false; _fnDraw( settings ); - + if ( ! settings._bInitComplete ) { _fnInitComplete( settings, json ); } - + settings.bAjaxDataGet = true; _fnProcessingDisplay( settings, false ); } - - + + /** * Get the data from the JSON data source to use for drawing a table. Using * `_fnGetObjectDataFn` allows the data to be sourced from a property of the @@ -2728,18 +2728,18 @@ var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ? oSettings.ajax.dataSrc : oSettings.sAjaxDataProp; // Compatibility with 1.9-. - + // Compatibility with 1.9-. In order to read from aaData, check if the // default has been changed, if not, check for aaData if ( dataSrc === 'data' ) { return json.aaData || json[dataSrc]; } - + return dataSrc !== "" ? _fnGetObjectDataFn( dataSrc )( json ) : json; } - + /** * Generate the node required for filtering text * @returns {node} Filter control element @@ -2754,23 +2754,23 @@ var previousSearch = settings.oPreviousSearch; var features = settings.aanFeatures; var input = '<input type="search" class="'+classes.sFilterInput+'"/>'; - + var str = language.sSearch; str = str.match(/_INPUT_/) ? str.replace('_INPUT_', input) : str+input; - + var filter = $('<div/>', { 'id': ! features.f ? tableId+'_filter' : null, 'class': classes.sFilter } ) .append( $('<label/>' ).append( str ) ); - + var searchFn = function() { /* Update all other filter input elements for the new display */ var n = features.f; var val = !this.value ? "" : this.value; // mental IE8 fix :-( - + /* Now do the filter */ if ( val != previousSearch.sSearch ) { _fnFilterComplete( settings, { @@ -2779,19 +2779,19 @@ "bSmart": previousSearch.bSmart , "bCaseInsensitive": previousSearch.bCaseInsensitive } ); - + // Need to redraw, without resorting settings._iDisplayStart = 0; _fnDraw( settings ); } }; - + var searchDelay = settings.searchDelay !== null ? settings.searchDelay : _fnDataSource( settings ) === 'ssp' ? 400 : 0; - + var jqFilter = $('input', filter) .val( previousSearch.sSearch ) .attr( 'placeholder', language.sSearchPlaceholder ) @@ -2808,7 +2808,7 @@ } } ) .attr('aria-controls', tableId); - + // Update the input elements whenever the table is filtered $(settings.nTable).on( 'search.dt.DT', function ( ev, s ) { if ( settings === s ) { @@ -2822,11 +2822,11 @@ catch ( e ) {} } } ); - + return filter[0]; } - - + + /** * Filter the table using both the global filter and column based filtering * @param {object} oSettings dataTables settings object @@ -2849,25 +2849,25 @@ // Backwards compatibility with the bEscapeRegex option return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex; }; - + // Resolve any column types that are unknown due to addition or invalidation // @todo As per sort - can this be moved into an event handler? _fnColumnTypes( oSettings ); - + /* In server-side processing all filtering is done by the server, so no point hanging around here */ if ( _fnDataSource( oSettings ) != 'ssp' ) { /* Global filter */ _fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive ); fnSaveFilter( oInput ); - + /* Now do the individual column filter */ for ( var i=0 ; i<aoPrevSearch.length ; i++ ) { _fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]), aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive ); } - + /* Custom filtering */ _fnFilterCustom( oSettings ); } @@ -2875,13 +2875,13 @@ { fnSaveFilter( oInput ); } - + /* Tell the draw function we have been filtering */ oSettings.bFiltered = true; _fnCallbackFire( oSettings, null, 'search', [oSettings] ); } - - + + /** * Apply custom filtering functions * @param {object} oSettings dataTables settings object @@ -2892,28 +2892,28 @@ var filters = DataTable.ext.search; var displayRows = settings.aiDisplay; var row, rowIdx; - + for ( var i=0, ien=filters.length ; i<ien ; i++ ) { var rows = []; - + // Loop over each row and see if it should be included for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) { rowIdx = displayRows[ j ]; row = settings.aoData[ rowIdx ]; - + if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) { rows.push( rowIdx ); } } - + // So the array reference doesn't break set the results into the // existing array displayRows.length = 0; displayRows.push.apply( displayRows, rows ); } } - - + + /** * Filter the table on a per-column basis * @param {object} oSettings dataTables settings object @@ -2929,21 +2929,21 @@ if ( searchStr === '' ) { return; } - + var data; var display = settings.aiDisplay; var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive ); - + for ( var i=display.length-1 ; i>=0 ; i-- ) { data = settings.aoData[ display[i] ]._aFilterData[ colIdx ]; - + if ( ! rpSearch.test( data ) ) { display.splice( i, 1 ); } } } - - + + /** * Filter the data table based on user input and draw the table * @param {object} settings dataTables settings object @@ -2960,15 +2960,15 @@ var prevSearch = settings.oPreviousSearch.sSearch; var displayMaster = settings.aiDisplayMaster; var display, invalidated, i; - + // Need to take account of custom filtering functions - always filter if ( DataTable.ext.search.length !== 0 ) { force = true; } - + // Check if any of the rows were invalidated invalidated = _fnFilterData( settings ); - + // If the input is blank - we just want the full data set if ( input.length <= 0 ) { settings.aiDisplay = displayMaster.slice(); @@ -2984,10 +2984,10 @@ ) { settings.aiDisplay = displayMaster.slice(); } - + // Search the display array display = settings.aiDisplay; - + for ( i=display.length-1 ; i>=0 ; i-- ) { if ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) { display.splice( i, 1 ); @@ -2995,8 +2995,8 @@ } } } - - + + /** * Build a regular expression object suitable for searching a table * @param {string} sSearch string to search for @@ -3011,13 +3011,13 @@ search = regex ? search : _fnEscapeRegex( search ); - + if ( smart ) { /* For smart filtering we want to allow the search to work regardless of * word order. We also want double quoted text to be preserved, so word * order is important - a la google. So this is what we want to * generate: - * + * * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$ */ var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) { @@ -3025,17 +3025,17 @@ var m = word.match( /^"(.*)"$/ ); word = m ? m[1] : word; } - + return word.replace('"', ''); } ); - + search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$'; } - + return new RegExp( search, caseInsensitive ? 'i' : '' ); } - - + + /** * Escape a string such that it can be used in a regular expression * @param {string} sVal string to escape @@ -3046,12 +3046,12 @@ { return sVal.replace( _re_escape_regex, '\\$1' ); } - - - + + + var __filter_div = $('<div>')[0]; var __filter_div_textContent = __filter_div.textContent !== undefined; - + // Update the filtering data for each row if needed (by invalidation or first run) function _fnFilterData ( settings ) { @@ -3060,29 +3060,29 @@ var i, j, ien, jen, filterData, cellData, row; var fomatters = DataTable.ext.type.search; var wasInvalidated = false; - + for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { row = settings.aoData[i]; - + if ( ! row._aFilterData ) { filterData = []; - + for ( j=0, jen=columns.length ; j<jen ; j++ ) { column = columns[j]; - + if ( column.bSearchable ) { cellData = _fnGetCellData( settings, i, j, 'filter' ); - + if ( fomatters[ column.sType ] ) { cellData = fomatters[ column.sType ]( cellData ); } - + // Search in DataTables 1.10 is string based. In 1.11 this // should be altered to also allow strict type checking. if ( cellData === null ) { cellData = ''; } - + if ( typeof cellData !== 'string' && cellData.toString ) { cellData = cellData.toString(); } @@ -3090,7 +3090,7 @@ else { cellData = ''; } - + // If it looks like there is an HTML entity in the string, // attempt to decode it so sorting works as expected. Note that // we could use a single line of jQuery to do this, but the DOM @@ -3101,24 +3101,24 @@ __filter_div.textContent : __filter_div.innerText; } - + if ( cellData.replace ) { cellData = cellData.replace(/[\r\n]/g, ''); } - + filterData.push( cellData ); } - + row._aFilterData = filterData; row._sFilterRow = filterData.join(' '); wasInvalidated = true; } } - + return wasInvalidated; } - - + + /** * Convert from the internal Hungarian notation to camelCase for external * interaction @@ -3135,9 +3135,9 @@ caseInsensitive: obj.bCaseInsensitive }; } - - - + + + /** * Convert from camelCase notation to the internal Hungarian. We could use the * Hungarian convert function here, but this is cleaner @@ -3154,7 +3154,7 @@ bCaseInsensitive: obj.caseInsensitive }; } - + /** * Generate the node required for the info display * @param {object} oSettings dataTables settings object @@ -3170,26 +3170,26 @@ 'class': settings.oClasses.sInfo, 'id': ! nodes ? tid+'_info' : null } ); - + if ( ! nodes ) { // Update display on each draw settings.aoDrawCallback.push( { "fn": _fnUpdateInfo, "sName": "information" } ); - + n .attr( 'role', 'status' ) .attr( 'aria-live', 'polite' ); - + // Table is described by our info div $(settings.nTable).attr( 'aria-describedby', tid+'_info' ); } - + return n[0]; } - - + + /** * Update the information elements in the display * @param {object} settings dataTables settings object @@ -3202,7 +3202,7 @@ if ( nodes.length === 0 ) { return; } - + var lang = settings.oLanguage, start = settings._iDisplayStart+1, @@ -3212,27 +3212,27 @@ out = total ? lang.sInfo : lang.sInfoEmpty; - + if ( total !== max ) { /* Record set after filtering */ out += ' ' + lang.sInfoFiltered; } - + // Convert the macros out += lang.sInfoPostFix; out = _fnInfoMacros( settings, out ); - + var callback = lang.fnInfoCallback; if ( callback !== null ) { out = callback.call( settings.oInstance, settings, start, end, max, total, out ); } - + $(nodes).html( out ); } - - + + function _fnInfoMacros ( settings, str ) { // When infinite scrolling, we are always starting at 1. _iDisplayStart is used only @@ -3243,7 +3243,7 @@ len = settings._iDisplayLength, vis = settings.fnRecordsDisplay(), all = len === -1; - + return str. replace(/_START_/g, formatter.call( settings, start ) ). replace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ). @@ -3252,9 +3252,9 @@ replace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ). replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) ); } - - - + + + /** * Draw the table for the first time, adding all required features * @param {object} settings dataTables settings object @@ -3265,43 +3265,43 @@ var i, iLen, iAjaxStart=settings.iInitDisplayStart; var columns = settings.aoColumns, column; var features = settings.oFeatures; - + /* Ensure that the table data is fully initialised */ if ( ! settings.bInitialised ) { setTimeout( function(){ _fnInitialise( settings ); }, 200 ); return; } - + /* Show the display HTML options */ _fnAddOptionsHtml( settings ); - + /* Build and draw the header / footer for the table */ _fnBuildHead( settings ); _fnDrawHead( settings, settings.aoHeader ); _fnDrawHead( settings, settings.aoFooter ); - + /* Okay to show that something is going on now */ _fnProcessingDisplay( settings, true ); - + /* Calculate sizes for columns */ if ( features.bAutoWidth ) { _fnCalculateColumnWidths( settings ); } - + for ( i=0, iLen=columns.length ; i<iLen ; i++ ) { column = columns[i]; - + if ( column.sWidth ) { column.nTh.style.width = _fnStringToCss( column.sWidth ); } } - + // If there is default sorting required - let's do it. The sort function // will do the drawing for us. Otherwise we draw the table regardless of the // Ajax source - this allows the table to look initialised for Ajax sourcing // data (show 'loading' message possibly) _fnReDraw( settings ); - + // Server-side processing init complete is done by _fnAjaxUpdateDraw var dataSrc = _fnDataSource( settings ); if ( dataSrc != 'ssp' ) { @@ -3309,19 +3309,19 @@ if ( dataSrc == 'ajax' ) { _fnBuildAjax( settings, [], function(json) { var aData = _fnAjaxDataSrc( settings, json ); - + // Got the data - add it to the table for ( i=0 ; i<aData.length ; i++ ) { _fnAddData( settings, aData[i] ); } - + // Reset the init display for cookie saving. We've already done // a filter, and therefore cleared it before. So we need to make // it appear 'fresh' settings.iInitDisplayStart = iAjaxStart; - + _fnReDraw( settings ); - + _fnProcessingDisplay( settings, false ); _fnInitComplete( settings, json ); }, settings ); @@ -3332,8 +3332,8 @@ } } } - - + + /** * Draw the table for the first time, adding all required features * @param {object} oSettings dataTables settings object @@ -3344,29 +3344,29 @@ function _fnInitComplete ( settings, json ) { settings._bInitComplete = true; - + // On an Ajax load we now have data and therefore want to apply the column // sizing if ( json ) { _fnAdjustColumnSizing( settings ); } - + _fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] ); } - - + + function _fnLengthChange ( settings, val ) { var len = parseInt( val, 10 ); settings._iDisplayLength = len; - + _fnLengthOverflow( settings ); - + // Fire length change event _fnCallbackFire( settings, null, 'length', [settings, len] ); } - - + + /** * Generate the node required for user display length changing * @param {object} settings dataTables settings object @@ -3382,26 +3382,26 @@ d2 = $.isArray( menu[0] ), lengths = d2 ? menu[0] : menu, language = d2 ? menu[1] : menu; - + var select = $('<select/>', { 'name': tableId+'_length', 'aria-controls': tableId, 'class': classes.sLengthSelect } ); - + for ( var i=0, ien=lengths.length ; i<ien ; i++ ) { select[0][ i ] = new Option( language[i], lengths[i] ); } - + var div = $('<div><label/></div>').addClass( classes.sLength ); if ( ! settings.aanFeatures.l ) { div[0].id = tableId+'_length'; } - + div.children().append( settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML ) ); - + // Can't use `select` variable as user might provide their own and the // reference is broken by the use of outerHTML $('select', div) @@ -3410,24 +3410,24 @@ _fnLengthChange( settings, $(this).val() ); _fnDraw( settings ); } ); - + // Update node value whenever anything changes the table's length $(settings.nTable).bind( 'length.dt.DT', function (e, s, len) { if ( settings === s ) { $('select', div).val( len ); } } ); - + return div[0]; } - - - + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Note that most of the paging logic is done in * DataTable.ext.pager */ - + /** * Generate the node required for default pagination * @param {object} oSettings dataTables settings object @@ -3445,16 +3445,16 @@ }, node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0], features = settings.aanFeatures; - + if ( ! modern ) { plugin.fnInit( settings, node, redraw ); } - + /* Add a draw callback for the pagination on first instance, to update the paging display */ if ( ! features.p ) { node.id = settings.sTableId+'_paginate'; - + settings.aoDrawCallback.push( { "fn": function( settings ) { if ( modern ) { @@ -3467,7 +3467,7 @@ pages = all ? 1 : Math.ceil( visRecords / len ), buttons = plugin(page, pages), i, ien; - + for ( i=0, ien=features.p.length ; i<ien ; i++ ) { _fnRenderer( settings, 'pageButton' )( settings, features.p[i], i, buttons, page, pages @@ -3481,11 +3481,11 @@ "sName": "pagination" } ); } - + return node; } - - + + /** * Alter the display settings to change the page * @param {object} settings DataTables settings object @@ -3501,7 +3501,7 @@ start = settings._iDisplayStart, len = settings._iDisplayLength, records = settings.fnRecordsDisplay(); - + if ( records === 0 || len === -1 ) { start = 0; @@ -3509,7 +3509,7 @@ else if ( typeof action === "number" ) { start = action * len; - + if ( start > records ) { start = 0; @@ -3524,7 +3524,7 @@ start = len >= 0 ? start - len : 0; - + if ( start < 0 ) { start = 0; @@ -3545,23 +3545,23 @@ { _fnLog( settings, 0, "Unknown paging action: "+action, 5 ); } - + var changed = settings._iDisplayStart !== start; settings._iDisplayStart = start; - + if ( changed ) { _fnCallbackFire( settings, null, 'page', [settings] ); - + if ( redraw ) { _fnDraw( settings ); } } - + return changed; } - - - + + + /** * Generate the node required for the processing node * @param {object} settings dataTables settings object @@ -3577,8 +3577,8 @@ .html( settings.oLanguage.sProcessing ) .insertBefore( settings.nTable )[0]; } - - + + /** * Display or hide the processing indicator * @param {object} settings dataTables settings object @@ -3590,10 +3590,10 @@ if ( settings.oFeatures.bProcessing ) { $(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' ); } - + _fnCallbackFire( settings, null, 'processing', [settings, show] ); } - + /** * Add any control elements for the table - specifically scrolling * @param {object} settings dataTables settings object @@ -3603,17 +3603,17 @@ function _fnFeatureHtmlTable ( settings ) { var table = $(settings.nTable); - + // Add the ARIA grid role to the table table.attr( 'role', 'grid' ); - + // Scrolling from here on in var scroll = settings.oScroll; - + if ( scroll.sX === '' && scroll.sY === '' ) { return settings.nTable; } - + var scrollX = scroll.sX; var scrollY = scroll.sY; var classes = settings.oClasses; @@ -3626,7 +3626,7 @@ var size = function ( s ) { return !s ? null : _fnStringToCss( s ); }; - + // This is fairly messy, but with x scrolling enabled, if the table has a // width attribute, regardless of any width applied using the column width // options, the browser will shrink or grow the table as needed to fit into @@ -3637,11 +3637,11 @@ if ( scroll.sX && table.attr('width') === '100%' ) { table.removeAttr('width'); } - + if ( ! footer.length ) { footer = null; } - + /* * The HTML structure that we want to generate in this function is: * div - scroller @@ -3693,7 +3693,7 @@ } ) .append( table ) ); - + if ( footer ) { scroller.append( $(_div, { 'class': classes.sScrollFoot } ) @@ -3716,40 +3716,40 @@ ) ); } - + var children = scroller.children(); var scrollHead = children[0]; var scrollBody = children[1]; var scrollFoot = footer ? children[2] : null; - + // When the body is scrolled, then we also want to scroll the headers if ( scrollX ) { $(scrollBody).on( 'scroll.DT', function (e) { var scrollLeft = this.scrollLeft; - + scrollHead.scrollLeft = scrollLeft; - + if ( footer ) { scrollFoot.scrollLeft = scrollLeft; } } ); } - + settings.nScrollHead = scrollHead; settings.nScrollBody = scrollBody; settings.nScrollFoot = scrollFoot; - + // On redraw - align columns settings.aoDrawCallback.push( { "fn": _fnScrollDraw, "sName": "scrolling" } ); - + return scroller[0]; } - - - + + + /** * Update the header, footer and body tables for resizing - i.e. column * alignment. @@ -3806,31 +3806,31 @@ style.borderBottomWidth = "0"; style.height = 0; }; - + /* * 1. Re-create the table inside the scrolling div */ - + // Remove the old minimised thead and tfoot elements in the inner table table.children('thead, tfoot').remove(); - + // Clone the current header and footer elements and then place it into the inner table headerCopy = header.clone().prependTo( table ); headerTrgEls = header.find('tr'); // original header is in its own table headerSrcEls = headerCopy.find('tr'); headerCopy.find('th, td').removeAttr('tabindex'); - + if ( footer ) { footerCopy = footer.clone().prependTo( table ); footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized footerSrcEls = footerCopy.find('tr'); } - - + + /* * 2. Take live measurements from the DOM - do not alter the DOM itself! */ - + // Remove old sizing and apply the calculated column widths // Get the unique column headers in the newly created (cloned) header. We want to apply the // calculated sizes to this header @@ -3839,31 +3839,31 @@ divBodyStyle.width = '100%'; divHeader[0].style.width = '100%'; } - + $.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) { idx = _fnVisibleToColumnIndex( settings, i ); el.style.width = settings.aoColumns[idx].sWidth; } ); - + if ( footer ) { _fnApplyToChildren( function(n) { n.style.width = ""; }, footerSrcEls ); } - + // If scroll collapse is enabled, when we put the headers back into the body for sizing, we // will end up forcing the scrollbar to appear, making our measurements wrong for when we // then hide it (end of this function), so add the header height to the body scroller. if ( scroll.bCollapse && scrollY !== "" ) { divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px"; } - + // Size the table as a whole sanityWidth = table.outerWidth(); if ( scrollX === "" ) { // No x scrolling tableStyle.width = "100%"; - + // IE7 will make the width of the table when 100% include the scrollbar // - which is shouldn't. When there is a scrollbar we need to take this // into account. @@ -3893,52 +3893,52 @@ tableStyle.width = _fnStringToCss( sanityWidth ); } } - + // Recalculate the sanity width - now that we've applied the required width, // before it was a temporary variable. This is required because the column // width calculation is done before this table DOM is created. sanityWidth = table.outerWidth(); - + // Hidden header should have zero height, so remove padding and borders. Then // set the width based on the real headers - + // Apply all styles in one pass _fnApplyToChildren( zeroOut, headerSrcEls ); - + // Read all widths in next pass _fnApplyToChildren( function(nSizer) { headerContent.push( nSizer.innerHTML ); headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); }, headerSrcEls ); - + // Apply all widths in final pass _fnApplyToChildren( function(nToSize, i) { nToSize.style.width = headerWidths[i]; }, headerTrgEls ); - + $(headerSrcEls).height(0); - + /* Same again with the footer if we have one */ if ( footer ) { _fnApplyToChildren( zeroOut, footerSrcEls ); - + _fnApplyToChildren( function(nSizer) { footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); }, footerSrcEls ); - + _fnApplyToChildren( function(nToSize, i) { nToSize.style.width = footerWidths[i]; }, footerTrgEls ); - + $(footerSrcEls).height(0); } - - + + /* * 3. Apply the measurements */ - + // "Hide" the header and footer that we used for the sizing. We need to keep // the content of the cell so that the width applied to the header and body // both match, but we want to hide it completely. We want to also fix their @@ -3947,7 +3947,7 @@ nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>'; nSizer.style.width = headerWidths[i]; }, headerSrcEls ); - + if ( footer ) { _fnApplyToChildren( function(nSizer, i) { @@ -3955,7 +3955,7 @@ nSizer.style.width = footerWidths[i]; }, footerSrcEls ); } - + // Sanity check that the table is of a sensible width. If not then we are going to get // misalignment - try to prevent this by not allowing the table to shrink below its min width if ( table.outerWidth() < sanityWidth ) @@ -3965,14 +3965,14 @@ divBody.css('overflow-y') == "scroll")) ? sanityWidth+barWidth : sanityWidth; - + // IE6/7 are a law unto themselves... if ( ie67 && (divBodyEl.scrollHeight > divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll") ) { tableStyle.width = _fnStringToCss( correction-barWidth ); } - + // And give the user a warning that we've stopped the table getting too small if ( scrollX === "" || scrollXInner !== "" ) { _fnLog( settings, 1, 'Possible column misalignment', 6 ); @@ -3982,16 +3982,16 @@ { correction = '100%'; } - + // Apply to the container elements divBodyStyle.width = _fnStringToCss( correction ); divHeaderStyle.width = _fnStringToCss( correction ); - + if ( footer ) { settings.nScrollFoot.style.width = _fnStringToCss( correction ); } - - + + /* * 4. Clean up */ @@ -4004,48 +4004,48 @@ divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth ); } } - + if ( scrollY && scroll.bCollapse ) { divBodyStyle.height = _fnStringToCss( scrollY ); - + var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ? barWidth : 0; - + if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) { divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra ); } } - + /* Finally set the width's of the header and footer tables */ var iOuterWidth = table.outerWidth(); divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth ); divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth ); - + // Figure out if there are scrollbar present - if so then we need a the header and footer to // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar) var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll"; var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' ); divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px"; - + if ( footer ) { divFooterTable[0].style.width = _fnStringToCss( iOuterWidth ); divFooterInner[0].style.width = _fnStringToCss( iOuterWidth ); divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px"; } - + /* Adjust the position of the header in case we loose the y-scrollbar */ divBody.scroll(); - + // If sorting or filtering has occurred, jump the scrolling back to the top // only if we aren't holding the position if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) { divBodyEl.scrollTop = 0; } } - - - + + + /** * Apply a given function to the display child nodes of an element array (typically * TD children of TR rows @@ -4058,11 +4058,11 @@ { var index=0, i=0, iLen=an1.length; var nNode1, nNode2; - + while ( i < iLen ) { nNode1 = an1[i].firstChild; nNode2 = an2 ? an2[i].firstChild : null; - + while ( nNode1 ) { if ( nNode1.nodeType === 1 ) { if ( an2 ) { @@ -4071,23 +4071,23 @@ else { fn( nNode1, index ); } - + index++; } - + nNode1 = nNode1.nextSibling; nNode2 = an2 ? nNode2.nextSibling : null; } - + i++; } } - - - + + + var __re_html_remove = /<.*?>/g; - - + + /** * Calculate the width of columns for the table * @param {object} oSettings dataTables settings object @@ -4109,23 +4109,23 @@ tableContainer = table.parentNode, userInputs = false, i, column, columnIdx, width, outerWidth; - + var styleWidth = table.style.width; if ( styleWidth && styleWidth.indexOf('%') !== -1 ) { tableWidthAttr = styleWidth; } - + /* Convert any user input sizes into pixel sizes */ for ( i=0 ; i<visibleColumns.length ; i++ ) { column = columns[ visibleColumns[i] ]; - + if ( column.sWidth !== null ) { column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer ); - + userInputs = true; } } - + /* If the number of columns in the DOM equals the number that we have to * process in DataTables, then we can use the offsets that are created by * the web- browser. No custom sizes can be set in order for this to happen, @@ -4148,42 +4148,42 @@ var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table .css( 'visibility', 'hidden' ) .removeAttr( 'id' ); - + // Clean up the table body tmpTable.find('tbody tr').remove(); var tr = $('<tr/>').appendTo( tmpTable.find('tbody') ); - + // Remove any assigned widths from the footer (from scrolling) tmpTable.find('tfoot th, tfoot td').css('width', ''); - + // Apply custom sizing to the cloned header headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] ); - + for ( i=0 ; i<visibleColumns.length ; i++ ) { column = columns[ visibleColumns[i] ]; - + headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ? _fnStringToCss( column.sWidthOrig ) : ''; } - + // Find the widest cell for each column and put it into the table if ( oSettings.aoData.length ) { for ( i=0 ; i<visibleColumns.length ; i++ ) { columnIdx = visibleColumns[i]; column = columns[ columnIdx ]; - + $( _fnGetWidestNode( oSettings, columnIdx ) ) .clone( false ) .append( column.sContentPadding ) .appendTo( tr ); } } - + // Table has been built, attach to the document so we can work with it tmpTable.appendTo( tableContainer ); - - // When scrolling (X or Y) we want to set the width of the table as + + // When scrolling (X or Y) we want to set the width of the table as // appropriate. However, when not scrolling leave the table width as it // is. This results in slightly different, but I think correct behaviour if ( scrollX && scrollXInner ) { @@ -4191,7 +4191,7 @@ } else if ( scrollX ) { tmpTable.css( 'width', 'auto' ); - + if ( tmpTable.width() < tableContainer.offsetWidth ) { tmpTable.width( tableContainer.offsetWidth ); } @@ -4202,10 +4202,10 @@ else if ( tableWidthAttr ) { tmpTable.width( tableWidthAttr ); } - + // Take into account the y scrollbar _fnScrollingWidthAdjust( oSettings, tmpTable[0] ); - + // Browsers need a bit of a hand when a width is assigned to any columns // when x-scrolling as they tend to collapse the table to the min-width, // even if we sent the column widths. So we need to keep track of what @@ -4214,36 +4214,36 @@ if ( scrollX ) { var total = 0; - + for ( i=0 ; i<visibleColumns.length ; i++ ) { column = columns[ visibleColumns[i] ]; outerWidth = $(headerCells[i]).outerWidth(); - + total += column.sWidthOrig === null ? outerWidth : parseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width(); } - + tmpTable.width( _fnStringToCss( total ) ); table.style.width = _fnStringToCss( total ); } - + // Get the width of each column in the constructed table for ( i=0 ; i<visibleColumns.length ; i++ ) { column = columns[ visibleColumns[i] ]; width = $(headerCells[i]).width(); - + if ( width ) { column.sWidth = _fnStringToCss( width ); } } - + table.style.width = _fnStringToCss( tmpTable.css('width') ); - + // Finished with the table - ditch it tmpTable.remove(); } - + // If there is a width attr, we want to attach an event listener which // allows the table sizing to automatically adjust when the window is // resized. Use the width attr rather than CSS, since we can't know if the @@ -4251,14 +4251,14 @@ if ( tableWidthAttr ) { table.style.width = _fnStringToCss( tableWidthAttr ); } - + if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) { var bindResize = function () { $(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () { _fnAdjustColumnSizing( oSettings ); } ) ); }; - + // IE6/7 will crash if we bind a resize event handler on page load. // To be removed in 1.11 which drops IE6/7 support if ( oSettings.oBrowser.bScrollOversize ) { @@ -4267,12 +4267,12 @@ else { bindResize(); } - + oSettings._reszEvt = true; } } - - + + /** * Throttle the calls to a function. Arguments and context are maintained for * the throttled function @@ -4286,16 +4286,16 @@ frequency = freq !== undefined ? freq : 200, last, timer; - + return function () { var that = this, now = +new Date(), args = arguments; - + if ( last && now < last + frequency ) { clearTimeout( timer ); - + timer = setTimeout( function () { last = undefined; fn.apply( that, args ); @@ -4307,8 +4307,8 @@ } }; } - - + + /** * Convert a CSS unit width to pixels (e.g. 2em) * @param {string} width width to be converted @@ -4321,29 +4321,29 @@ if ( ! width ) { return 0; } - + var n = $('<div/>') .css( 'width', _fnStringToCss( width ) ) .appendTo( parent || document.body ); - + var val = n[0].offsetWidth; n.remove(); - + return val; } - - + + /** * Adjust a table's width to take account of vertical scroll bar * @param {object} oSettings dataTables settings object * @param {node} n table node * @memberof DataTable#oApi */ - + function _fnScrollingWidthAdjust ( settings, n ) { var scroll = settings.oScroll; - + if ( scroll.sX || scroll.sY ) { // When y-scrolling only, we want to remove the width of the scroll bar // so the table + scroll bar will fit into the area available, otherwise @@ -4352,8 +4352,8 @@ n.style.width = _fnStringToCss( $(n).outerWidth() - correction ); } } - - + + /** * Get the widest node * @param {object} settings dataTables settings object @@ -4367,14 +4367,14 @@ if ( idx < 0 ) { return null; } - + var data = settings.aoData[ idx ]; return ! data.nTr ? // Might not have been created when deferred rendering $('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] : data.anCells[ colIdx ]; } - - + + /** * Get the maximum strlen for each data column * @param {object} settings dataTables settings object @@ -4385,21 +4385,21 @@ function _fnGetMaxLenString( settings, colIdx ) { var s, max=-1, maxIdx = -1; - + for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { s = _fnGetCellData( settings, i, colIdx, 'display' )+''; s = s.replace( __re_html_remove, '' ); - + if ( s.length > max ) { max = s.length; maxIdx = i; } } - + return maxIdx; } - - + + /** * Append a CSS unit (only if required) to a string * @param {string} value to css-ify @@ -4411,20 +4411,20 @@ if ( s === null ) { return '0px'; } - + if ( typeof s == 'number' ) { return s < 0 ? '0px' : s+'px'; } - + // Check it has a unit character already return s.match(/\d$/) ? s+'px' : s; } - - + + /** * Get the width of a scroll bar in this browser being used * @returns {int} width in pixels @@ -4435,7 +4435,7 @@ // On first run a static variable is set, since this is only needed once. // Subsequent runs will just use the previously calculated value var width = DataTable.__scrollbarWidth; - + if ( width === undefined ) { var sizer = $('<p/>').css( { position: 'absolute', @@ -4448,18 +4448,18 @@ visibility: 'hidden' } ) .appendTo('body'); - + width = sizer[0].offsetWidth - sizer[0].clientWidth; DataTable.__scrollbarWidth = width; - + sizer.remove(); } - + return width; } - - - + + + function _fnSortFlatten ( settings ) { var @@ -4481,37 +4481,37 @@ nestedSort.push.apply( nestedSort, a ); } }; - + // Build the sort array, with pre-fix and post-fix options if they have been // specified if ( $.isArray( fixed ) ) { add( fixed ); } - + if ( fixedObj && fixed.pre ) { add( fixed.pre ); } - + add( settings.aaSorting ); - + if (fixedObj && fixed.post ) { add( fixed.post ); } - + for ( i=0 ; i<nestedSort.length ; i++ ) { srcCol = nestedSort[i][0]; aDataSort = aoColumns[ srcCol ].aDataSort; - + for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ ) { iCol = aDataSort[k]; sType = aoColumns[ iCol ].sType || 'string'; - + if ( nestedSort[i]._idx === undefined ) { nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting ); } - + aSort.push( { src: srcCol, col: iCol, @@ -4522,10 +4522,10 @@ } ); } } - + return aSort; } - + /** * Change the order of the table * @param {object} oSettings dataTables settings object @@ -4546,26 +4546,26 @@ sortCol, displayMaster = oSettings.aiDisplayMaster, aSort; - + // Resolve any column types that are unknown due to addition or invalidation // @todo Can this be moved into a 'data-ready' handler which is called when // data is going to be used in the table? _fnColumnTypes( oSettings ); - + aSort = _fnSortFlatten( oSettings ); - + for ( i=0, ien=aSort.length ; i<ien ; i++ ) { sortCol = aSort[i]; - + // Track if we can use the fast sort algorithm if ( sortCol.formatter ) { formatters++; } - + // Load the data needed for the sort, for each cell _fnSortData( oSettings, sortCol.col ); } - + /* No sorting required if server-side or no sorting array */ if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 ) { @@ -4574,7 +4574,7 @@ for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) { aiOrig[ displayMaster[i] ] = i; } - + /* Do the sort - here we want multi-column sorting based on a given data source (column) * and sorting function (from oSort) in a certain direction. It's reasonably complex to * follow on it's own, but this is what we want (example two column sorting): @@ -4604,19 +4604,19 @@ len=aSort.length, dataA = aoData[a]._aSortData, dataB = aoData[b]._aSortData; - + for ( k=0 ; k<len ; k++ ) { sort = aSort[k]; - + x = dataA[ sort.col ]; y = dataB[ sort.col ]; - + test = x<y ? -1 : x>y ? 1 : 0; if ( test !== 0 ) { return sort.dir === 'asc' ? test : -test; } } - + x = aiOrig[a]; y = aiOrig[b]; return x<y ? -1 : x>y ? 1 : 0; @@ -4632,32 +4632,32 @@ len=aSort.length, dataA = aoData[a]._aSortData, dataB = aoData[b]._aSortData; - + for ( k=0 ; k<len ; k++ ) { sort = aSort[k]; - + x = dataA[ sort.col ]; y = dataB[ sort.col ]; - + fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ]; test = fn( x, y ); if ( test !== 0 ) { return test; } } - + x = aiOrig[a]; y = aiOrig[b]; return x<y ? -1 : x>y ? 1 : 0; } ); } } - + /* Tell the draw function that we have sorted the data */ oSettings.bSorted = true; } - - + + function _fnSortAria ( settings ) { var label; @@ -4665,7 +4665,7 @@ var columns = settings.aoColumns; var aSort = _fnSortFlatten( settings ); var oAria = settings.oLanguage.oAria; - + // ARIA attributes - need to loop all columns, to update all (removing old // attributes as needed) for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) @@ -4674,11 +4674,11 @@ var asSorting = col.asSorting; var sTitle = col.sTitle.replace( /<.*?>/g, "" ); var th = col.nTh; - + // IE7 is throwing an error when setting these properties with jQuery's // attr() and removeAttr() methods... th.removeAttribute('aria-sort'); - + /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */ if ( col.bSortable ) { if ( aSort.length > 0 && aSort[0].col == i ) { @@ -4688,7 +4688,7 @@ else { nextSort = asSorting[0]; } - + label = sTitle + ( nextSort === "asc" ? oAria.sSortAscending : oAria.sSortDescending @@ -4697,12 +4697,12 @@ else { label = sTitle; } - + th.setAttribute('aria-label', label); } } - - + + /** * Function to run on user sort request * @param {object} settings dataTables settings object @@ -4724,32 +4724,32 @@ if ( idx === undefined ) { idx = $.inArray( a[1], asSorting ); } - + return idx+1 < asSorting.length ? idx+1 : overflow ? null : 0; }; - + // Convert to 2D array if needed if ( typeof sorting[0] === 'number' ) { sorting = settings.aaSorting = [ sorting ]; } - + // If appending the sort then we are multi-column sorting if ( append && settings.oFeatures.bSortMulti ) { // Are we already doing some kind of sort on this column? var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') ); - + if ( sortIdx !== -1 ) { // Yes, modify the sort nextSortIdx = next( sorting[sortIdx], true ); - + if ( nextSortIdx === null && sorting.length === 1 ) { nextSortIdx = 0; // can't remove sorting completely } - + if ( nextSortIdx === null ) { sorting.splice( sortIdx, 1 ); } @@ -4767,7 +4767,7 @@ else if ( sorting.length && sorting[0][0] == colIdx ) { // Single column - already sorting on this column, modify the sort nextSortIdx = next( sorting[0] ); - + sorting.length = 1; sorting[0][1] = asSorting[ nextSortIdx ]; sorting[0]._idx = nextSortIdx; @@ -4778,17 +4778,17 @@ sorting.push( [ colIdx, asSorting[0] ] ); sorting[0]._idx = 0; } - + // Run the sort by calling a full redraw _fnReDraw( settings ); - + // callback used for async user interaction if ( typeof callback == 'function' ) { callback( settings ); } } - - + + /** * Attach a sort handler (click) to a node * @param {object} settings dataTables settings object @@ -4800,21 +4800,21 @@ function _fnSortAttachListener ( settings, attachTo, colIdx, callback ) { var col = settings.aoColumns[ colIdx ]; - + _fnBindAction( attachTo, {}, function (e) { /* If the column is not sortable - don't to anything */ if ( col.bSortable === false ) { return; } - + // If processing is enabled use a timeout to allow the processing // display to be shown - otherwise to it synchronously if ( settings.oFeatures.bProcessing ) { _fnProcessingDisplay( settings, true ); - + setTimeout( function() { _fnSortListener( settings, colIdx, e.shiftKey, callback ); - + // In server-side processing, the draw callback will remove the // processing display if ( _fnDataSource( settings ) !== 'ssp' ) { @@ -4827,8 +4827,8 @@ } } ); } - - + + /** * Set the sorting classes on table's body, Note: it is safe to call this function * when bSort and bSortClasses are false @@ -4842,30 +4842,30 @@ var sort = _fnSortFlatten( settings ); var features = settings.oFeatures; var i, ien, colIdx; - + if ( features.bSort && features.bSortClasses ) { // Remove old sorting classes for ( i=0, ien=oldSort.length ; i<ien ; i++ ) { colIdx = oldSort[i].src; - + // Remove column sorting $( _pluck( settings.aoData, 'anCells', colIdx ) ) .removeClass( sortClass + (i<2 ? i+1 : 3) ); } - + // Add new column sorting for ( i=0, ien=sort.length ; i<ien ; i++ ) { colIdx = sort[i].src; - + $( _pluck( settings.aoData, 'anCells', colIdx ) ) .addClass( sortClass + (i<2 ? i+1 : 3) ); } } - + settings.aLastSort = sort; } - - + + // Get the data to sort a column, be it from cache, fresh (populating the // cache), or from a sort formatter function _fnSortData( settings, idx ) @@ -4874,38 +4874,38 @@ var column = settings.aoColumns[ idx ]; var customSort = DataTable.ext.order[ column.sSortDataType ]; var customData; - + if ( customSort ) { customData = customSort.call( settings.oInstance, settings, idx, _fnColumnIndexToVisible( settings, idx ) ); } - + // Use / populate cache var row, cellData; var formatter = DataTable.ext.type.order[ column.sType+"-pre" ]; - + for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { row = settings.aoData[i]; - + if ( ! row._aSortData ) { row._aSortData = []; } - + if ( ! row._aSortData[idx] || customSort ) { cellData = customSort ? customData[i] : // If there was a custom sort function, use data from there _fnGetCellData( settings, i, idx, 'sort' ); - + row._aSortData[ idx ] = formatter ? formatter( cellData ) : cellData; } } } - - - + + + /** * Save the state of a table * @param {object} oSettings dataTables settings object @@ -4917,7 +4917,7 @@ { return; } - + /* Store the interesting variables */ var state = { time: +new Date(), @@ -4932,14 +4932,14 @@ }; } ) }; - + _fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] ); - + settings.oSavedState = state; settings.fnStateSaveCallback.call( settings.oInstance, settings, state ); } - - + + /** * Attempt to load a saved table state * @param {object} oSettings dataTables settings object @@ -4950,16 +4950,16 @@ { var i, ien; var columns = settings.aoColumns; - + if ( ! settings.oFeatures.bStateSave ) { return; } - + var state = settings.fnStateLoadCallback.call( settings.oInstance, settings ); if ( ! state || ! state.time ) { return; } - + /* Allow custom and plug-in manipulation functions to alter the saved data set and * cancelling of loading by returning false */ @@ -4967,21 +4967,21 @@ if ( $.inArray( false, abStateLoad ) !== -1 ) { return; } - + /* Reject old data */ var duration = settings.iStateDuration; if ( duration > 0 && state.time < +new Date() - (duration*1000) ) { return; } - + // Number of columns have changed - all bets are off, no restore of settings if ( columns.length !== state.columns.length ) { return; } - + // Store the saved state so it might be accessed at any time settings.oLoadedState = $.extend( true, {}, state ); - + // Restore key features - todo - for 1.11 this needs to be done by // subscribed events if ( state.start !== undefined ) { @@ -4991,7 +4991,7 @@ if ( state.length !== undefined ) { settings._iDisplayLength = state.length; } - + // Order if ( state.order !== undefined ) { settings.aaSorting = []; @@ -5002,31 +5002,31 @@ ); } ); } - + // Search if ( state.search !== undefined ) { $.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) ); } - + // Columns for ( i=0, ien=state.columns.length ; i<ien ; i++ ) { var col = state.columns[i]; - + // Visibility if ( col.visible !== undefined ) { columns[i].bVisible = col.visible; } - + // Search if ( col.search !== undefined ) { $.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) ); } } - + _fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] ); } - - + + /** * Return the settings object for a particular table * @param {node} table table we are using as a dataTable @@ -5037,13 +5037,13 @@ { var settings = DataTable.settings; var idx = $.inArray( table, _pluck( settings, 'nTable' ) ); - + return idx !== -1 ? settings[ idx ] : null; } - - + + /** * Log an error message * @param {object} settings dataTables settings object @@ -5056,19 +5056,19 @@ { msg = 'DataTables warning: '+ (settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg; - + if ( tn ) { msg += '. For more information about this error, please see '+ 'http://datatables.net/tn/'+tn; } - + if ( ! level ) { // Backwards compatibility pre 1.10 var ext = DataTable.ext; var type = ext.sErrMode || ext.errMode; - + _fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] ); - + if ( type == 'alert' ) { alert( msg ); } @@ -5083,8 +5083,8 @@ console.log( msg ); } } - - + + /** * See if a property is defined on one object, if so assign it to the other object * @param {object} ret target object @@ -5104,20 +5104,20 @@ _fnMap( ret, src, val ); } } ); - + return; } - + if ( mappedName === undefined ) { mappedName = name; } - + if ( src[name] !== undefined ) { ret[mappedName] = src[name]; } } - - + + /** * Extend objects - very similar to jQuery.extend, but deep copy objects, and * shallow copy arrays. The reason we need to do this, is that we don't want to @@ -5138,11 +5138,11 @@ function _fnExtend( out, extender, breakRefs ) { var val; - + for ( var prop in extender ) { if ( extender.hasOwnProperty(prop) ) { val = extender[prop]; - + if ( $.isPlainObject( val ) ) { if ( ! $.isPlainObject( out[prop] ) ) { out[prop] = {}; @@ -5157,11 +5157,11 @@ } } } - + return out; } - - + + /** * Bind an event handers to allow a click or return key to activate the callback. * This is good for accessibility since a return on the keyboard will have the @@ -5189,8 +5189,8 @@ return false; } ); } - - + + /** * Register a callback function. Easily allows a callback function to be added to * an array store of callback functions that can then all be called together. @@ -5210,8 +5210,8 @@ } ); } } - - + + /** * Fire callback functions and trigger events. Note that the loop over the * callback array store is done backwards! Further note that you do not want to @@ -5229,55 +5229,55 @@ function _fnCallbackFire( settings, callbackArr, eventName, args ) { var ret = []; - + if ( callbackArr ) { ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) { return val.fn.apply( settings.oInstance, args ); } ); } - + if ( eventName !== null ) { var e = $.Event( eventName+'.dt' ); - + $(settings.nTable).trigger( e, args ); - + ret.push( e.result ); } - + return ret; } - - + + function _fnLengthOverflow ( settings ) { var start = settings._iDisplayStart, end = settings.fnDisplayEnd(), len = settings._iDisplayLength; - + /* If we have space to show extra rows (backing up from the end point - then do so */ if ( start >= end ) { start = end - len; } - + // Keep the start record on the current page start -= (start % len); - + if ( len === -1 || start < 0 ) { start = 0; } - + settings._iDisplayStart = start; } - - + + function _fnRenderer( settings, type ) { var renderer = settings.renderer; var host = DataTable.ext.renderer[type]; - + if ( $.isPlainObject( renderer ) && renderer[type] ) { // Specific renderer for this type. If available use it, otherwise use // the default. @@ -5288,12 +5288,12 @@ // otherwise use the default return host[renderer] || host._; } - + // Use the default return host._; } - - + + /** * Detect the data source being used for the table. Used to simplify the code * a little (ajax) and to make it compress a little smaller. @@ -5312,7 +5312,7 @@ } return 'dom'; } - + DataTable = function( options ) { @@ -5356,8 +5356,8 @@ { return this.api(true).$( sSelector, oOpts ); }; - - + + /** * Almost identical to $ in operation, but in this case returns the data for the matched * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes @@ -5410,8 +5410,8 @@ { return this.api(true).rows( sSelector, oOpts ).data(); }; - - + + /** * Create a DataTables Api instance, with the currently selected tables for * the Api's context. @@ -5429,8 +5429,8 @@ ) : new _Api( this ); }; - - + + /** * Add a single new row or multiple rows of data to the table. Please note * that this is suitable for client-side processing only - if you are using @@ -5472,20 +5472,20 @@ this.fnAddData = function( data, redraw ) { var api = this.api( true ); - + /* Check if we want to add multiple rows or not */ var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? api.rows.add( data ) : api.row.add( data ); - + if ( redraw === undefined || redraw ) { api.draw(); } - + return rows.flatten().toArray(); }; - - + + /** * This function will make DataTables recalculate the column sizes, based on the data * contained in the table and the sizes applied to the columns (in the DOM, CSS or @@ -5512,7 +5512,7 @@ var api = this.api( true ).columns.adjust(); var settings = api.settings()[0]; var scroll = settings.oScroll; - + if ( bRedraw === undefined || bRedraw ) { api.draw( false ); } @@ -5521,8 +5521,8 @@ _fnScrollDraw( settings ); } }; - - + + /** * Quickly and simply clear a table * @param {bool} [bRedraw=true] redraw the table or not @@ -5540,13 +5540,13 @@ this.fnClearTable = function( bRedraw ) { var api = this.api( true ).clear(); - + if ( bRedraw === undefined || bRedraw ) { api.draw(); } }; - - + + /** * The exact opposite of 'opening' a row, this function will close any rows which * are currently 'open'. @@ -5575,8 +5575,8 @@ { this.api( true ).row( nTr ).child.hide(); }; - - + + /** * Remove a row for the table * @param {mixed} target The index of the row from aoData to be deleted, or @@ -5601,21 +5601,21 @@ var rows = api.rows( target ); var settings = rows.settings()[0]; var data = settings.aoData[ rows[0][0] ]; - + rows.remove(); - + if ( callback ) { callback.call( this, settings, data ); } - + if ( redraw === undefined || redraw ) { api.draw(); } - + return data; }; - - + + /** * Restore the table to it's original state in the DOM by removing all of DataTables * enhancements, alterations to the DOM structure of the table and event listeners. @@ -5634,8 +5634,8 @@ { this.api( true ).destroy( remove ); }; - - + + /** * Redraw the table * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw. @@ -5656,8 +5656,8 @@ // into account the new data, but can hold position. this.api( true ).draw( complete ); }; - - + + /** * Filter the input based on data * @param {string} sInput String to filter the table on @@ -5680,18 +5680,18 @@ this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive ) { var api = this.api( true ); - + if ( iColumn === null || iColumn === undefined ) { api.search( sInput, bRegex, bSmart, bCaseInsensitive ); } else { api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive ); } - + api.draw(); }; - - + + /** * Get the data for the whole table, an individual row or an individual cell based on the * provided parameters. @@ -5732,19 +5732,19 @@ this.fnGetData = function( src, col ) { var api = this.api( true ); - + if ( src !== undefined ) { var type = src.nodeName ? src.nodeName.toLowerCase() : ''; - + return col !== undefined || type == 'td' || type == 'th' ? api.cell( src, col ).data() : api.row( src ).data() || null; } - + return api.data().toArray(); }; - - + + /** * Get an array of the TR nodes that are used in the table's body. Note that you will * typically want to use the '$' API method in preference to this as it is more @@ -5766,13 +5766,13 @@ this.fnGetNodes = function( iRow ) { var api = this.api( true ); - + return iRow !== undefined ? api.row( iRow ).node() : api.rows().nodes().flatten().toArray(); }; - - + + /** * Get the array indexes of a particular cell from it's DOM element * and column index including hidden columns @@ -5805,13 +5805,13 @@ { var api = this.api( true ); var nodeName = node.nodeName.toUpperCase(); - + if ( nodeName == 'TR' ) { return api.row( node ).index(); } else if ( nodeName == 'TD' || nodeName == 'TH' ) { var cell = api.cell( node ).index(); - + return [ cell.row, cell.columnVisible, @@ -5820,8 +5820,8 @@ } return null; }; - - + + /** * Check to see if a row is 'open' or not. * @param {node} nTr the table row to check @@ -5849,8 +5849,8 @@ { return this.api( true ).row( nTr ).child.isShown(); }; - - + + /** * This function will place a new row directly after a row which is currently * on display on the page, with the HTML contents that is passed into the @@ -5889,8 +5889,8 @@ .show() .child()[0]; }; - - + + /** * Change the pagination - provides the internal logic for pagination in a simple API * function. With this function you can have a DataTables table go to the next, @@ -5910,13 +5910,13 @@ this.fnPageChange = function ( mAction, bRedraw ) { var api = this.api( true ).page( mAction ); - + if ( bRedraw === undefined || bRedraw ) { api.draw(false); } }; - - + + /** * Show a particular column * @param {int} iCol The column whose display should be changed @@ -5936,13 +5936,13 @@ this.fnSetColumnVis = function ( iCol, bShow, bRedraw ) { var api = this.api( true ).column( iCol ).visible( bShow ); - + if ( bRedraw === undefined || bRedraw ) { api.columns.adjust().draw(); } }; - - + + /** * Get the settings for a particular table for external manipulation * @returns {object} DataTables settings object. See @@ -5963,8 +5963,8 @@ { return _fnSettingsFromNode( this[_ext.iApiIndex] ); }; - - + + /** * Sort the table by a particular column * @param {int} iCol the data index to sort on. Note that this will not match the @@ -5984,8 +5984,8 @@ { this.api( true ).order( aaSort ).draw(); }; - - + + /** * Attach a sort listener to an element for a given column * @param {node} nNode the element to attach the sort listener to @@ -6006,8 +6006,8 @@ { this.api( true ).order.listener( nNode, iColumn, fnCallback ); }; - - + + /** * Update a table cell or row - this method will accept either a single value to * update the cell with, an array of values with one element for each column or @@ -6033,25 +6033,25 @@ this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction ) { var api = this.api( true ); - + if ( iColumn === undefined || iColumn === null ) { api.row( mRow ).data( mData ); } else { api.cell( mRow, iColumn ).data( mData ); } - + if ( bAction === undefined || bAction ) { api.columns.adjust(); } - + if ( bRedraw === undefined || bRedraw ) { api.draw(); } return 0; }; - - + + /** * Provide a common method for plug-ins to check the version of DataTables being used, in order * to ensure compatibility. @@ -6070,7 +6070,7 @@ * } ); */ this.fnVersionCheck = _ext.fnVersionCheck; - + var _that = this; var emptyInit = options === undefined; @@ -6103,40 +6103,40 @@ var bInitHandedOff = false; var defaults = DataTable.defaults; var $this = $(this); - - + + /* Sanity check */ if ( this.nodeName.toLowerCase() != 'table' ) { _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 ); return; } - + /* Backwards compatibility for the defaults */ _fnCompatOpts( defaults ); _fnCompatCols( defaults.column ); - + /* Convert the camel-case defaults to Hungarian */ _fnCamelToHungarian( defaults, defaults, true ); _fnCamelToHungarian( defaults.column, defaults.column, true ); - + /* Setting up the initialisation object */ _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) ); - - - + + + /* Check to see if we are re-initialising a table */ var allSettings = DataTable.settings; for ( i=0, iLen=allSettings.length ; i<iLen ; i++ ) { var s = allSettings[i]; - + /* Base check on table node */ if ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) ) { var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve; var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy; - + if ( emptyInit || bRetrieve ) { return s.oInstance; @@ -6152,7 +6152,7 @@ return; } } - + /* If the element we are initialising has the same ID as a table which was previously * initialised, but the table nodes don't match (from before) then we destroy the old * instance by simply deleting it. This is under the assumption that the table has been @@ -6164,14 +6164,14 @@ break; } } - + /* Ensure the table has an ID - required for accessibility */ if ( sId === null || sId === "" ) { sId = "DataTables_Table_"+(DataTable.ext._unique++); this.id = sId; } - + /* Create the settings object for this table and set some of the default parameters */ var oSettings = $.extend( true, {}, DataTable.models.oSettings, { "sDestroyWidth": $this[0].style.width, @@ -6181,33 +6181,33 @@ oSettings.nTable = this; oSettings.oApi = _that.internal; oSettings.oInit = oInit; - + allSettings.push( oSettings ); - + // Need to add the instance after the instance after the settings object has been added // to the settings array, so we can self reference the table instance if more than one oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable(); - + // Backwards compatibility, before we apply all the defaults _fnCompatOpts( oInit ); - + if ( oInit.oLanguage ) { _fnLanguageCompat( oInit.oLanguage ); } - + // If the length menu is given, but the init display length is not, use the length menu if ( oInit.aLengthMenu && ! oInit.iDisplayLength ) { oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ? oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0]; } - + // Apply the defaults and init options to make a single init object will all // options defined from defaults and instance options. oInit = _fnExtend( $.extend( true, {}, defaults ), oInit ); - - + + // Map the initialisation options onto the settings object _fnMap( oSettings.oFeatures, oInit, [ "bPaginate", @@ -6255,7 +6255,7 @@ [ "bScrollCollapse", "bCollapse" ] ] ); _fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" ); - + /* Callback functions which are array driven */ _fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' ); _fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' ); @@ -6268,9 +6268,9 @@ _fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' ); _fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' ); _fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' ); - + var oClasses = oSettings.oClasses; - + // @todo Remove in 1.11 if ( oInit.bJQueryUI ) { @@ -6278,13 +6278,13 @@ * you want to have multiple tables with multiple independent classes */ $.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses ); - + if ( oInit.sDom === defaults.sDom && defaults.sDom === "lfrtip" ) { /* Set the DOM to use a layout suitable for jQuery UI's theming */ oSettings.sDom = '<"H"lfr>t<"F"ip>'; } - + if ( ! oSettings.renderer ) { oSettings.renderer = 'jqueryui'; } @@ -6297,7 +6297,7 @@ $.extend( oClasses, DataTable.ext.classes, oInit.oClasses ); } $this.addClass( oClasses.sTable ); - + /* Calculate the scroll bar width and cache it for use later on */ if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" ) { @@ -6306,14 +6306,14 @@ if ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling oSettings.oScroll.sX = '100%'; } - + if ( oSettings.iInitDisplayStart === undefined ) { /* Display start point, taking into account the save saving */ oSettings.iInitDisplayStart = oInit.iDisplayStart; oSettings._iDisplayStart = oInit.iDisplayStart; } - + if ( oInit.iDeferLoading !== null ) { oSettings.bDeferLoading = true; @@ -6321,11 +6321,11 @@ oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading; oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading; } - + /* Language definitions */ var oLanguage = oSettings.oLanguage; $.extend( true, oLanguage, oInit.oLanguage ); - + if ( oLanguage.sUrl !== "" ) { /* Get the language definitions from a file - because this Ajax call makes the language @@ -6348,7 +6348,7 @@ } ); bInitHandedOff = true; } - + /* * Stripes */ @@ -6359,7 +6359,7 @@ oClasses.sStripeEven ]; } - + /* Remove row stripe classes if they are already on the table row */ var stripeClasses = oSettings.asStripeClasses; var rowOne = $this.children('tbody').find('tr').eq(0); @@ -6369,7 +6369,7 @@ $('tbody tr', this).removeClass( stripeClasses.join(' ') ); oSettings.asDestroyStripes = stripeClasses.slice(); } - + /* * Columns * See if we should load columns automatically or use defined ones @@ -6382,7 +6382,7 @@ _fnDetectHeader( oSettings.aoHeader, nThead[0] ); anThs = _fnGetUniqueThs( oSettings ); } - + /* If not given a column array, generate one with nulls */ if ( oInit.aoColumns === null ) { @@ -6396,18 +6396,18 @@ { aoColumnsInit = oInit.aoColumns; } - + /* Add the columns */ for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ ) { _fnAddColumn( oSettings, anThs ? anThs[i] : null ); } - + /* Apply the column definitions */ _fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) { _fnColumnOptions( oSettings, iCol, oDef ); } ); - + /* HTML5 attribute detection - build an mData object automatically if the * attributes are found */ @@ -6415,14 +6415,14 @@ var a = function ( cell, name ) { return cell.getAttribute( 'data-'+name ) !== null ? name : null; }; - + $.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) { var col = oSettings.aoColumns[i]; - + if ( col.mData === i ) { var sort = a( cell, 'sort' ) || a( cell, 'order' ); var filter = a( cell, 'filter' ) || a( cell, 'search' ); - + if ( sort !== null || filter !== null ) { col.mData = { _: i+'.display', @@ -6430,15 +6430,15 @@ type: sort !== null ? i+'.@data-'+sort : undefined, filter: filter !== null ? i+'.@data-'+filter : undefined }; - + _fnColumnOptions( oSettings, i ); } } } ); } - + var features = oSettings.oFeatures; - + /* Must be done after everything which can be overridden by the state saving! */ if ( oInit.bStateSave ) { @@ -6446,13 +6446,13 @@ _fnLoadState( oSettings, oInit ); _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' ); } - - + + /* * Sorting * @todo For modularisation (1.11) this needs to do into a sort start up handler */ - + // If aaSorting is not defined, then we use the first indicator in asSorting // in case that has been altered, so the default sort reflects that option if ( oInit.aaSorting === undefined ) @@ -6463,63 +6463,63 @@ sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0]; } } - + /* Do a first pass on the sorting classes (allows any size changes to be taken into * account, and also will apply sorting disabled classes if disabled */ _fnSortingClasses( oSettings ); - + if ( features.bSort ) { _fnCallbackReg( oSettings, 'aoDrawCallback', function () { if ( oSettings.bSorted ) { var aSort = _fnSortFlatten( oSettings ); var sortedColumns = {}; - + $.each( aSort, function (i, val) { sortedColumns[ val.src ] = val.dir; } ); - + _fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] ); _fnSortAria( oSettings ); } } ); } - + _fnCallbackReg( oSettings, 'aoDrawCallback', function () { if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) { _fnSortingClasses( oSettings ); } }, 'sc' ); - - + + /* * Final init * Cache the header, body and footer as required, creating them if needed */ - + /* Browser support detection */ _fnBrowserDetect( oSettings ); - + // Work around for Webkit bug 83867 - store the caption-side before removing from doc var captions = $this.children('caption').each( function () { this._captionSide = $this.css('caption-side'); } ); - + var thead = $this.children('thead'); if ( thead.length === 0 ) { thead = $('<thead/>').appendTo(this); } oSettings.nTHead = thead[0]; - + var tbody = $this.children('tbody'); if ( tbody.length === 0 ) { tbody = $('<tbody/>').appendTo(this); } oSettings.nTBody = tbody[0]; - + var tfoot = $this.children('tfoot'); if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) { @@ -6527,7 +6527,7 @@ // a tfoot element for the caption element to be appended to tfoot = $('<tfoot/>').appendTo(this); } - + if ( tfoot.length === 0 || tfoot.children().length === 0 ) { $this.addClass( oClasses.sNoFooter ); } @@ -6535,7 +6535,7 @@ oSettings.nTFoot = tfoot[0]; _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot ); } - + /* Check if there is data passing into the constructor */ if ( oInit.aaData ) { @@ -6552,13 +6552,13 @@ */ _fnAddTr( oSettings, $(oSettings.nTBody).children('tr') ); } - + /* Copy the data index array */ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); - + /* Initialisation complete - table can be drawn */ oSettings.bInitialised = true; - + /* Check if we need to initialise the table (it might not have been handed off to the * language processor) */ @@ -6571,8 +6571,8 @@ return this; }; - - + + /** * Computed structure of the DataTables API, defined by the options passed to * `DataTable.Api.register()` when building the API. @@ -6610,8 +6610,8 @@ * @ignore */ var __apiStruct = []; - - + + /** * `Array.prototype` reference. * @@ -6619,8 +6619,8 @@ * @ignore */ var __arrayProto = Array.prototype; - - + + /** * Abstraction for `context` parameter of the `Api` constructor to allow it to * take several different forms for ease of use. @@ -6648,7 +6648,7 @@ var tables = $.map( settings, function (el, i) { return el.nTable; } ); - + if ( ! mixed ) { return []; } @@ -6672,7 +6672,7 @@ // jQuery object (also DataTables instance) jq = mixed; } - + if ( jq ) { return jq.map( function(i) { idx = $.inArray( this, tables ); @@ -6680,8 +6680,8 @@ } ).toArray(); } }; - - + + /** * DataTables API class - used to control and interface with one or more * DataTables enhanced tables. @@ -6741,7 +6741,7 @@ if ( ! (this instanceof _Api) ) { return new _Api( context, data ); } - + var settings = []; var ctxSettings = function ( o ) { var a = _toSettings( o ); @@ -6749,7 +6749,7 @@ settings.push.apply( settings, a ); } }; - + if ( $.isArray( context ) ) { for ( var i=0, ien=context.length ; i<ien ; i++ ) { ctxSettings( context[i] ); @@ -6758,64 +6758,64 @@ else { ctxSettings( context ); } - + // Remove duplicates this.context = _unique( settings ); - + // Initial data if ( data ) { this.push.apply( this, data.toArray ? data.toArray() : data ); } - + // selector this.selector = { rows: null, cols: null, opts: null }; - + _Api.extend( this, this, __apiStruct ); }; - + DataTable.Api = _Api; - + _Api.prototype = /** @lends DataTables.Api */{ any: function () { return this.flatten().length !== 0; }, - - + + concat: __arrayProto.concat, - - + + context: [], // array of table settings objects - - + + each: function ( fn ) { for ( var i=0, ien=this.length ; i<ien; i++ ) { fn.call( this, this[i], i, this ); } - + return this; }, - - + + eq: function ( idx ) { var ctx = this.context; - + return ctx.length > idx ? new _Api( ctx[idx], this[idx] ) : null; }, - - + + filter: function ( fn ) { var a = []; - + if ( __arrayProto.filter ) { a = __arrayProto.filter.call( this, fn, this ); } @@ -6827,21 +6827,21 @@ } } } - + return new _Api( this.context, a ); }, - - + + flatten: function () { var a = []; return new _Api( this.context, a.concat.apply( a, this.toArray() ) ); }, - - + + join: __arrayProto.join, - - + + indexOf: __arrayProto.indexOf || function (obj, start) { for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) { @@ -6851,7 +6851,7 @@ } return -1; }, - + iterator: function ( flatten, type, fn, alwaysNew ) { var a = [], ret, @@ -6859,7 +6859,7 @@ context = this.context, rows, items, item, selector = this.selector; - + // Argument shifting if ( typeof flatten === 'string' ) { alwaysNew = fn; @@ -6867,13 +6867,13 @@ type = flatten; flatten = false; } - + for ( i=0, ien=context.length ; i<ien ; i++ ) { var apiInst = new _Api( context[i] ); - + if ( type === 'table' ) { ret = fn.call( apiInst, context[i], i ); - + if ( ret !== undefined ) { a.push( ret ); } @@ -6881,7 +6881,7 @@ else if ( type === 'columns' || type === 'rows' ) { // this has same length as context - one entry for each table ret = fn.call( apiInst, context[i], this[i], i ); - + if ( ret !== undefined ) { a.push( ret ); } @@ -6890,28 +6890,28 @@ // columns and rows share the same structure. // 'this' is an array of column indexes for each context items = this[i]; - + if ( type === 'column-rows' ) { rows = _selector_row_indexes( context[i], selector.opts ); } - + for ( j=0, jen=items.length ; j<jen ; j++ ) { item = items[j]; - + if ( type === 'cell' ) { ret = fn.call( apiInst, context[i], item.row, item.column, i, j ); } else { ret = fn.call( apiInst, context[i], item, i, j, rows ); } - + if ( ret !== undefined ) { a.push( ret ); } } } } - + if ( a.length || alwaysNew ) { var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a ); var apiSelector = api.selector; @@ -6922,22 +6922,22 @@ } return this; }, - - + + lastIndexOf: __arrayProto.lastIndexOf || function (obj, start) { // Bit cheeky... return this.indexOf.apply( this.toArray.reverse(), arguments ); }, - - + + length: 0, - - + + map: function ( fn ) { var a = []; - + if ( __arrayProto.map ) { a = __arrayProto.map.call( this, fn, this ); } @@ -6947,88 +6947,88 @@ a.push( fn.call( this, this[i], i ) ); } } - + return new _Api( this.context, a ); }, - - + + pluck: function ( prop ) { return this.map( function ( el ) { return el[ prop ]; } ); }, - + pop: __arrayProto.pop, - - + + push: __arrayProto.push, - - + + // Does not return an API instance reduce: __arrayProto.reduce || function ( fn, init ) { return _fnReduce( this, fn, init, 0, this.length, 1 ); }, - - + + reduceRight: __arrayProto.reduceRight || function ( fn, init ) { return _fnReduce( this, fn, init, this.length-1, -1, -1 ); }, - - + + reverse: __arrayProto.reverse, - - + + // Object with rows, columns and opts selector: null, - - + + shift: __arrayProto.shift, - - + + sort: __arrayProto.sort, // ? name - order? - - + + splice: __arrayProto.splice, - - + + toArray: function () { return __arrayProto.slice.call( this ); }, - - + + to$: function () { return $( this ); }, - - + + toJQuery: function () { return $( this ); }, - - + + unique: function () { return new _Api( this.context, _unique(this) ); }, - - + + unshift: __arrayProto.unshift }; - - + + _Api.extend = function ( scope, obj, ext ) { // Only extend API instances and static properties of the API if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) { return; } - + var i, ien, j, jen, @@ -7036,41 +7036,41 @@ methodScoping = function ( scope, fn, struc ) { return function () { var ret = fn.apply( scope, arguments ); - + // Method extension _Api.extend( ret, ret, struc.methodExt ); return ret; }; }; - + for ( i=0, ien=ext.length ; i<ien ; i++ ) { struct = ext[i]; - + // Value obj[ struct.name ] = typeof struct.val === 'function' ? methodScoping( scope, struct.val, struct ) : $.isPlainObject( struct.val ) ? {} : struct.val; - + obj[ struct.name ].__dt_wrapper = true; - + // Property extension _Api.extend( scope, obj[ struct.name ], struct.propExt ); } }; - - + + // @todo - Is there need for an augment function? // _Api.augment = function ( inst, name ) // { // // Find src object in the structure from the name // var parts = name.split('.'); - + // _Api.extend( inst, obj ); // }; - - + + // [ // { // name: 'data' -- string - Property name @@ -7093,7 +7093,7 @@ // ] // } // ] - + _Api.register = _api_register = function ( name, val ) { if ( $.isArray( name ) ) { @@ -7102,13 +7102,13 @@ } return; } - + var i, ien, heir = name.split('.'), struct = __apiStruct, key, method; - + var find = function ( src, name ) { for ( var i=0, ien=src.length ; i<ien ; i++ ) { if ( src[i].name === name ) { @@ -7117,13 +7117,13 @@ } return null; }; - + for ( i=0, ien=heir.length ; i<ien ; i++ ) { method = heir[i].indexOf('()') !== -1; key = method ? heir[i].replace('()', '') : heir[i]; - + var src = find( struct, key ); if ( ! src ) { src = { @@ -7134,7 +7134,7 @@ }; struct.push( src ); } - + if ( i === ien-1 ) { src.val = val; } @@ -7145,14 +7145,14 @@ } } }; - - + + _Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) { _Api.register( pluralName, val ); - + _Api.register( singularName, function () { var ret = val.apply( this, arguments ); - + if ( ret === this ) { // Returned item is the API instance that was passed in, return it return this; @@ -7166,13 +7166,13 @@ ret[0] : undefined; } - + // Non-API return - just fire it back return ret; } ); }; - - + + /** * Selector for HTML tables. Apply the given selector to the give array of * DataTables settings objects. @@ -7188,12 +7188,12 @@ if ( typeof selector === 'number' ) { return [ a[ selector ] ]; } - + // Perform a jQuery selector on the table nodes var nodes = $.map( a, function (el, i) { return el.nTable; } ); - + return $(nodes) .filter( selector ) .map( function (i) { @@ -7203,9 +7203,9 @@ } ) .toArray(); }; - - - + + + /** * Context selector for the API's context (i.e. the tables the API instance * refers to. @@ -7223,55 +7223,55 @@ new _Api( __table_selector( selector, this.context ) ) : this; } ); - - + + _api_register( 'table()', function ( selector ) { var tables = this.tables( selector ); var ctx = tables.context; - + // Truncate to the first matched table return ctx.length ? new _Api( ctx[0] ) : tables; } ); - - + + _api_registerPlural( 'tables().nodes()', 'table().node()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTable; }, 1 ); } ); - - + + _api_registerPlural( 'tables().body()', 'table().body()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTBody; }, 1 ); } ); - - + + _api_registerPlural( 'tables().header()', 'table().header()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTHead; }, 1 ); } ); - - + + _api_registerPlural( 'tables().footer()', 'table().footer()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTFoot; }, 1 ); } ); - - + + _api_registerPlural( 'tables().containers()', 'table().container()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTableWrapper; }, 1 ); } ); - - - + + + /** * Redraw the tables in the current context. * @@ -7285,9 +7285,9 @@ _fnReDraw( settings, resetPaging===false ); } ); } ); - - - + + + /** * Get the current page index. * @@ -7311,14 +7311,14 @@ if ( action === undefined ) { return this.page.info().page; // not an expensive call } - + // else, have an action to take on all tables return this.iterator( 'table', function ( settings ) { _fnPageChange( settings, action ); } ); } ); - - + + /** * Paging information for the first table in the current context. * @@ -7341,14 +7341,14 @@ if ( this.context.length === 0 ) { return undefined; } - + var settings = this.context[0], start = settings._iDisplayStart, len = settings._iDisplayLength, visRecords = settings.fnRecordsDisplay(), all = len === -1; - + return { "page": all ? 0 : Math.floor( start / len ), "pages": all ? 1 : Math.ceil( visRecords / len ), @@ -7359,8 +7359,8 @@ "recordsDisplay": visRecords }; } ); - - + + /** * Get the current page length. * @@ -7381,47 +7381,47 @@ this.context[0]._iDisplayLength : undefined; } - + // else, set the page length return this.iterator( 'table', function ( settings ) { _fnLengthChange( settings, len ); } ); } ); - - - + + + var __reload = function ( settings, holdPosition, callback ) { // Use the draw event to trigger a callback if ( callback ) { var api = new _Api( settings ); - + api.one( 'draw', function () { callback( api.ajax.json() ); } ); } - + if ( _fnDataSource( settings ) == 'ssp' ) { _fnReDraw( settings, holdPosition ); } else { // Trigger xhr _fnProcessingDisplay( settings, true ); - + _fnBuildAjax( settings, [], function( json ) { _fnClearTable( settings ); - + var data = _fnAjaxDataSrc( settings, json ); for ( var i=0, ien=data.length ; i<ien ; i++ ) { _fnAddData( settings, data[i] ); } - + _fnReDraw( settings, holdPosition ); _fnProcessingDisplay( settings, false ); } ); } }; - - + + /** * Get the JSON response from the last Ajax request that DataTables made to the * server. Note that this returns the JSON from the first table in the current @@ -7431,29 +7431,29 @@ */ _api_register( 'ajax.json()', function () { var ctx = this.context; - + if ( ctx.length > 0 ) { return ctx[0].json; } - + // else return undefined; } ); - - + + /** * Get the data submitted in the last Ajax request */ _api_register( 'ajax.params()', function () { var ctx = this.context; - + if ( ctx.length > 0 ) { return ctx[0].oAjaxData; } - + // else return undefined; } ); - - + + /** * Reload tables from the Ajax data source. Note that this function will * automatically re-draw the table when the remote data has been loaded. @@ -7468,8 +7468,8 @@ __reload( settings, resetPaging===false, callback ); } ); } ); - - + + /** * Get the current Ajax URL. Note that this returns the URL from the first * table in the current context. @@ -7484,21 +7484,21 @@ */ _api_register( 'ajax.url()', function ( url ) { var ctx = this.context; - + if ( url === undefined ) { // get if ( ctx.length === 0 ) { return undefined; } ctx = ctx[0]; - + return ctx.ajax ? $.isPlainObject( ctx.ajax ) ? ctx.ajax.url : ctx.ajax : ctx.sAjaxSource; } - + // set return this.iterator( 'table', function ( settings ) { if ( $.isPlainObject( settings.ajax ) ) { @@ -7512,8 +7512,8 @@ // value of `sAjaxSource` redundant. } ); } ); - - + + /** * Load data from the newly set Ajax URL. Note that this method is only * available when `ajax.url()` is used to set a URL. Additionally, this method @@ -7530,37 +7530,37 @@ __reload( ctx, resetPaging===false, callback ); } ); } ); - - - - + + + + var _selector_run = function ( type, selector, selectFn, settings, opts ) { var out = [], res, a, i, ien, j, jen, selectorType = typeof selector; - + // Can't just check for isArray here, as an API or jQuery instance might be // given with their array like look if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) { selector = [ selector ]; } - + for ( i=0, ien=selector.length ; i<ien ; i++ ) { a = selector[i] && selector[i].split ? selector[i].split(',') : [ selector[i] ]; - + for ( j=0, jen=a.length ; j<jen ; j++ ) { res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] ); - + if ( res && res.length ) { out.push.apply( out, res ); } } } - + // selector extensions var ext = _ext.selector[ type ]; if ( ext.length ) { @@ -7568,31 +7568,31 @@ out = ext[i]( settings, opts, out ); } } - + return out; }; - - + + var _selector_opts = function ( opts ) { if ( ! opts ) { opts = {}; } - + // Backwards compatibility for 1.9- which used the terminology filter rather // than search if ( opts.filter && opts.search === undefined ) { opts.search = opts.filter; } - + return $.extend( { search: 'none', order: 'current', page: 'all' }, opts ); }; - - + + var _selector_first = function ( inst ) { // Reduce the API instance to the first item found @@ -7604,29 +7604,29 @@ inst[0].length = 1; inst.length = 1; inst.context = [ inst.context[i] ]; - + return inst; } } - + // Not found - return an empty instance inst.length = 0; return inst; }; - - + + var _selector_row_indexes = function ( settings, opts ) { var i, ien, tmp, a=[], displayFiltered = settings.aiDisplay, displayMaster = settings.aiDisplayMaster; - + var search = opts.search, // none, applied, removed order = opts.order, // applied, current, index (original - compatibility with 1.9) page = opts.page; // all, current - + if ( _fnDataSource( settings ) == 'ssp' ) { // In server-side processing mode, most options are irrelevant since // rows not shown don't exist and the index order is the applied order @@ -7660,7 +7660,7 @@ } else { // applied | removed tmp = $.inArray( i, displayFiltered ); - + if ((tmp === -1 && search == 'removed') || (tmp >= 0 && search == 'applied') ) { @@ -7669,11 +7669,11 @@ } } } - + return a; }; - - + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Rows * @@ -7684,23 +7684,23 @@ * {array} - jQuery array of nodes, or simply an array of TR nodes * */ - - + + var __row_selector = function ( settings, selector, opts ) { var run = function ( sel ) { var selInt = _intVal( sel ); var i, ien; - + // Short cut - selector is a number and no options provided (default is // all records, so no need to check if the index is in there, since it // must be - dev error if the index doesn't exist). if ( selInt !== null && ! opts ) { return [ selInt ]; } - + var rows = _selector_row_indexes( settings, opts ); - + if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) { // Selector - integer return [ selInt ]; @@ -7709,7 +7709,7 @@ // Selector - none return rows; } - + // Selector - function if ( typeof sel === 'function' ) { return $.map( rows, function (idx) { @@ -7717,12 +7717,12 @@ return sel( idx, row._aData, row.nTr ) ? idx : null; } ); } - + // Get nodes in the order from the `rows` array with null values removed var nodes = _removeEmpty( _pluck_order( settings.aoData, rows, 'nTr' ) ); - + // Selector - node if ( sel.nodeName ) { if ( $.inArray( sel, nodes ) !== -1 ) { @@ -7730,7 +7730,7 @@ // and DataTables adds a prop for fast lookup } } - + // Selector - jQuery selector string, array of nodes or jQuery object/ // As jQuery's .filter() allows jQuery objects to be passed in filter, // it also allows arrays, so this will cope with all three options @@ -7741,11 +7741,11 @@ } ) .toArray(); }; - + return _selector_run( 'row', selector, run, settings, opts ); }; - - + + _api_register( 'rows()', function ( selector, opts ) { // argument shifting if ( selector === undefined ) { @@ -7755,88 +7755,88 @@ opts = selector; selector = ''; } - + opts = _selector_opts( opts ); - + var inst = this.iterator( 'table', function ( settings ) { return __row_selector( settings, selector, opts ); }, 1 ); - + // Want argument shifting here and in __row_selector? inst.selector.rows = selector; inst.selector.opts = opts; - + return inst; } ); - + _api_register( 'rows().nodes()', function () { return this.iterator( 'row', function ( settings, row ) { return settings.aoData[ row ].nTr || undefined; }, 1 ); } ); - + _api_register( 'rows().data()', function () { return this.iterator( true, 'rows', function ( settings, rows ) { return _pluck_order( settings.aoData, rows, '_aData' ); }, 1 ); } ); - + _api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) { return this.iterator( 'row', function ( settings, row ) { var r = settings.aoData[ row ]; return type === 'search' ? r._aFilterData : r._aSortData; }, 1 ); } ); - + _api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) { return this.iterator( 'row', function ( settings, row ) { _fnInvalidate( settings, row, src ); } ); } ); - + _api_registerPlural( 'rows().indexes()', 'row().index()', function () { return this.iterator( 'row', function ( settings, row ) { return row; }, 1 ); } ); - + _api_registerPlural( 'rows().remove()', 'row().remove()', function () { var that = this; - + return this.iterator( 'row', function ( settings, row, thatIdx ) { var data = settings.aoData; - + data.splice( row, 1 ); - + // Update the _DT_RowIndex parameter on all rows in the table for ( var i=0, ien=data.length ; i<ien ; i++ ) { if ( data[i].nTr !== null ) { data[i].nTr._DT_RowIndex = i; } } - + // Remove the target row from the search array var displayIndex = $.inArray( row, settings.aiDisplay ); - + // Delete from the display arrays _fnDeleteIndex( settings.aiDisplayMaster, row ); _fnDeleteIndex( settings.aiDisplay, row ); _fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes - + // Check for an 'overflow' they case for displaying the table _fnLengthOverflow( settings ); } ); } ); - - + + _api_register( 'rows.add()', function ( rows ) { var newRows = this.iterator( 'table', function ( settings ) { var row, i, ien; var out = []; - + for ( i=0, ien=rows.length ; i<ien ; i++ ) { row = rows[i]; - + if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { out.push( _fnAddTr( settings, row )[0] ); } @@ -7844,79 +7844,79 @@ out.push( _fnAddData( settings, row ) ); } } - + return out; }, 1 ); - + // Return an Api.rows() extended instance, so rows().nodes() etc can be used var modRows = this.rows( -1 ); modRows.pop(); modRows.push.apply( modRows, newRows.toArray() ); - + return modRows; } ); - - - - - + + + + + /** * */ _api_register( 'row()', function ( selector, opts ) { return _selector_first( this.rows( selector, opts ) ); } ); - - + + _api_register( 'row().data()', function ( data ) { var ctx = this.context; - + if ( data === undefined ) { // Get return ctx.length && this.length ? ctx[0].aoData[ this[0] ]._aData : undefined; } - + // Set ctx[0].aoData[ this[0] ]._aData = data; - + // Automatically invalidate _fnInvalidate( ctx[0], this[0], 'data' ); - + return this; } ); - - + + _api_register( 'row().node()', function () { var ctx = this.context; - + return ctx.length && this.length ? ctx[0].aoData[ this[0] ].nTr || null : null; } ); - - + + _api_register( 'row.add()', function ( row ) { // Allow a jQuery object to be passed in - only a single row is added from // it though - the first element in the set if ( row instanceof $ && row.length ) { row = row[0]; } - + var rows = this.iterator( 'table', function ( settings ) { if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { return _fnAddTr( settings, row )[0]; } return _fnAddData( settings, row ); } ); - + // Return an Api.rows() extended instance, with the newly added row selected return this.row( rows[0] ); } ); - - - + + + var __details_add = function ( ctx, row, data, klass ) { // Convert to array of TR elements @@ -7929,7 +7929,7 @@ } return; } - + // If we get a TR element, then just add it directly - up to the dev // to add the correct number of columns etc if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) { @@ -7942,65 +7942,65 @@ .addClass( k ) .html( r ) [0].colSpan = _fnVisbleColumns( ctx ); - + rows.push( created[0] ); } }; - + addRow( data, klass ); - + if ( row._details ) { row._details.remove(); } - + row._details = $(rows); - + // If the children were already shown, that state should be retained if ( row._detailsShow ) { row._details.insertAfter( row.nTr ); } }; - - + + var __details_remove = function ( api, idx ) { var ctx = api.context; - + if ( ctx.length ) { var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ]; - + if ( row._details ) { row._details.remove(); - + row._detailsShow = undefined; row._details = undefined; } } }; - - + + var __details_display = function ( api, show ) { var ctx = api.context; - + if ( ctx.length && api.length ) { var row = ctx[0].aoData[ api[0] ]; - + if ( row._details ) { row._detailsShow = show; - + if ( show ) { row._details.insertAfter( row.nTr ); } else { row._details.detach(); } - + __details_events( ctx[0] ); } } }; - - + + var __details_events = function ( settings ) { var api = new _Api( settings ); @@ -8009,51 +8009,51 @@ var colvisEvent = 'column-visibility'+namespace; var destroyEvent = 'destroy'+namespace; var data = settings.aoData; - + api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent ); - + if ( _pluck( data, '_details' ).length > 0 ) { // On each draw, insert the required elements into the document api.on( drawEvent, function ( e, ctx ) { if ( settings !== ctx ) { return; } - + api.rows( {page:'current'} ).eq(0).each( function (idx) { // Internal data grab var row = data[ idx ]; - + if ( row._detailsShow ) { row._details.insertAfter( row.nTr ); } } ); } ); - + // Column visibility change - update the colspan api.on( colvisEvent, function ( e, ctx, idx, vis ) { if ( settings !== ctx ) { return; } - + // Update the colspan for the details rows (note, only if it already has // a colspan) var row, visible = _fnVisbleColumns( ctx ); - + for ( var i=0, ien=data.length ; i<ien ; i++ ) { row = data[i]; - + if ( row._details ) { row._details.children('td[colspan]').attr('colspan', visible ); } } } ); - + // Table destroyed - nuke any child rows api.on( destroyEvent, function ( e, ctx ) { if ( settings !== ctx ) { return; } - + for ( var i=0, ien=data.length ; i<ien ; i++ ) { if ( data[i]._details ) { __details_remove( api, i ); @@ -8062,19 +8062,19 @@ } ); } }; - + // Strings for the method names to help minification var _emp = ''; var _child_obj = _emp+'row().child'; var _child_mth = _child_obj+'()'; - + // data can be: // tr // string // jQuery or array of any of the above _api_register( _child_mth, function ( data, klass ) { var ctx = this.context; - + if ( data === undefined ) { // get return ctx.length && this.length ? @@ -8093,11 +8093,11 @@ // set __details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass ); } - + return this; } ); - - + + _api_register( [ _child_obj+'.show()', _child_mth+'.show()' // only when `child()` was called with parameters (without @@ -8105,8 +8105,8 @@ __details_display( this, true ); return this; } ); - - + + _api_register( [ _child_obj+'.hide()', _child_mth+'.hide()' // only when `child()` was called with parameters (without @@ -8114,8 +8114,8 @@ __details_display( this, false ); return this; } ); - - + + _api_register( [ _child_obj+'.remove()', _child_mth+'.remove()' // only when `child()` was called with parameters (without @@ -8123,20 +8123,20 @@ __details_remove( this ); return this; } ); - - + + _api_register( _child_obj+'.isShown()', function () { var ctx = this.context; - + if ( ctx.length && this.length ) { // _detailsShown as false or undefined will fall through to return false return ctx[0].aoData[ this[0] ]._detailsShow || false; } return false; } ); - - - + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Columns * @@ -8147,13 +8147,13 @@ * "{string}" - jQuery selector on column header nodes * */ - + // can be an array of these items, comma separated list, or an array of comma // separated lists - + var __re_column_selector = /^(.+):(name|visIdx|visible)$/; - - + + // r1 and r2 are redundant - but it means that the parameters match for the // iterator callback in columns().data() var __columnData = function ( settings, column, r1, r2, rows ) { @@ -8163,23 +8163,23 @@ } return a; }; - - + + var __column_selector = function ( settings, selector, opts ) { var columns = settings.aoColumns, names = _pluck( columns, 'sName' ), nodes = _pluck( columns, 'nTh' ); - + var run = function ( s ) { var selInt = _intVal( s ); - + // Selector - all if ( s === '' ) { return _range( columns.length ); } - + // Selector - index if ( selInt !== null ) { return [ selInt >= 0 ? @@ -8187,11 +8187,11 @@ columns.length + selInt // Count from right (+ because its a negative value) ]; } - + // Selector = function if ( typeof s === 'function' ) { var rows = _selector_row_indexes( settings, opts ); - + return $.map( columns, function (col, idx) { return s( idx, @@ -8200,12 +8200,12 @@ ) ? idx : null; } ); } - + // jQuery or string selector var match = typeof s === 'string' ? s.match( __re_column_selector ) : ''; - + if ( match ) { switch( match[2] ) { case 'visIdx': @@ -8221,7 +8221,7 @@ } // Counting from the left return [ _fnVisibleToColumnIndex( settings, idx ) ]; - + case 'name': // match by name. `names` is column index complete and in order return $.map( names, function (name, i) { @@ -8239,38 +8239,38 @@ .toArray(); } }; - + return _selector_run( 'column', selector, run, settings, opts ); }; - - + + var __setColumnVis = function ( settings, column, vis, recalc ) { var cols = settings.aoColumns, col = cols[ column ], data = settings.aoData, row, cells, i, ien, tr; - + // Get if ( vis === undefined ) { return col.bVisible; } - + // Set // No change if ( col.bVisible === vis ) { return; } - + if ( vis ) { // Insert column // Need to decide if we should use appendChild or insertBefore var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 ); - + for ( i=0, ien=data.length ; i<ien ; i++ ) { tr = data[i].nTr; cells = data[i].anCells; - + if ( tr ) { // insertBefore can act like appendChild if 2nd arg is null tr.insertBefore( cells[ column ], cells[ insertBefore ] || null ); @@ -8281,28 +8281,28 @@ // Remove column $( _pluck( settings.aoData, 'anCells', column ) ).detach(); } - + // Common actions col.bVisible = vis; _fnDrawHead( settings, settings.aoHeader ); _fnDrawHead( settings, settings.aoFooter ); - + if ( recalc === undefined || recalc ) { // Automatically adjust column sizing _fnAdjustColumnSizing( settings ); - + // Realign columns for scrolling if ( settings.oScroll.sX || settings.oScroll.sY ) { _fnScrollDraw( settings ); } } - + _fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] ); - + _fnSaveState( settings ); }; - - + + _api_register( 'columns()', function ( selector, opts ) { // argument shifting if ( selector === undefined ) { @@ -8312,42 +8312,42 @@ opts = selector; selector = ''; } - + opts = _selector_opts( opts ); - + var inst = this.iterator( 'table', function ( settings ) { return __column_selector( settings, selector, opts ); }, 1 ); - + // Want argument shifting here and in _row_selector? inst.selector.cols = selector; inst.selector.opts = opts; - + return inst; } ); - + _api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) { return this.iterator( 'column', function ( settings, column ) { return settings.aoColumns[column].nTh; }, 1 ); } ); - + _api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) { return this.iterator( 'column', function ( settings, column ) { return settings.aoColumns[column].nTf; }, 1 ); } ); - + _api_registerPlural( 'columns().data()', 'column().data()', function () { return this.iterator( 'column-rows', __columnData, 1 ); } ); - + _api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () { return this.iterator( 'column', function ( settings, column ) { return settings.aoColumns[column].mData; }, 1 ); } ); - + _api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) { return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { return _pluck_order( settings.aoData, rows, @@ -8355,13 +8355,13 @@ ); }, 1 ); } ); - + _api_registerPlural( 'columns().nodes()', 'column().nodes()', function () { return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { return _pluck_order( settings.aoData, rows, 'anCells', column ) ; }, 1 ); } ); - + _api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) { return this.iterator( 'column', function ( settings, column ) { if ( vis === undefined ) { @@ -8370,7 +8370,7 @@ __setColumnVis( settings, column, vis, calc ); } ); } ); - + _api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) { return this.iterator( 'column', function ( settings, column ) { return type === 'visible' ? @@ -8378,17 +8378,17 @@ column; }, 1 ); } ); - + _api_register( 'columns.adjust()', function () { return this.iterator( 'table', function ( settings ) { _fnAdjustColumnSizing( settings ); }, 1 ); } ); - + _api_register( 'column.index()', function ( type, idx ) { if ( this.context.length !== 0 ) { var ctx = this.context[0]; - + if ( type === 'fromVisible' || type === 'toData' ) { return _fnVisibleToColumnIndex( ctx, idx ); } @@ -8397,14 +8397,14 @@ } } } ); - + _api_register( 'column()', function ( selector, opts ) { return _selector_first( this.columns( selector, opts ) ); } ); - - - - + + + + var __cell_selector = function ( settings, selector, opts ) { var data = settings.aoData; @@ -8414,27 +8414,27 @@ var row; var columns = settings.aoColumns.length; var a, i, ien, j, o, host; - + var run = function ( s ) { var fnSelector = typeof s === 'function'; - + if ( s === null || s === undefined || fnSelector ) { // All cells and function selectors a = []; - + for ( i=0, ien=rows.length ; i<ien ; i++ ) { row = rows[i]; - + for ( j=0 ; j<columns ; j++ ) { o = { row: row, column: j }; - + if ( fnSelector ) { // Selector - function host = settings.aoData[ row ]; - + if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) { a.push( o ); } @@ -8445,21 +8445,21 @@ } } } - + return a; } - + // Selector - index if ( $.isPlainObject( s ) ) { return [s]; } - + // Selector - jQuery filtered cells return allCells .filter( s ) .map( function (i, el) { row = el.parentNode._DT_RowIndex; - + return { row: row, column: $.inArray( el, data[ row ].anCells ) @@ -8467,13 +8467,13 @@ } ) .toArray(); }; - + return _selector_run( 'cell', selector, run, settings, opts ); }; - - - - + + + + _api_register( 'cells()', function ( rowSelector, columnSelector, opts ) { // Argument shifting if ( $.isPlainObject( rowSelector ) ) { @@ -8493,22 +8493,22 @@ opts = columnSelector; columnSelector = null; } - + // Cell selector if ( columnSelector === null || columnSelector === undefined ) { return this.iterator( 'table', function ( settings ) { return __cell_selector( settings, rowSelector, _selector_opts( opts ) ); } ); } - + // Row + column selector var columns = this.columns( columnSelector, opts ); var rows = this.rows( rowSelector, opts ); var a, i, ien, j, jen; - + var cells = this.iterator( 'table', function ( settings, idx ) { a = []; - + for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) { for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) { a.push( { @@ -8517,20 +8517,20 @@ } ); } } - + return a; }, 1 ); - + $.extend( cells.selector, { cols: columnSelector, rows: rowSelector, opts: opts } ); - + return cells; } ); - - + + _api_registerPlural( 'cells().nodes()', 'cell().node()', function () { return this.iterator( 'cell', function ( settings, row, column ) { var cells = settings.aoData[ row ].anCells; @@ -8539,31 +8539,31 @@ undefined; }, 1 ); } ); - - + + _api_register( 'cells().data()', function () { return this.iterator( 'cell', function ( settings, row, column ) { return _fnGetCellData( settings, row, column ); }, 1 ); } ); - - + + _api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) { type = type === 'search' ? '_aFilterData' : '_aSortData'; - + return this.iterator( 'cell', function ( settings, row, column ) { return settings.aoData[ row ][ type ][ column ]; }, 1 ); } ); - - + + _api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) { return this.iterator( 'cell', function ( settings, row, column ) { return _fnGetCellData( settings, row, column, type ); }, 1 ); } ); - - + + _api_registerPlural( 'cells().indexes()', 'cell().index()', function () { return this.iterator( 'cell', function ( settings, row, column ) { return { @@ -8573,41 +8573,41 @@ }; }, 1 ); } ); - - + + _api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) { return this.iterator( 'cell', function ( settings, row, column ) { _fnInvalidate( settings, row, src, column ); } ); } ); - - - + + + _api_register( 'cell()', function ( rowSelector, columnSelector, opts ) { return _selector_first( this.cells( rowSelector, columnSelector, opts ) ); } ); - - + + _api_register( 'cell().data()', function ( data ) { var ctx = this.context; var cell = this[0]; - + if ( data === undefined ) { // Get return ctx.length && cell.length ? _fnGetCellData( ctx[0], cell[0].row, cell[0].column ) : undefined; } - + // Set _fnSetCellData( ctx[0], cell[0].row, cell[0].column, data ); _fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column ); - + return this; } ); - - - + + + /** * Get current ordering (sorting) that has been applied to the table. * @@ -8638,14 +8638,14 @@ */ _api_register( 'order()', function ( order, dir ) { var ctx = this.context; - + if ( order === undefined ) { // get return ctx.length !== 0 ? ctx[0].aaSorting : undefined; } - + // set if ( typeof order === 'number' ) { // Simple column / direction passed in @@ -8656,13 +8656,13 @@ order = Array.prototype.slice.call( arguments ); } // otherwise a 2D array was passed in - + return this.iterator( 'table', function ( settings ) { settings.aaSorting = order.slice(); } ); } ); - - + + /** * Attach a sort listener to an element for a given column * @@ -8678,44 +8678,44 @@ _fnSortAttachListener( settings, node, column, callback ); } ); } ); - - + + // Order by the selected column(s) _api_register( [ 'columns().order()', 'column().order()' ], function ( dir ) { var that = this; - + return this.iterator( 'table', function ( settings, i ) { var sort = []; - + $.each( that[i], function (j, col) { sort.push( [ col, dir ] ); } ); - + settings.aaSorting = sort; } ); } ); - - - + + + _api_register( 'search()', function ( input, regex, smart, caseInsen ) { var ctx = this.context; - + if ( input === undefined ) { // get return ctx.length !== 0 ? ctx[0].oPreviousSearch.sSearch : undefined; } - + // set return this.iterator( 'table', function ( settings ) { if ( ! settings.oFeatures.bFilter ) { return; } - + _fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, { "sSearch": input+"", "bRegex": regex === null ? false : regex, @@ -8724,71 +8724,71 @@ } ), 1 ); } ); } ); - - + + _api_registerPlural( 'columns().search()', 'column().search()', function ( input, regex, smart, caseInsen ) { return this.iterator( 'column', function ( settings, column ) { var preSearch = settings.aoPreSearchCols; - + if ( input === undefined ) { // get return preSearch[ column ].sSearch; } - + // set if ( ! settings.oFeatures.bFilter ) { return; } - + $.extend( preSearch[ column ], { "sSearch": input+"", "bRegex": regex === null ? false : regex, "bSmart": smart === null ? true : smart, "bCaseInsensitive": caseInsen === null ? true : caseInsen } ); - + _fnFilterComplete( settings, settings.oPreviousSearch, 1 ); } ); } ); - + /* * State API methods */ - + _api_register( 'state()', function () { return this.context.length ? this.context[0].oSavedState : null; } ); - - + + _api_register( 'state.clear()', function () { return this.iterator( 'table', function ( settings ) { // Save an empty object settings.fnStateSaveCallback.call( settings.oInstance, settings, {} ); } ); } ); - - + + _api_register( 'state.loaded()', function () { return this.context.length ? this.context[0].oLoadedState : null; } ); - - + + _api_register( 'state.save()', function () { return this.iterator( 'table', function ( settings ) { _fnSaveState( settings ); } ); } ); - - - + + + /** * Provide a common method for plug-ins to check the version of DataTables being * used, in order to ensure compatibility. @@ -8809,24 +8809,24 @@ var aThis = DataTable.version.split('.'); var aThat = version.split('.'); var iThis, iThat; - + for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) { iThis = parseInt( aThis[i], 10 ) || 0; iThat = parseInt( aThat[i], 10 ) || 0; - + // Parts are the same, keep comparing if (iThis === iThat) { continue; } - + // Parts are different, return immediately return iThis > iThat; } - + return true; }; - - + + /** * Check if a `<table>` node is a DataTable table already or not. * @@ -8846,20 +8846,20 @@ { var t = $(table).get(0); var is = false; - + $.each( DataTable.settings, function (i, o) { var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null; var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null; - + if ( o.nTable === t || head === t || foot === t ) { is = true; } } ); - + return is; }; - - + + /** * Get all DataTable tables that have been initialised - optionally you can * select to get only currently visible tables. @@ -8884,11 +8884,11 @@ } } ); }; - - + + /** * DataTables utility methods - * + * * This namespace provides helper methods that DataTables uses internally to * create a DataTable, but which are not exclusively used only for DataTables. * These methods can be used by extension authors to save the duplication of @@ -8906,8 +8906,8 @@ * @return {function} Wrapped function */ throttle: _fnThrottle, - - + + /** * Escape a string such that it can be used in a regular expression * @@ -8916,8 +8916,8 @@ */ escapeRegex: _fnEscapeRegex }; - - + + /** * Convert from camel case parameters to Hungarian notation. This is made public * for the extensions to provide the same ability as DataTables core to accept @@ -8932,9 +8932,9 @@ * won't be. */ DataTable.camelToHungarian = _fnCamelToHungarian; - - - + + + /** * */ @@ -8942,59 +8942,59 @@ var rows = this.rows( opts ).nodes(), // Get all rows jqRows = $(rows); - + return $( [].concat( jqRows.filter( selector ).toArray(), jqRows.find( selector ).toArray() ) ); } ); - - + + // jQuery functions to operate on the tables $.each( [ 'on', 'one', 'off' ], function (i, key) { _api_register( key+'()', function ( /* event, handler */ ) { var args = Array.prototype.slice.call(arguments); - + // Add the `dt` namespace automatically if it isn't already present if ( ! args[0].match(/\.dt\b/) ) { args[0] += '.dt'; } - + var inst = $( this.tables().nodes() ); inst[key].apply( inst, args ); return this; } ); } ); - - + + _api_register( 'clear()', function () { return this.iterator( 'table', function ( settings ) { _fnClearTable( settings ); } ); } ); - - + + _api_register( 'settings()', function () { return new _Api( this.context, this.context ); } ); - - + + _api_register( 'init()', function () { var ctx = this.context; return ctx.length ? ctx[0].oInit : null; } ); - - + + _api_register( 'data()', function () { return this.iterator( 'table', function ( settings ) { return _pluck( settings.aoData, '_aData' ); } ).flatten(); } ); - - + + _api_register( 'destroy()', function ( remove ) { remove = remove || false; - + return this.iterator( 'table', function ( settings ) { var orig = settings.nTableWrapper.parentNode; var classes = settings.oClasses; @@ -9007,50 +9007,50 @@ var jqWrapper = $(settings.nTableWrapper); var rows = $.map( settings.aoData, function (r) { return r.nTr; } ); var i, ien; - + // Flag to note that the table is currently being destroyed - no action // should be taken settings.bDestroying = true; - + // Fire off the destroy callbacks for plug-ins etc _fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] ); - + // If not being removed from the document, make all columns visible if ( ! remove ) { new _Api( settings ).columns().visible( true ); } - + // Blitz all `DT` namespaced events (these are internal events, the // lowercase, `dt` events are user subscribed and they are responsible // for removing them jqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT'); $(window).unbind('.DT-'+settings.sInstance); - + // When scrolling we had to break the table up - restore it if ( table != thead.parentNode ) { jqTable.children('thead').detach(); jqTable.append( thead ); } - + if ( tfoot && table != tfoot.parentNode ) { jqTable.children('tfoot').detach(); jqTable.append( tfoot ); } - + // Remove the DataTables generated nodes, events and classes jqTable.detach(); jqWrapper.detach(); - + settings.aaSorting = []; settings.aaSortingFixed = []; _fnSortingClasses( settings ); - + $( rows ).removeClass( settings.asStripeClasses.join(' ') ); - + $('th, td', thead).removeClass( classes.sSortable+' '+ classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone ); - + if ( settings.bJUI ) { $('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach(); $('th, td', thead).each( function () { @@ -9059,33 +9059,33 @@ wrapper.detach(); } ); } - + if ( ! remove && orig ) { // insertBefore acts like appendChild if !arg[1] orig.insertBefore( table, settings.nTableReinsertBefore ); } - + // Add the TR elements back into the table in their original order jqTbody.children().detach(); jqTbody.append( rows ); - + // Restore the width of the original table - was read from the style property, // so we can restore directly to that jqTable .css( 'width', settings.sDestroyWidth ) .removeClass( classes.sTable ); - + // If the were originally stripe classes - then we add them back here. // Note this is not fool proof (for example if not all rows had stripe // classes - but it's a good effort without getting carried away ien = settings.asDestroyStripes.length; - + if ( ien ) { jqTbody.children().each( function (i) { $(this).addClass( settings.asDestroyStripes[i % ien] ); } ); } - + /* Remove the settings object from the settings array */ var idx = $.inArray( settings, DataTable.settings ); if ( idx !== -1 ) { @@ -9093,8 +9093,8 @@ } } ); } ); - - + + // Add the `every()` method for rows, columns and cells in a compact form $.each( [ 'column', 'row', 'cell' ], function ( i, type ) { _api_register( type+'s().every()', function ( fn ) { @@ -9104,24 +9104,24 @@ } ); } ); } ); - - + + // i18n method for extensions to be able to use the language object from the // DataTable _api_register( 'i18n()', function ( token, def, plural ) { var ctx = this.context[0]; var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage ); - + if ( resolved === undefined ) { resolved = def; } - + if ( plural !== undefined && $.isPlainObject( resolved ) ) { resolved = resolved[ plural ] !== undefined ? resolved[ plural ] : resolved._; } - + return resolved.replace( '%d', plural ); // nb: plural might be undefined, } ); @@ -9156,9 +9156,9 @@ * @namespace */ DataTable.models = {}; - - - + + + /** * Template object for the way in which DataTables holds information about * search information for the global filter and individual column filters. @@ -9171,14 +9171,14 @@ * @default true */ "bCaseInsensitive": true, - + /** * Applied search term * @type string * @default <i>Empty string</i> */ "sSearch": "", - + /** * Flag to indicate if the search term should be interpreted as a * regular expression (true) or not (false) and therefore and special @@ -9187,7 +9187,7 @@ * @default false */ "bRegex": false, - + /** * Flag to indicate if DataTables is to use its smart filtering or not. * @type boolean @@ -9195,10 +9195,10 @@ */ "bSmart": true }; - - - - + + + + /** * Template object for the way in which DataTables holds information about * each individual row. This is the object format used for the settings @@ -9212,7 +9212,7 @@ * @default null */ "nTr": null, - + /** * Array of TD elements for each row. This is null until the row has been * created. @@ -9220,7 +9220,7 @@ * @default [] */ "anCells": null, - + /** * Data object from the original data source for the row. This is either * an array if using the traditional form of DataTables, or an object if @@ -9231,7 +9231,7 @@ * @default [] */ "_aData": [], - + /** * Sorting data cache - this array is ostensibly the same length as the * number of columns (although each index is generated only as it is @@ -9245,7 +9245,7 @@ * @private */ "_aSortData": null, - + /** * Per cell filtering data cache. As per the sort data cache, used to * increase the performance of the filtering in DataTables @@ -9254,7 +9254,7 @@ * @private */ "_aFilterData": null, - + /** * Filtering data cache. This is the same as the cell filtering cache, but * in this case a string rather than an array. This is easily computed with @@ -9265,7 +9265,7 @@ * @private */ "_sFilterRow": null, - + /** * Cache of the class name that DataTables has applied to the row, so we * can quickly look at this variable rather than needing to do a DOM check @@ -9275,7 +9275,7 @@ * @private */ "_sRowStripe": "", - + /** * Denote if the original data source was from the DOM, or the data source * object. This is used for invalidating data, so DataTables can @@ -9287,8 +9287,8 @@ */ "src": null }; - - + + /** * Template object for the column information object in DataTables. This object * is held in the settings aoColumns array and contains all the information that @@ -9308,7 +9308,7 @@ * @default null */ "idx": null, - + /** * A list of the columns that sorting should occur on when this column * is sorted. That this property is an array allows multi-column sorting @@ -9319,7 +9319,7 @@ * @type array */ "aDataSort": null, - + /** * Define the sorting directions that are applied to the column, in sequence * as the column is repeatedly sorted upon - i.e. the first value is used @@ -9329,26 +9329,26 @@ * @type array */ "asSorting": null, - + /** * Flag to indicate if the column is searchable, and thus should be included * in the filtering or not. * @type boolean */ "bSearchable": null, - + /** * Flag to indicate if the column is sortable or not. * @type boolean */ "bSortable": null, - + /** * Flag to indicate if the column is currently visible in the table or not * @type boolean */ "bVisible": null, - + /** * Store for manual type assignment using the `column.type` option. This * is held in store so we can manipulate the column's `sType` property. @@ -9357,7 +9357,7 @@ * @private */ "_sManualType": null, - + /** * Flag to indicate if HTML5 data attributes should be used as the data * source for filtering or sorting. True is either are. @@ -9366,7 +9366,7 @@ * @private */ "_bAttrSrc": false, - + /** * Developer definable function that is called whenever a cell is created (Ajax source, * etc) or processed for input (DOM source). This can be used as a compliment to mRender @@ -9380,7 +9380,7 @@ * @default null */ "fnCreatedCell": null, - + /** * Function to get data from a cell in a column. You should <b>never</b> * access data directly through _aData internally in DataTables - always use @@ -9396,7 +9396,7 @@ * @default null */ "fnGetData": null, - + /** * Function to set data for a cell in the column. You should <b>never</b> * set the data directly to _aData internally in DataTables - always use @@ -9409,7 +9409,7 @@ * @default null */ "fnSetData": null, - + /** * Property to read the value for the cells in the column from the data * source array / object. If null, then the default content is used, if a @@ -9418,7 +9418,7 @@ * @default null */ "mData": null, - + /** * Partner property to mData which is used (only when defined) to get * the data - i.e. it is basically the same as mData, but without the @@ -9428,7 +9428,7 @@ * @default null */ "mRender": null, - + /** * Unique header TH/TD element for this column - this is what the sorting * listener is attached to (if sorting is enabled.) @@ -9436,7 +9436,7 @@ * @default null */ "nTh": null, - + /** * Unique footer TH/TD element for this column (if there is one). Not used * in DataTables as such, but can be used for plug-ins to reference the @@ -9445,14 +9445,14 @@ * @default null */ "nTf": null, - + /** * The class to apply to all TD elements in the table's TBODY for the column * @type string * @default null */ "sClass": null, - + /** * When DataTables calculates the column widths to assign to each column, * it finds the longest string in each column and then constructs a @@ -9465,7 +9465,7 @@ * @type string */ "sContentPadding": null, - + /** * Allows a default value to be given for a column's data, and will be used * whenever a null data source is encountered (this can be because mData @@ -9474,14 +9474,14 @@ * @default null */ "sDefaultContent": null, - + /** * Name for the column, allowing reference to the column by name as well as * by index (needs a lookup to work by name). * @type string */ "sName": null, - + /** * Custom sorting data type - defines which of the available plug-ins in * afnSortData the custom sorting will use - if any is defined. @@ -9489,14 +9489,14 @@ * @default std */ "sSortDataType": 'std', - + /** * Class to be applied to the header element when sorting on this column * @type string * @default null */ "sSortingClass": null, - + /** * Class to be applied to the header element when sorting on this column - * when jQuery UI theming is used. @@ -9504,27 +9504,27 @@ * @default null */ "sSortingClassJUI": null, - + /** * Title of the column - what is seen in the TH element (nTh). * @type string */ "sTitle": null, - + /** * Column sorting and filtering type * @type string * @default null */ "sType": null, - + /** * Width of the column * @type string * @default null */ "sWidth": null, - + /** * Width of the column when it was first "encountered" * @type string @@ -9532,8 +9532,8 @@ */ "sWidthOrig": null }; - - + + /* * Developer note: The properties of the object below are given in Hungarian * notation, that was used as the interface for DataTables prior to v1.10, however @@ -9549,7 +9549,7 @@ * completely, but that is a massive amount of work and will break current * installs (therefore is on-hold until v2). */ - + /** * Initialisation options that can be given to DataTables at initialisation * time. @@ -9616,8 +9616,8 @@ * } ); */ "aaData": null, - - + + /** * If ordering is enabled, then DataTables will perform a first pass sort on * initialisation. You can define which column(s) the sort is performed @@ -9646,8 +9646,8 @@ * } ); */ "aaSorting": [[0,'asc']], - - + + /** * This parameter is basically identical to the `sorting` parameter, but * cannot be overridden by user interaction with the table. What this means @@ -9669,8 +9669,8 @@ * } ) */ "aaSortingFixed": [], - - + + /** * DataTables can be instructed to load data to display in the table from a * Ajax source. This option defines how that Ajax call is made and where to. @@ -9826,8 +9826,8 @@ * } ); */ "ajax": null, - - + + /** * This parameter allows you to readily specify the entries in the length drop * down menu that DataTables shows when pagination is enabled. It can be @@ -9851,9 +9851,9 @@ * } ); * } ); */ - "aLengthMenu": [ 5, 10, 15, 20 ], - - + "aLengthMenu": [ 5, 10, 20, 40 ], + + /** * The `columns` option in the initialisation parameter allows you to define * details about the way individual columns behave. For a full list of @@ -9867,7 +9867,7 @@ * @name DataTable.defaults.column */ "aoColumns": null, - + /** * Very similar to `columns`, `columnDefs` allows you to target a specific * column, multiple columns, or all columns, using the `targets` property of @@ -9888,8 +9888,8 @@ * @name DataTable.defaults.columnDefs */ "aoColumnDefs": null, - - + + /** * Basically the same as `search`, this parameter defines the individual column * filtering state at initialisation time. The array must be of the same size @@ -9915,8 +9915,8 @@ * } ) */ "aoSearchCols": [], - - + + /** * An array of CSS classes that should be applied to displayed rows. This * array may be of any length, and DataTables will apply each class @@ -9936,8 +9936,8 @@ * } ) */ "asStripeClasses": null, - - + + /** * Enable or disable automatic column width calculation. This can be disabled * as an optimisation (it takes some time to calculate the widths) if the @@ -9956,8 +9956,8 @@ * } ); */ "bAutoWidth": true, - - + + /** * Deferred rendering can provide DataTables with a huge speed boost when you * are using an Ajax or JS data source for the table. This option, when set to @@ -9979,8 +9979,8 @@ * } ); */ "bDeferRender": false, - - + + /** * Replace a DataTable which matches the given selector and replace it with * one which has the properties of the new initialisation object passed. If no @@ -10007,8 +10007,8 @@ * } ); */ "bDestroy": false, - - + + /** * Enable or disable filtering of data. Filtering in DataTables is "smart" in * that it allows the end user to input multiple words (space separated) and @@ -10031,8 +10031,8 @@ * } ); */ "bFilter": true, - - + + /** * Enable or disable the table information display. This shows information * about the data that is currently visible on the page, including information @@ -10051,8 +10051,8 @@ * } ); */ "bInfo": true, - - + + /** * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some * slightly different and additional mark-up from what DataTables has @@ -10071,8 +10071,8 @@ * } ); */ "bJQueryUI": false, - - + + /** * Allows the end user to select the size of a formatted page from a select * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`). @@ -10090,8 +10090,8 @@ * } ); */ "bLengthChange": true, - - + + /** * Enable or disable pagination. * @type boolean @@ -10108,8 +10108,8 @@ * } ); */ "bPaginate": true, - - + + /** * Enable or disable the display of a 'processing' indicator when the table is * being processed (e.g. a sort). This is particularly useful for tables with @@ -10129,8 +10129,8 @@ * } ); */ "bProcessing": false, - - + + /** * Retrieve the DataTables object for the given selector. Note that if the * table has already been initialised, this parameter will cause DataTables @@ -10167,8 +10167,8 @@ * } */ "bRetrieve": false, - - + + /** * When vertical (y) scrolling is enabled, DataTables will force the height of * the table's viewport to the given height at all times (useful for layout). @@ -10191,8 +10191,8 @@ * } ); */ "bScrollCollapse": false, - - + + /** * Configure DataTables to use server-side processing. Note that the * `ajax` parameter must also be given in order to give DataTables a @@ -10213,8 +10213,8 @@ * } ); */ "bServerSide": false, - - + + /** * Enable or disable sorting of columns. Sorting of individual columns can be * disabled by the `sortable` option for each column. @@ -10232,8 +10232,8 @@ * } ); */ "bSort": true, - - + + /** * Enable or display DataTables' ability to sort multiple columns at the * same time (activated by shift-click by the user). @@ -10252,8 +10252,8 @@ * } ); */ "bSortMulti": true, - - + + /** * Allows control over whether DataTables should use the top (true) unique * cell that is found for a single column, or the bottom (false - default). @@ -10272,8 +10272,8 @@ * } ); */ "bSortCellsTop": false, - - + + /** * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and * `sorting\_3` to the columns which are currently being sorted on. This is @@ -10294,8 +10294,8 @@ * } ); */ "bSortClasses": true, - - + + /** * Enable or disable state saving. When enabled HTML5 `localStorage` will be * used to save table display information such as pagination information, @@ -10319,8 +10319,8 @@ * } ); */ "bStateSave": false, - - + + /** * This function is called when a TR element is created (and all TD child * elements have been inserted), or registered if using a DOM source, allowing @@ -10347,8 +10347,8 @@ * } ); */ "fnCreatedRow": null, - - + + /** * This function is called on every 'draw' event, and allows you to * dynamically modify any aspect you want about the created DOM. @@ -10368,8 +10368,8 @@ * } ); */ "fnDrawCallback": null, - - + + /** * Identical to fnHeaderCallback() but for the table footer this function * allows you to modify the table footer on every 'draw' event. @@ -10396,8 +10396,8 @@ * } ) */ "fnFooterCallback": null, - - + + /** * When rendering large numbers in the information element for the table * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers @@ -10431,8 +10431,8 @@ this.oLanguage.sThousands ); }, - - + + /** * This function is called on every 'draw' event, and allows you to * dynamically modify the header row. This can be used to calculate and @@ -10460,8 +10460,8 @@ * } ) */ "fnHeaderCallback": null, - - + + /** * The information element can be used to convey information about the current * state of the table. Although the internationalisation options presented by @@ -10490,8 +10490,8 @@ * } ); */ "fnInfoCallback": null, - - + + /** * Called when the table has been initialised. Normally DataTables will * initialise sequentially and there will be no need for this function, @@ -10515,8 +10515,8 @@ * } ) */ "fnInitComplete": null, - - + + /** * Called at the very start of each table draw and can be used to cancel the * draw by returning false, any other return (including undefined) results in @@ -10541,8 +10541,8 @@ * } ); */ "fnPreDrawCallback": null, - - + + /** * This function allows you to 'post process' each row after it have been * generated for each table draw, but before it is rendered on screen. This @@ -10570,8 +10570,8 @@ * } ); */ "fnRowCallback": null, - - + + /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. @@ -10596,8 +10596,8 @@ * @deprecated 1.10. Please use `ajax` for this functionality now. */ "fnServerData": null, - - + + /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. @@ -10623,8 +10623,8 @@ * @deprecated 1.10. Please use `ajax` for this functionality now. */ "fnServerParams": null, - - + + /** * Load the table state. With this function you can define from where, and how, the * state of a table is loaded. By default DataTables will load from `localStorage` @@ -10669,8 +10669,8 @@ ); } catch (e) {} }, - - + + /** * Callback which allows modification of the saved state prior to loading that state. * This callback is called when the table is loading state from the stored data, but @@ -10707,8 +10707,8 @@ * } ); */ "fnStateLoadParams": null, - - + + /** * Callback that is called when the state has been loaded from the state saving method * and the DataTables settings object has been modified as a result of the loaded state. @@ -10731,8 +10731,8 @@ * } ); */ "fnStateLoaded": null, - - + + /** * Save the table state. This function allows you to define where and how the state * information for the table is stored By default DataTables will use `localStorage` @@ -10770,8 +10770,8 @@ ); } catch (e) {} }, - - + + /** * Callback which allows modification of the state to be saved. Called when the table * has changed state a new state save is required. This method allows modification of @@ -10797,8 +10797,8 @@ * } ); */ "fnStateSaveParams": null, - - + + /** * Duration for which the saved state information is considered valid. After this period * has elapsed the state will be returned to the default. @@ -10817,8 +10817,8 @@ * } ) */ "iStateDuration": 7200, - - + + /** * When enabled DataTables will not make a request to the server for the first * page draw - rather it will use the data already on the page (no sorting etc @@ -10861,8 +10861,8 @@ * } ); */ "iDeferLoading": null, - - + + /** * Number of rows to display on a single page when using pagination. If * feature enabled (`lengthChange`) then the end user will be able to override @@ -10880,9 +10880,9 @@ * } ); * } ) */ - "iDisplayLength": 5, - - + "iDisplayLength": 10, + + /** * Define the starting point for data display when using DataTables with * pagination. Note that this parameter is the number of records, rather than @@ -10902,8 +10902,8 @@ * } ) */ "iDisplayStart": 0, - - + + /** * By default DataTables allows keyboard navigation of the table (sorting, paging, * and filtering) by adding a `tabindex` attribute to the required elements. This @@ -10925,8 +10925,8 @@ * } ); */ "iTabIndex": 0, - - + + /** * Classes that DataTables assigns to the various components and features * that it adds to the HTML table. This allows classes to be configured @@ -10936,8 +10936,8 @@ * @name DataTable.defaults.classes */ "oClasses": {}, - - + + /** * All strings that DataTables uses in the user interface that it creates * are defined in this object, allowing you to modified them individually or @@ -10976,7 +10976,7 @@ * } ); */ "sSortAscending": ": activate to sort column ascending", - + /** * ARIA label that is added to the table headers when the column may be * sorted descending by activing the column (click or return when focused). @@ -11000,7 +11000,7 @@ */ "sSortDescending": ": activate to sort column descending" }, - + /** * Pagination string used by DataTables for the built-in pagination * control types. @@ -11029,8 +11029,8 @@ * } ); */ "sFirst": "First", - - + + /** * Text to use when using the 'full_numbers' type of pagination for the * button to take the user to the last page. @@ -11052,8 +11052,8 @@ * } ); */ "sLast": "Last", - - + + /** * Text to use for the 'next' pagination button (to take the user to the * next page). @@ -11075,8 +11075,8 @@ * } ); */ "sNext": "Next", - - + + /** * Text to use for the 'previous' pagination button (to take the user to * the previous page). @@ -11099,7 +11099,7 @@ */ "sPrevious": "Previous" }, - + /** * This string is shown in preference to `zeroRecords` when the table is * empty of data (regardless of filtering). Note that this is an optional @@ -11121,8 +11121,8 @@ * } ); */ "sEmptyTable": "No data available in table", - - + + /** * This string gives information to the end user about the information * that is current on display on the page. The following tokens can be @@ -11153,8 +11153,8 @@ * } ); */ "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", - - + + /** * Display information string for when the table is empty. Typically the * format of this string should match `info`. @@ -11174,8 +11174,8 @@ * } ); */ "sInfoEmpty": "Showing 0 to 0 of 0 entries", - - + + /** * When a user filters the information in a table, this string is appended * to the information (`info`) to give an idea of how strong the filtering @@ -11196,8 +11196,8 @@ * } ); */ "sInfoFiltered": "(filtered from _MAX_ total entries)", - - + + /** * If can be useful to append extra information to the info string at times, * and this variable does exactly that. This information will be appended to @@ -11219,8 +11219,8 @@ * } ); */ "sInfoPostFix": "", - - + + /** * This decimal place operator is a little different from the other * language options since DataTables doesn't output floating point @@ -11234,7 +11234,7 @@ * However, multiple different tables on the page can use different * decimal place characters. * @type string - * @default + * @default * * @dtopt Language * @name DataTable.defaults.language.decimal @@ -11250,8 +11250,8 @@ * } ); */ "sDecimal": "", - - + + /** * DataTables has a build in number formatter (`formatNumber`) which is * used to format large numbers that are used in the table information. @@ -11273,8 +11273,8 @@ * } ); */ "sThousands": ",", - - + + /** * Detail the action that will be taken when the drop down menu for the * pagination length option is changed. The '_MENU_' variable is replaced @@ -11314,8 +11314,8 @@ * } ); */ "sLengthMenu": "Show _MENU_ entries", - - + + /** * When using Ajax sourced data and during the first draw when DataTables is * gathering the data, this message is shown in an empty row in the table to @@ -11338,8 +11338,8 @@ * } ); */ "sLoadingRecords": "Loading...", - - + + /** * Text which is displayed when the table is processing a user action * (usually a sort command or similar). @@ -11359,8 +11359,8 @@ * } ); */ "sProcessing": "Processing...", - - + + /** * Details the actions that will be taken when the user types into the * filtering input text box. The variable "_INPUT_", if used in the string, @@ -11394,19 +11394,19 @@ * } ); */ "sSearch": "Search:", - - + + /** * Assign a `placeholder` attribute to the search `input` element * @type string - * @default + * @default * * @dtopt Language * @name DataTable.defaults.language.searchPlaceholder */ "sSearchPlaceholder": "", - - + + /** * All of the language information can be stored in a file on the * server-side, which DataTables will look up if this parameter is passed. @@ -11430,8 +11430,8 @@ * } ); */ "sUrl": "", - - + + /** * Text shown inside the table records when the is no information to be * displayed after filtering. `emptyTable` is shown when there is simply no @@ -11453,8 +11453,8 @@ */ "sZeroRecords": "No matching records found" }, - - + + /** * This parameter allows you to have define the global filtering state at * initialisation time. As an object the `search` parameter must be @@ -11477,8 +11477,8 @@ * } ) */ "oSearch": $.extend( {}, DataTable.models.oSearch ), - - + + /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. @@ -11498,8 +11498,8 @@ * @deprecated 1.10. Please use `ajax` for this functionality now. */ "sAjaxDataProp": "data", - - + + /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. @@ -11517,8 +11517,8 @@ * @deprecated 1.10. Please use `ajax` for this functionality now. */ "sAjaxSource": null, - - + + /** * This initialisation variable allows you to specify exactly where in the * DOM you want DataTables to inject the various controls it adds to the page @@ -11571,8 +11571,8 @@ * } ); */ "sDom": "lfrtip", - - + + /** * Search delay option. This will throttle full table searches that use the * DataTables provided search input element (it does not effect calls to @@ -11591,8 +11591,8 @@ * } ) */ "searchDelay": null, - - + + /** * DataTables features four different built-in options for the buttons to * display for pagination control: @@ -11602,7 +11602,7 @@ * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus * page numbers - * + * * Further methods can be added using {@link DataTable.ext.oPagination}. * @type string * @default simple_numbers @@ -11618,8 +11618,8 @@ * } ) */ "sPaginationType": "simple_numbers", - - + + /** * Enable horizontal scrolling. When a table is too wide to fit into a * certain layout, or you have a large number of columns in the table, you @@ -11643,8 +11643,8 @@ * } ); */ "sScrollX": "", - - + + /** * This property can be used to force a DataTable to use more width than it * might otherwise do when x-scrolling is enabled. For example if you have a @@ -11667,8 +11667,8 @@ * } ); */ "sScrollXInner": "", - - + + /** * Enable vertical scrolling. Vertical scrolling will constrain the DataTable * to the given height, and enable scrolling for any data which overflows the @@ -11691,8 +11691,8 @@ * } ); */ "sScrollY": "", - - + + /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. @@ -11709,8 +11709,8 @@ * @deprecated 1.10. Please use `ajax` for this functionality now. */ "sServerMethod": "GET", - - + + /** * DataTables makes use of renderers when displaying HTML elements for * a table. These renderers can be added or modified by plug-ins to @@ -11728,16 +11728,16 @@ */ "renderer": null }; - + _fnHungarianMap( DataTable.defaults ); - - - + + + /* * Developer note - See note in model.defaults.js about the use of Hungarian * notation and camel case. */ - + /** * Column options that can be given to DataTables at initialisation time. * @namespace @@ -11783,8 +11783,8 @@ */ "aDataSort": null, "iDataSort": -1, - - + + /** * You can control the default ordering direction, and even alter the * behaviour of the sort handler (i.e. only allow ascending ordering etc) @@ -11822,8 +11822,8 @@ * } ); */ "asSorting": [ 'asc', 'desc' ], - - + + /** * Enable or disable filtering on the data in this column. * @type boolean @@ -11855,8 +11855,8 @@ * } ); */ "bSearchable": true, - - + + /** * Enable or disable ordering on this column. * @type boolean @@ -11888,8 +11888,8 @@ * } ); */ "bSortable": true, - - + + /** * Enable or disable the display of this column. * @type boolean @@ -11921,8 +11921,8 @@ * } ); */ "bVisible": true, - - + + /** * Developer definable function that is called whenever a cell is created (Ajax source, * etc) or processed for input (DOM source). This can be used as a compliment to mRender @@ -11953,8 +11953,8 @@ * } ); */ "fnCreatedCell": null, - - + + /** * This parameter has been replaced by `data` in DataTables to ensure naming * consistency. `dataProp` can still be used, as there is backwards @@ -11962,8 +11962,8 @@ * recommended that you use `data` in preference to `dataProp`. * @name DataTable.defaults.column.dataProp */ - - + + /** * This property can be used to read data from any data source property, * including deeply nested objects / properties. `data` can be given in a @@ -12134,8 +12134,8 @@ * */ "mData": null, - - + + /** * This property is the rendering partner to `data` and it is suggested that * when you want to manipulate data for display (including filtering, @@ -12256,8 +12256,8 @@ * } ); */ "mRender": null, - - + + /** * Change the cell type created for the column - either TD cells or TH cells. This * can be useful as TH cells have semantic meaning in the table body, allowing them @@ -12280,8 +12280,8 @@ * } ); */ "sCellType": "td", - - + + /** * Class to give to each cell in this column. * @type string @@ -12315,7 +12315,7 @@ * } ); */ "sClass": "", - + /** * When DataTables calculates the column widths to assign to each column, * it finds the longest string in each column and then constructs a @@ -12348,8 +12348,8 @@ * } ); */ "sContentPadding": "", - - + + /** * Allows a default value to be given for a column's data, and will be used * whenever a null data source is encountered (this can be because `data` @@ -12391,8 +12391,8 @@ * } ); */ "sDefaultContent": null, - - + + /** * This parameter is only used in DataTables' server-side processing. It can * be exceptionally useful to know what columns are being displayed on the @@ -12435,8 +12435,8 @@ * } ); */ "sName": "", - - + + /** * Defines a data source type for the ordering which can be used to read * real-time information from the table (updating the internally cached @@ -12477,8 +12477,8 @@ * } ); */ "sSortDataType": "std", - - + + /** * The title of this column. * @type string @@ -12513,8 +12513,8 @@ * } ); */ "sTitle": null, - - + + /** * The type allows you to specify how the data for this column will be * ordered. Four types (string, numeric, date and html (which will strip @@ -12554,8 +12554,8 @@ * } ); */ "sType": null, - - + + /** * Defining the width of the column, this parameter may take any CSS value * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not @@ -12593,11 +12593,11 @@ */ "sWidth": null }; - + _fnHungarianMap( DataTable.defaults.column ); - - - + + + /** * DataTables settings object - this holds all the information needed for a * given table, including configuration, data and current application of the @@ -12626,7 +12626,7 @@ * @namespace */ "oFeatures": { - + /** * Flag to say if DataTables should automatically try to calculate the * optimum table and columns widths (true) or not (false). @@ -12635,7 +12635,7 @@ * @type boolean */ "bAutoWidth": null, - + /** * Delay the creation of TR and TD elements until they are actually * needed by a driven page draw. This can give a significant speed @@ -12646,7 +12646,7 @@ * @type boolean */ "bDeferRender": null, - + /** * Enable filtering on the table or not. Note that if this is disabled * then there is no filtering at all on the table, including fnFilter. @@ -12656,7 +12656,7 @@ * @type boolean */ "bFilter": null, - + /** * Table information element (the 'Showing x of y records' div) enable * flag. @@ -12665,7 +12665,7 @@ * @type boolean */ "bInfo": null, - + /** * Present a user control allowing the end user to change the page size * when pagination is enabled. @@ -12674,7 +12674,7 @@ * @type boolean */ "bLengthChange": null, - + /** * Pagination enabled or not. Note that if this is disabled then length * changing must also be disabled. @@ -12683,7 +12683,7 @@ * @type boolean */ "bPaginate": null, - + /** * Processing indicator enable flag whenever DataTables is enacting a * user request - typically an Ajax request for server-side processing. @@ -12692,7 +12692,7 @@ * @type boolean */ "bProcessing": null, - + /** * Server-side processing enabled flag - when enabled DataTables will * get all data from the server for every draw - there is no filtering, @@ -12702,7 +12702,7 @@ * @type boolean */ "bServerSide": null, - + /** * Sorting enablement flag. * Note that this parameter will be set by the initialisation routine. To @@ -12710,7 +12710,7 @@ * @type boolean */ "bSort": null, - + /** * Multi-column sorting * Note that this parameter will be set by the initialisation routine. To @@ -12718,7 +12718,7 @@ * @type boolean */ "bSortMulti": null, - + /** * Apply a class to the columns which are being sorted to provide a * visual highlight or not. This can slow things down when enabled since @@ -12728,7 +12728,7 @@ * @type boolean */ "bSortClasses": null, - + /** * State saving enablement flag. * Note that this parameter will be set by the initialisation routine. To @@ -12737,8 +12737,8 @@ */ "bStateSave": null }, - - + + /** * Scrolling settings for a table. * @namespace @@ -12752,7 +12752,7 @@ * @type boolean */ "bCollapse": null, - + /** * Width of the scrollbar for the web-browser's platform. Calculated * during table initialisation. @@ -12760,7 +12760,7 @@ * @default 0 */ "iBarWidth": 0, - + /** * Viewport width for horizontal scrolling. Horizontal scrolling is * disabled if an empty string. @@ -12769,7 +12769,7 @@ * @type string */ "sX": null, - + /** * Width to expand the table to when using x-scrolling. Typically you * should not need to use this. @@ -12779,7 +12779,7 @@ * @deprecated */ "sXInner": null, - + /** * Viewport height for vertical scrolling. Vertical scrolling is disabled * if an empty string. @@ -12789,7 +12789,7 @@ */ "sY": null }, - + /** * Language information for the table. * @namespace @@ -12804,7 +12804,7 @@ */ "fnInfoCallback": null }, - + /** * Browser support parameters * @namespace @@ -12817,7 +12817,7 @@ * @default false */ "bScrollOversize": false, - + /** * Determine if the vertical scrollbar is on the right or left of the * scrolling container - needed for rtl language layout, although not @@ -12827,11 +12827,11 @@ */ "bScrollbarLeft": false }, - - + + "ajax": null, - - + + /** * Array referencing the nodes which are used for the features. The * parameters of this object match what is allowed by sDom - i.e. @@ -12847,7 +12847,7 @@ * @default [] */ "aanFeatures": [], - + /** * Store data information - see {@link DataTable.models.oRow} for detailed * information. @@ -12855,42 +12855,42 @@ * @default [] */ "aoData": [], - + /** * Array of indexes which are in the current display (after filtering etc) * @type array * @default [] */ "aiDisplay": [], - + /** * Array of indexes for display - no filtering * @type array * @default [] */ "aiDisplayMaster": [], - + /** * Store information about each column that is in use * @type array * @default [] */ "aoColumns": [], - + /** * Store information about the table's header * @type array * @default [] */ "aoHeader": [], - + /** * Store information about the table's footer * @type array * @default [] */ "aoFooter": [], - + /** * Store the applied global search information in case we want to force a * research or compare the old search to a new one. @@ -12900,7 +12900,7 @@ * @extends DataTable.models.oSearch */ "oPreviousSearch": {}, - + /** * Store the applied search for each column - see * {@link DataTable.models.oSearch} for the format that is used for the @@ -12909,7 +12909,7 @@ * @default [] */ "aoPreSearchCols": [], - + /** * Sorting that is applied to the table. Note that the inner arrays are * used in the following manner: @@ -12923,7 +12923,7 @@ * @todo These inner arrays should really be objects */ "aaSorting": null, - + /** * Sorting that is always applied to the table (i.e. prefixed in front of * aaSorting). @@ -12933,7 +12933,7 @@ * @default [] */ "aaSortingFixed": [], - + /** * Classes to use for the striping of a table. * Note that this parameter will be set by the initialisation routine. To @@ -12942,56 +12942,56 @@ * @default [] */ "asStripeClasses": null, - + /** * If restoring a table - we should restore its striping classes as well * @type array * @default [] */ "asDestroyStripes": [], - + /** * If restoring a table - we should restore its width * @type int * @default 0 */ "sDestroyWidth": 0, - + /** * Callback functions array for every time a row is inserted (i.e. on a draw). * @type array * @default [] */ "aoRowCallback": [], - + /** * Callback functions for the header on each draw. * @type array * @default [] */ "aoHeaderCallback": [], - + /** * Callback function for the footer on each draw. * @type array * @default [] */ "aoFooterCallback": [], - + /** * Array of callback functions for draw callback functions * @type array * @default [] */ "aoDrawCallback": [], - + /** * Array of callback functions for row created function * @type array * @default [] */ "aoRowCreatedCallback": [], - + /** * Callback functions for just before the table is redrawn. A return of * false will be used to cancel the draw. @@ -12999,15 +12999,15 @@ * @default [] */ "aoPreDrawCallback": [], - + /** * Callback functions for when the table has been initialised. * @type array * @default [] */ "aoInitComplete": [], - - + + /** * Callbacks for modifying the settings to be stored for state saving, prior to * saving state. @@ -13015,7 +13015,7 @@ * @default [] */ "aoStateSaveParams": [], - + /** * Callbacks for modifying the settings that have been stored for state saving * prior to using the stored values to restore the state. @@ -13023,7 +13023,7 @@ * @default [] */ "aoStateLoadParams": [], - + /** * Callbacks for operating on the settings object once the saved state has been * loaded @@ -13031,49 +13031,49 @@ * @default [] */ "aoStateLoaded": [], - + /** * Cache the table ID for quick access * @type string * @default <i>Empty string</i> */ "sTableId": "", - + /** * The TABLE node for the main table * @type node * @default null */ "nTable": null, - + /** * Permanent ref to the thead element * @type node * @default null */ "nTHead": null, - + /** * Permanent ref to the tfoot element - if it exists * @type node * @default null */ "nTFoot": null, - + /** * Permanent ref to the tbody element * @type node * @default null */ "nTBody": null, - + /** * Cache the wrapper node (contains all DataTables controlled elements) * @type node * @default null */ "nTableWrapper": null, - + /** * Indicate if when using server-side processing the loading of data * should be deferred until the second draw. @@ -13083,14 +13083,14 @@ * @default false */ "bDeferLoading": false, - + /** * Indicate if all required information has been read in * @type boolean * @default false */ "bInitialised": false, - + /** * Information about open rows. Each object in the array has the parameters * 'nTr' and 'nParent' @@ -13098,7 +13098,7 @@ * @default [] */ "aoOpenRows": [], - + /** * Dictate the positioning of DataTables' control elements - see * {@link DataTable.model.oInit.sDom}. @@ -13108,14 +13108,14 @@ * @default null */ "sDom": null, - + /** * Search delay (in mS) * @type integer * @default null */ "searchDelay": null, - + /** * Which type of pagination should be used. * Note that this parameter will be set by the initialisation routine. To @@ -13124,7 +13124,7 @@ * @default two_button */ "sPaginationType": "two_button", - + /** * The state duration (for `stateSave`) in seconds. * Note that this parameter will be set by the initialisation routine. To @@ -13133,7 +13133,7 @@ * @default 0 */ "iStateDuration": 0, - + /** * Array of callback functions for state saving. Each array element is an * object with the following parameters: @@ -13148,7 +13148,7 @@ * @default [] */ "aoStateSave": [], - + /** * Array of callback functions for state loading. Each array element is an * object with the following parameters: @@ -13161,21 +13161,21 @@ * @default [] */ "aoStateLoad": [], - + /** * State that was saved. Useful for back reference * @type object * @default null */ "oSavedState": null, - + /** * State that was loaded. Useful for back reference * @type object * @default null */ "oLoadedState": null, - + /** * Source url for AJAX data for the table. * Note that this parameter will be set by the initialisation routine. To @@ -13184,7 +13184,7 @@ * @default null */ "sAjaxSource": null, - + /** * Property from a given object from which to read the table data from. This * can be an empty string (when not server-side processing), in which case @@ -13194,14 +13194,14 @@ * @type string */ "sAjaxDataProp": null, - + /** * Note if draw should be blocked while getting data * @type boolean * @default true */ "bAjaxDataGet": true, - + /** * The last jQuery XHR object that was used for server-side data gathering. * This can be used for working with the XHR information in one of the @@ -13210,21 +13210,21 @@ * @default null */ "jqXHR": null, - + /** * JSON returned from the server in the last Ajax request * @type object * @default undefined */ "json": undefined, - + /** * Data submitted as part of the last Ajax request * @type object * @default undefined */ "oAjaxData": undefined, - + /** * Function to get the server-side data. * Note that this parameter will be set by the initialisation routine. To @@ -13232,7 +13232,7 @@ * @type function */ "fnServerData": null, - + /** * Functions which are called prior to sending an Ajax request so extra * parameters can easily be sent to the server @@ -13240,7 +13240,7 @@ * @default [] */ "aoServerParams": [], - + /** * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if * required). @@ -13249,7 +13249,7 @@ * @type string */ "sServerMethod": null, - + /** * Format numbers for display. * Note that this parameter will be set by the initialisation routine. To @@ -13257,7 +13257,7 @@ * @type function */ "fnFormatNumber": null, - + /** * List of options that can be used for the user selectable length menu. * Note that this parameter will be set by the initialisation routine. To @@ -13266,7 +13266,7 @@ * @default [] */ "aLengthMenu": null, - + /** * Counter for the draws that the table does. Also used as a tracker for * server-side processing @@ -13274,35 +13274,35 @@ * @default 0 */ "iDraw": 0, - + /** * Indicate if a redraw is being done - useful for Ajax * @type boolean * @default false */ "bDrawing": false, - + /** * Draw index (iDraw) of the last error when parsing the returned data * @type int * @default -1 */ "iDrawError": -1, - + /** * Paging display length * @type int * @default 10 */ "_iDisplayLength": 10, - + /** * Paging start point - aiDisplay index * @type int * @default 0 */ "_iDisplayStart": 0, - + /** * Server-side processing - number of records in the result set * (i.e. before filtering), Use fnRecordsTotal rather than @@ -13313,7 +13313,7 @@ * @private */ "_iRecordsTotal": 0, - + /** * Server-side processing - number of records in the current display set * (i.e. after filtering). Use fnRecordsDisplay rather than @@ -13324,7 +13324,7 @@ * @private */ "_iRecordsDisplay": 0, - + /** * Flag to indicate if jQuery UI marking and classes should be used. * Note that this parameter will be set by the initialisation routine. To @@ -13332,14 +13332,14 @@ * @type boolean */ "bJUI": null, - + /** * The classes to use for the table * @type object * @default {} */ "oClasses": {}, - + /** * Flag attached to the settings object so you can check in the draw * callback if filtering has been done in the draw. Deprecated in favour of @@ -13349,7 +13349,7 @@ * @deprecated */ "bFiltered": false, - + /** * Flag attached to the settings object so you can check in the draw * callback if sorting has been done in the draw. Deprecated in favour of @@ -13359,7 +13359,7 @@ * @deprecated */ "bSorted": false, - + /** * Indicate that if multiple rows are in the header and there is more than * one unique cell per column, if the top one (true) or bottom one (false) @@ -13369,14 +13369,14 @@ * @type boolean */ "bSortCellsTop": null, - + /** * Initialisation object that is used for the table * @type object * @default null */ "oInit": null, - + /** * Destroy callback functions - for plug-ins to attach themselves to the * destroy so they can clean up markup and events. @@ -13384,8 +13384,8 @@ * @default [] */ "aoDestroyCallback": [], - - + + /** * Get the number of records in the current record set, before filtering * @type function @@ -13396,7 +13396,7 @@ this._iRecordsTotal * 1 : this.aiDisplayMaster.length; }, - + /** * Get the number of records in the current record set, after filtering * @type function @@ -13407,7 +13407,7 @@ this._iRecordsDisplay * 1 : this.aiDisplay.length; }, - + /** * Get the display end point - aiDisplay index * @type function @@ -13421,7 +13421,7 @@ records = this.aiDisplay.length, features = this.oFeatures, paginate = features.bPaginate; - + if ( features.bServerSide ) { return paginate === false || len === -1 ? start + records : @@ -13433,14 +13433,14 @@ calc; } }, - + /** * The DataTables object for this table * @type object * @default null */ "oInstance": null, - + /** * Unique identifier for each instance of the DataTables object. If there * is an ID on the table node, then it takes that value, otherwise an @@ -13449,30 +13449,30 @@ * @default null */ "sInstance": null, - + /** * tabindex attribute value that is added to DataTables control elements, allowing * keyboard navigation of the table and its controls. */ "iTabIndex": 0, - + /** * DIV container for the footer scrolling table if scrolling */ "nScrollHead": null, - + /** * DIV container for the footer scrolling table if scrolling */ "nScrollFoot": null, - + /** * Last applied sort * @type array * @default [] */ "aLastSort": [], - + /** * Stored plug-in instances * @type object @@ -13491,11 +13491,11 @@ * @namespace * @extends DataTable.models.ext */ - - + + /** * DataTables extensions - * + * * This namespace acts as a collection area for plug-ins that can be used to * extend DataTables capabilities. Indeed many of the build in methods * use this method to provide their own capabilities (sorting methods for @@ -13516,8 +13516,8 @@ * @default {} */ buttons: {}, - - + + /** * Element class names * @@ -13525,11 +13525,11 @@ * @default {} */ classes: {}, - - + + /** * Error reporting. - * + * * How should DataTables report an error. Can take the value 'alert', * 'throw', 'none' or a function. * @@ -13537,18 +13537,18 @@ * @default alert */ errMode: "alert", - - + + /** * Feature plug-ins. - * + * * This is an array of objects which describe the feature plug-ins that are * available to DataTables. These feature plug-ins are then available for * use through the `dom` initialisation option. - * + * * Each feature plug-in is described by an object which must have the * following properties: - * + * * * `fnInit` - function that is used to initialise the plug-in, * * `cFeature` - a character so the feature can be enabled by the `dom` * instillation option. This is case sensitive. @@ -13559,7 +13559,7 @@ * {@link DataTable.models.oSettings} * * And the following return is expected: - * + * * * {node|null} The element which contains your feature. Note that the * return may also be void if your plug-in does not require to inject any * DOM elements into DataTables control (`dom`) - for example this might @@ -13577,11 +13577,11 @@ * } ); */ feature: [], - - + + /** * Row searching. - * + * * This method of searching is complimentary to the default type based * searching, and a lot more comprehensive as it allows you complete control * over the searching logic. Each element in this array is a function @@ -13638,8 +13638,8 @@ * ); */ search: [], - - + + /** * Selector extensions * @@ -13669,11 +13669,11 @@ column: [], row: [] }, - - + + /** * Internal functions, exposed for used in plug-ins. - * + * * Please note that you should not need to use the internal methods for * anything other than a plug-in (and even then, try to avoid if possible). * The internal function may change between releases. @@ -13682,8 +13682,8 @@ * @default {} */ internal: {}, - - + + /** * Legacy configuration options. Enable and disable legacy options that * are available in DataTables. @@ -13700,11 +13700,11 @@ */ ajax: null }, - - + + /** * Pagination plug-in methods. - * + * * Each entry in this object is a function and defines which buttons should * be shown by the pagination rendering method that is used for the table: * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the @@ -13748,26 +13748,26 @@ * }; */ pager: {}, - - + + renderer: { pageButton: {}, header: {} }, - - + + /** * Ordering plug-ins - custom data source - * + * * The extension options for ordering of data available here is complimentary * to the default type based ordering that DataTables typically uses. It * allows much greater control over the the data that is being used to * order a column, but is necessarily therefore more complex. - * + * * This type of ordering is useful if you want to do ordering based on data * live from the DOM (for example the contents of an 'input' element) rather * than just the static string that DataTables knows of. - * + * * The way these plug-ins work is that you create an array of the values you * wish to be ordering for the column in question and then return that * array. The data in the array much be in the index order of the rows in @@ -13797,8 +13797,8 @@ * } */ order: {}, - - + + /** * Type based plug-ins. * @@ -13851,8 +13851,8 @@ * ); */ detect: [], - - + + /** * Type based search formatting. * @@ -13862,7 +13862,7 @@ * * Note that is a search is not defined for a column of a given type, * no search formatting will be performed. - * + * * Pre-processing of searching data plug-ins - When you assign the sType * for a column (or have it automatically detected for you by DataTables * or a type detection plug-in), you will typically be using this for @@ -13890,8 +13890,8 @@ * } */ search: {}, - - + + /** * Type based ordering. * @@ -13932,7 +13932,7 @@ * than the second parameter, ===0 if the two parameters are equal and * >0 if the first parameter should be sorted height than the second * parameter. - * + * * @type object * @default {} * @@ -13958,7 +13958,7 @@ */ order: {} }, - + /** * Unique DataTables instance counter * @@ -13966,39 +13966,39 @@ * @private */ _unique: 0, - - + + // // Depreciated // The following properties are retained for backwards compatiblity only. // The should not be used in new projects and will be removed in a future // version // - + /** * Version check function. * @type function * @depreciated Since 1.10 */ fnVersionCheck: DataTable.fnVersionCheck, - - + + /** * Index for what 'this' index API functions should use * @type int * @deprecated Since v1.10 */ iApiIndex: 0, - - + + /** * jQuery UI class container * @type object * @deprecated Since v1.10 */ oJUIClasses: {}, - - + + /** * Software version * @type string @@ -14006,8 +14006,8 @@ */ sVersion: DataTable.version }; - - + + // // Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts // @@ -14022,24 +14022,24 @@ oStdClasses: _ext.classes, oPagination: _ext.pager } ); - - + + $.extend( DataTable.ext.classes, { "sTable": "dataTable", "sNoFooter": "no-footer", - + /* Paging buttons */ "sPageButton": "paginate_button", "sPageButtonActive": "current", "sPageButtonDisabled": "disabled", - + /* Striping classes */ "sStripeOdd": "odd", "sStripeEven": "even", - + /* Empty row */ "sRowEmpty": "dataTables_empty", - + /* Features */ "sWrapper": "dataTables_wrapper", "sFilter": "dataTables_filter", @@ -14047,7 +14047,7 @@ "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */ "sLength": "dataTables_length", "sProcessing": "dataTables_processing", - + /* Sorting */ "sSortAsc": "sorting_asc", "sSortDesc": "sorting_desc", @@ -14056,13 +14056,13 @@ "sSortableDesc": "sorting_desc_disabled", "sSortableNone": "sorting_disabled", "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ - + /* Filtering */ "sFilterInput": "", - + /* Page length */ "sLengthSelect": "", - + /* Scrolling */ "sScrollWrapper": "dataTables_scroll", "sScrollHead": "dataTables_scrollHead", @@ -14070,11 +14070,11 @@ "sScrollBody": "dataTables_scrollBody", "sScrollFoot": "dataTables_scrollFoot", "sScrollFootInner": "dataTables_scrollFootInner", - + /* Misc */ "sHeaderTH": "", "sFooterTH": "", - + // Deprecated "sSortJUIAsc": "", "sSortJUIDesc": "", @@ -14086,31 +14086,31 @@ "sJUIHeader": "", "sJUIFooter": "" } ); - - + + (function() { - + // Reused strings for better compression. Closure compiler appears to have a // weird edge case where it is trying to expand strings rather than use the // variable version. This results in about 200 bytes being added, for very // little preference benefit since it this run on script load only. var _empty = ''; _empty = ''; - + var _stateDefault = _empty + 'ui-state-default'; var _sortIcon = _empty + 'css_right ui-icon ui-icon-'; var _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix'; - + $.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, { /* Full numbers paging buttons */ "sPageButton": "fg-button ui-button "+_stateDefault, "sPageButtonActive": "ui-state-disabled", "sPageButtonDisabled": "ui-state-disabled", - + /* Features */ "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ "ui-buttonset-multi paging_", /* Note that the type is postfixed */ - + /* Sorting */ "sSortAsc": _stateDefault+" sorting_asc", "sSortDesc": _stateDefault+" sorting_desc", @@ -14125,31 +14125,31 @@ "sSortJUIDescAllowed": _sortIcon+"carat-1-s", "sSortJUIWrapper": "DataTables_sort_wrapper", "sSortIcon": "DataTables_sort_icon", - + /* Scrolling */ "sScrollHead": "dataTables_scrollHead "+_stateDefault, "sScrollFoot": "dataTables_scrollFoot "+_stateDefault, - + /* Misc */ "sHeaderTH": _stateDefault, "sFooterTH": _stateDefault, "sJUIHeader": _headerFooter+" ui-corner-tl ui-corner-tr", "sJUIFooter": _headerFooter+" ui-corner-bl ui-corner-br" } ); - + }()); - - - + + + var extPagination = DataTable.ext.pager; - + function _numbers ( page, pages ) { var numbers = [], buttons = extPagination.numbers_length, half = Math.floor( buttons / 2 ), i = 1; - + if ( pages <= buttons ) { numbers = _range( 0, pages ); } @@ -14170,53 +14170,53 @@ numbers.splice( 0, 0, 'ellipsis' ); numbers.splice( 0, 0, 0 ); } - + numbers.DT_el = 'span'; return numbers; } - - + + $.extend( extPagination, { simple: function ( page, pages ) { return [ 'previous', 'next' ]; }, - + full: function ( page, pages ) { return [ 'first', 'previous', 'next', 'last' ]; }, - + simple_numbers: function ( page, pages ) { return [ 'previous', _numbers(page, pages), 'next' ]; }, - + full_numbers: function ( page, pages ) { return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ]; }, - + // For testing and plug-ins to use _numbers: _numbers, - + // Number of number buttons (including ellipsis) to show. _Must be odd!_ numbers_length: 7 } ); - - + + $.extend( true, DataTable.ext.renderer, { pageButton: { _: function ( settings, host, idx, buttons, page, pages ) { var classes = settings.oClasses; var lang = settings.oLanguage.oPaginate; var btnDisplay, btnClass, counter=0; - + var attach = function( container, buttons ) { var i, ien, node, button; var clickHandler = function ( e ) { _fnPageChange( settings, e.data.action, true ); }; - + for ( i=0, ien=buttons.length ; i<ien ; i++ ) { button = buttons[i]; - + if ( $.isArray( button ) ) { var inner = $( '<'+(button.DT_el || 'div')+'/>' ) .appendTo( container ); @@ -14225,43 +14225,43 @@ else { btnDisplay = ''; btnClass = ''; - + switch ( button ) { case 'ellipsis': container.append('<span class="ellipsis">…</span>'); break; - + case 'first': btnDisplay = lang.sFirst; btnClass = button + (page > 0 ? '' : ' '+classes.sPageButtonDisabled); break; - + case 'previous': btnDisplay = lang.sPrevious; btnClass = button + (page > 0 ? '' : ' '+classes.sPageButtonDisabled); break; - + case 'next': btnDisplay = lang.sNext; btnClass = button + (page < pages-1 ? '' : ' '+classes.sPageButtonDisabled); break; - + case 'last': btnDisplay = lang.sLast; btnClass = button + (page < pages-1 ? '' : ' '+classes.sPageButtonDisabled); break; - + default: btnDisplay = button + 1; btnClass = page === button ? classes.sPageButtonActive : ''; break; } - + if ( btnDisplay ) { node = $('<a>', { 'class': classes.sPageButton+' '+btnClass, @@ -14274,22 +14274,22 @@ } ) .html( btnDisplay ) .appendTo( container ); - + _fnBindAction( node, {action: button}, clickHandler ); - + counter++; } } } }; - + // IE9 throws an 'unknown error' if document.activeElement is used // inside an iframe or frame. Try / catch the error. Not good for // accessibility, but neither are frames. var activeEl; - + try { // Because this approach is destroying and recreating the paging // elements, focus is lost on the select button which is bad for @@ -14298,18 +14298,18 @@ activeEl = $(document.activeElement).data('dt-idx'); } catch (e) {} - + attach( $(host).empty(), buttons ); - + if ( activeEl ) { $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); } } } } ); - - - + + + // Built in type detection. See model.ext.aTypes for information about // what is required from this methods. $.extend( DataTable.ext.type.detect, [ @@ -14320,7 +14320,7 @@ var decimal = settings.oLanguage.sDecimal; return _isNumber( d, decimal ) ? 'num'+decimal : null; }, - + // Dates (only those recognised by the browser's Date.parse) function ( d, settings ) { @@ -14333,28 +14333,28 @@ var parsed = Date.parse(d); return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null; }, - + // Formatted numbers function ( d, settings ) { var decimal = settings.oLanguage.sDecimal; return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null; }, - + // HTML numeric function ( d, settings ) { var decimal = settings.oLanguage.sDecimal; return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null; }, - + // HTML numeric, formatted function ( d, settings ) { var decimal = settings.oLanguage.sDecimal; return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null; }, - + // HTML (this is strict checking - there must be html) function ( d, settings ) { @@ -14362,17 +14362,17 @@ 'html' : null; } ] ); - - - + + + // Filter formatting functions. See model.ext.ofnSearch for information about // what is required from these methods. - // + // // Note that additional search methods are added for the html numbers and // html formatted numbers by `_addNumericSort()` when we know what the decimal // place is - - + + $.extend( DataTable.ext.type.search, { html: function ( data ) { return _empty(data) ? @@ -14383,7 +14383,7 @@ .replace( _re_html, "" ) : ''; }, - + string: function ( data ) { return _empty(data) ? data : @@ -14392,35 +14392,35 @@ data; } } ); - - - + + + var __numericReplace = function ( d, decimalPlace, re1, re2 ) { if ( d !== 0 && (!d || d === '-') ) { return -Infinity; } - + // If a decimal place other than `.` is used, it needs to be given to the // function so we can detect it and replace with a `.` which is the only // decimal place Javascript recognises - it is not locale aware. if ( decimalPlace ) { d = _numToDecimal( d, decimalPlace ); } - + if ( d.replace ) { if ( re1 ) { d = d.replace( re1, '' ); } - + if ( re2 ) { d = d.replace( re2, '' ); } } - + return d * 1; }; - - + + // Add the numeric 'deformatting' functions for sorting and search. This is done // in a function to provide an easy ability for the language options to add // additional methods if a non-period decimal place is used. @@ -14431,17 +14431,17 @@ "num": function ( d ) { return __numericReplace( d, decimalPlace ); }, - + // Formatted numbers "num-fmt": function ( d ) { return __numericReplace( d, decimalPlace, _re_formatted_numeric ); }, - + // HTML numeric "html-num": function ( d ) { return __numericReplace( d, decimalPlace, _re_html ); }, - + // HTML numeric, formatted "html-num-fmt": function ( d ) { return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric ); @@ -14450,7 +14450,7 @@ function ( key, fn ) { // Add the ordering method _ext.type.order[ key+decimalPlace+'-pre' ] = fn; - + // For HTML types add a search formatter that will strip the HTML if ( key.match(/^html\-/) ) { _ext.type.search[ key+decimalPlace ] = _ext.type.search.html; @@ -14458,15 +14458,15 @@ } ); } - - + + // Default sort methods $.extend( _ext.type.order, { // Dates "date-pre": function ( d ) { return Date.parse( d ) || 0; }, - + // html "html-pre": function ( a ) { return _empty(a) ? @@ -14475,7 +14475,7 @@ a.replace( /<.*?>/g, "" ).toLowerCase() : a+''; }, - + // string "string-pre": function ( a ) { // This is a little complex, but faster than always calling toString, @@ -14488,23 +14488,23 @@ '' : a.toString(); }, - + // string-asc and -desc are retained only for compatibility with the old // sort methods "string-asc": function ( x, y ) { return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }, - + "string-desc": function ( x, y ) { return ((x < y) ? 1 : ((x > y) ? -1 : 0)); } } ); - - + + // Numeric sorting types - order doesn't matter here _addNumericSort( '' ); - - + + $.extend( true, DataTable.ext.renderer, { header: { _: function ( settings, cell, column, classes ) { @@ -14517,9 +14517,9 @@ if ( settings !== ctx ) { // need to check this this is the host return; // table, not a nested one } - + var colIdx = column.idx; - + cell .removeClass( column.sSortingClass +' '+ @@ -14533,7 +14533,7 @@ ); } ); }, - + jqueryui: function ( settings, cell, column, classes ) { $('<div/>') .addClass( classes.sSortJUIWrapper ) @@ -14542,15 +14542,15 @@ .addClass( classes.sSortIcon+' '+column.sSortingClassJUI ) ) .appendTo( cell ); - + // Attach a sort listener to update on sort $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { if ( settings !== ctx ) { return; } - + var colIdx = column.idx; - + cell .removeClass( classes.sSortAsc +" "+classes.sSortDesc ) .addClass( columns[ colIdx ] == 'asc' ? @@ -14558,7 +14558,7 @@ classes.sSortDesc : column.sSortingClass ); - + cell .find( 'span.'+classes.sSortIcon ) .removeClass( @@ -14577,14 +14577,14 @@ } } } ); - + /* * Public helper functions. These aren't used internally by DataTables, or * called by any of the options passed into DataTables, but they can be used * externally by developers working with DataTables. They are helper functions * to make working with DataTables a little bit easier. */ - + /** * Helpers for `columns.render`. * @@ -14615,15 +14615,15 @@ if ( typeof d !== 'number' && typeof d !== 'string' ) { return d; } - + var negative = d < 0 ? '-' : ''; d = Math.abs( parseFloat( d ) ); - + var intPart = parseInt( d, 10 ); var floatPart = precision ? decimal+(d - intPart).toFixed( precision ).substring( 2 ): ''; - + return negative + (prefix||'') + intPart.toString().replace( /\B(?=(\d{3})+(?!\d))/g, thousands @@ -14633,14 +14633,14 @@ }; } }; - - + + /* * This is really a good bit rubbish this method of exposing the internal methods * publicly... - To be fixed in 2.0 using methods on the prototype */ - - + + /** * Create a wrapper function for exporting an internal functions to an external API. * @param {string} fn API function name @@ -14656,8 +14656,8 @@ return DataTable.ext.internal[fn].apply( this, args ); }; } - - + + /** * Reference to internal functions for use by plug-in developers. Note that * these methods are references to internal functions and are considered to be @@ -14760,7 +14760,7 @@ // in 1.10, so this dead-end function is // added to prevent errors } ); - + // jQuery access $.fn.dataTable = DataTable; @@ -14948,4 +14948,3 @@ })); }(window, document)); - diff --git a/themes/defaulted/widgets/package_data.php b/themes/defaulted/widgets/package_data.php index 05851731..6f3e3349 100644 --- a/themes/defaulted/widgets/package_data.php +++ b/themes/defaulted/widgets/package_data.php @@ -13,6 +13,7 @@ 'plexpy', 'ombi', 'pyload', + 'radarr', 'rapidleech', 'sabnzbd', 'sickrage', diff --git a/themes/smoked/inc/panel.scripts.php b/themes/smoked/inc/panel.scripts.php index d49f6c23..965b1390 100644 --- a/themes/smoked/inc/panel.scripts.php +++ b/themes/smoked/inc/panel.scripts.php @@ -467,25 +467,6 @@ RUTorrent - <a href="https://github.com/QuickBox/quickbox_rutorrent/compare/<?php echo $version ?>...master" target="blank"><?php echo $version ?> ... latest commit</a><br/> RUTorrent Plugins - <a href="https://github.com/QuickBox/quickbox_rutorrent-plugins/compare/<?php echo $version ?>...master" target="blank"><?php echo $version ?> ... latest commit</a><br/> club-QuickBox - <a href="https://github.com/QuickBox/club-QuickBox/compare/<?php echo $version ?>...master" target="blank"><?php echo $version ?> ... latest commit</a><br/> - <hr> - <h4 class="modal-title">Your Current Commit Status</h4> - <span style="font-size:12px"> - - Dashboard - <code><a href="https://github.com/QuickBox/quickbox_dashboard/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/dashboard/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank"><?php echo shell_exec('git -C /etc/QuickBox/.git/modules/dashboard/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/quickbox_dashboard/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/dashboard/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank">latest</a></code><br> - - Packages - <code><a href="https://github.com/QuickBox/quickbox_packages/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/packages/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank"><?php echo shell_exec('git -C /etc/QuickBox/.git/modules/packages/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/quickbox_packages/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/packages/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank">latest</a></code><br> - - RUTorrent Plugins - <code><a href="https://github.com/QuickBox/quickbox_rutorrent-plugins/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rtplugins/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank"><?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rtplugins/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/quickbox_rutorrent-plugins/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rtplugins/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank">latest</a></code><br> - - club-QuickBox - <code><a href="https://github.com/QuickBox/club-QuickBox/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rttheme/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank"><?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rttheme/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/club-QuickBox/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rttheme/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank">latest</a></code><br> - - RUTorrent - <code><a href="https://github.com/QuickBox/quickbox_rutorrent/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rutorrent/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank"><?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rutorrent/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/quickbox_rutorrent/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/rutorrent/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank">latest</a></code><br> - - Setup - <code><a href="https://github.com/QuickBox/quickbox_setup/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/setup/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank"><?php echo shell_exec('git -C /etc/QuickBox/.git/modules/setup/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/quickbox_setup/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/setup/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank">latest</a></code><br> - - Themes - <code><a href="https://github.com/QuickBox/quickbox_themes/commit/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/themes/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>" target="_blank"><?php echo shell_exec('git -C /etc/QuickBox/.git/modules/themes/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?></a> ... <a href="https://github.com/QuickBox/quickbox_themes/compare/<?php echo shell_exec('git -C /etc/QuickBox/.git/modules/themes/ show --oneline -s | head -n 5 | cut -d\ -f 1;'); ?>...master" target="_blank">latest</a></code><br> - - </span> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo T('CANCEL'); ?></button> diff --git a/themes/smoked/lang/lang_en b/themes/smoked/lang/lang_en index 346c0a9a..5f9b39cc 100644 --- a/themes/smoked/lang/lang_en +++ b/themes/smoked/lang/lang_en @@ -119,11 +119,13 @@ $L['NEXTCLOUD'] = 'Nextcloud is an open source, self-hosted file sync and share $L['NZBHYDRA'] = 'NZBHydra is a meta search for NZB indexers. It provides easy access to a number of raw and newznab based indexers. You can search all your indexers from one place and use it as indexer source for tools like Sonarr or CouchPotato.'; $L['OVPN'] = 'SSL/TLS based user-space VPN. Supports Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Windows 2000/XP+.'; $L['PLEX'] = 'Plex lets you stream your content to any Plex enabled device.'; -$L['PLEX_REQUESTS'] = 'Plex Requests offers a beautiful and easy to use interface for items users wish to be added to the library. Integrates with CouchPotato, SickRage and Sonarr.'; +$L['PLEX_REQUESTS'] = 'Ombi offers a beautiful and easy to use interface for items users wish to be added to the library. Integrates with CouchPotato, SickRage and Sonarr.'; $L['PLEXPY'] = 'A python based web application for monitoring, analytics and notifications for Plex Media Server'; $L['PYLOAD'] = 'pyLoad is a download manager for `Hoster` websites, video sites, and HTTP/FTP links. A list of supported sites can be found <a href="https://github.com/pyload/pyload/wiki/Supported-Hoster" target="_blank">here</a>'; $L['QUASSEL'] = 'Quassel IRC is a modern, cross-platform, distributed IRC client based on the Qt4 framework.'; $L['QUOTAS'] = 'This feature of Linux allows the system administrator to allocate a maximum amount of disk space a user or group may use.'; +$L['RADARR'] = 'Radarr is an independent fork of Sonarr reworked for automatically downloading movies via Usenet and BitTorrent.<br> +The project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.'; $L['RAPIDLEECH'] = 'Rapid Leech is a free server transfer script for use on various popular upload/download sites such as uploaded.net, Rapidshare.com and more than 120 others.'; $L['SABNZBD'] = 'SABnzbd is a multi-platform binary newsgroup downloader. The program works in the background and simplifies the downloading verifying and extracting of files from Usenet. SABnzbd uses NZB files (similar to .torrent files, but for Usenet), instead of browsing Usenet directly.'; $L['SICKRAGE'] = 'Video File Manager for TV Shows, It watches for new episodes of your favorite shows and when they are posted it does its magic.'; @@ -314,10 +316,11 @@ $L['UNINSTALL_NEXTCLOUD_TXT'] = 'You are about to uninstall NextCloud from your $L['UNINSTALL_NZBHYDRA_TXT'] = 'You are about to uninstall NZBHydra from your system.<br/><br/>This will completely remove all of your configurations and settings... this action is irreversible. <br/><br/>You may reinstall NZBHydra at any time, however, your settings will be reset to default.'; $L['UNINSTALL_PLEX_TXT'] = 'You are about to uninstall Plex Media Server from your system.<br/><br/>This will completely remove all of your configuration and library settings... this action is irreversible. <br/><br/>You may reinstall Plex at any time, however, your library settings will be reset to default.'; $L['UNINSTALL_PLEXPY_TXT'] = 'You are about to uninstall PlexPy from your system.<br/><br/>This will completely remove all of your configuration and library settings... this action is irreversible. <br/><br/>You may reinstall PlexPy at any time, however, your settings will be reset to default.'; -$L['UNINSTALL_PLEXREQUESTS_TXT'] = 'You are about to uninstall Plex Requests from your system.<br/><br/>This will completely remove all of your configuration and library settings... this action is irreversible. <br/><br/>You may reinstall Plex Requests at any time, however, your library settings and requests will be reset.'; +$L['UNINSTALL_PLEXREQUESTS_TXT'] = 'You are about to uninstall Ombi from your system.<br/><br/>This will completely remove all of your configuration and library settings... this action is irreversible. <br/><br/>You may reinstall Ombi at any time, however, your library settings and requests will be reset.'; $L['UNINSTALL_PYLOAD_TXT'] = 'You are about to uninstall pyLoad from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall pyLoad at any time, however, your configuration settings will be reset to default.'; $L['UNINSTALL_QUASSEL_TXT'] = 'You are about to uninstall Quassel from your system.<br/><br/> This will completely remove Quassel and all settings/stored backlogs from your system.'; $L['UNINSTALL_QUOTAS_TXT'] = 'You are about to uninstall quotas from your system.<br/><br/> This will completely remove user quotas and any settings associated with them.'; +$L['UNINSTALL_RADARR_TXT'] = 'You are about to uninstall Radarr from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Radarr at any time, however, your configuration settings will be reset to default.'; $L['UNINSTALL_RAPIDLEECH_TXT'] = 'You are about to uninstall Rapidleech from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall Rapidleech at any time, however, your configuration settings will be reset to default.'; $L['UNINSTALL_SABNZBD_TXT'] = 'You are about to uninstall SABnzbd from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall SABnzbd at any time, however, your configuration settings will be reset to default.'; $L['UNINSTALL_SICKRAGE_TXT'] = 'You are about to uninstall SickRage from your system.<br/><br/>This will completely remove all of your configuration settings... this action is irreversible. <br/><br/>You may reinstall SickRage at any time, however, your configuration settings will be reset to default.'; From 4239e6483ff25b2cc8fc8d5dd935ac482662812d Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 16:29:20 -0500 Subject: [PATCH 10/14] fix whitespace and set info button --- themes/defaulted/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/defaulted/index.php b/themes/defaulted/index.php index 63f4a9eb..38b6d0b3 100644 --- a/themes/defaulted/index.php +++ b/themes/defaulted/index.php @@ -406,13 +406,13 @@ <td style="vertical-align: middle; text-align: center"><a href="?installpackage-quota=true" data-toggle="modal" data-target="#sysResponse" id="quotaInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> <?php } ?> </tr> -<tr> + <tr> <td>Radarr</td> <td><?php echo T('RADARR'); ?></td> <?php if (file_exists("/install/.radarr.lock")) { ?> <td style="vertical-align: middle; text-align: center"><a href="javascript:void()" data-toggle="modal" data-target="#radarrRemovalConfirm" class="btn btn-xs btn-success"><?php echo T('INSTALLED'); ?></a></td> <?php } else { ?> - <td style="vertical-align: middle; text-align: center"><a href="?installpackage-radarr=true" data-toggle="modal" data-target="#sysResponse" id="radarrInstall" class="btn btn-xs btn-default"><?php echo T('INSTALL'); ?></a></td> + <td style="vertical-align: middle; text-align: center"><a href="?installpackage-radarr=true" data-toggle="modal" data-target="#sysResponse" id="radarrInstall" class="btn btn-xs btn-info"><?php echo T('INSTALL'); ?></a></td> <?php } ?> </tr> <tr> From 1fbc54109e10adcf2495293cce679cab425dc51f Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 16:31:00 -0500 Subject: [PATCH 11/14] address logo on defaulted theme --- themes/defaulted/db/branding-l.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/defaulted/db/branding-l.php b/themes/defaulted/db/branding-l.php index bc5038d9..60b0ea2d 100644 --- a/themes/defaulted/db/branding-l.php +++ b/themes/defaulted/db/branding-l.php @@ -1 +1 @@ -<a href="#"><img src="img/logo-dark.png" alt="QuickBox Seedbox" class="logo-image" height="50" /></a> +<a href="#"><img src="img/logo-light.png" alt="QuickBox Seedbox" class="logo-image" height="50" /></a> From 9cc2e9b5bd944b2b840d3741a00dcc611f116e42 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 16:41:27 -0500 Subject: [PATCH 12/14] let's reload apache instead and loosen sleep times --- packages/package/install/installpackage-radarr | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/package/install/installpackage-radarr b/packages/package/install/installpackage-radarr index 5dba0a33..6122b847 100644 --- a/packages/package/install/installpackage-radarr +++ b/packages/package/install/installpackage-radarr @@ -64,17 +64,18 @@ AuthUserFile '/etc/htpasswd' Require user ${username} </Location> EOF + chown -R ${username}: /opt/Radarr/ chown www-data: /etc/apache2/sites-enabled/radarr.conf systemctl enable radarr.service >/dev/null 2>&1 systemctl daemon-reload systemctl start radarr.service -sleep 10 +sleep 5 systemctl stop radarr.service -sleep 10 +sleep 5 sed -i "s/<UrlBase>.*/<UrlBase>radarr<\/UrlBase>/g" /home/${username}/.config/Radarr/config.xml sed -i "s/<BindAddress>.*/<BindAddress>127.0.0.1<\/BindAddress>/g" /home/${username}/.config/Radarr/config.xml -service apache2 restart +service apache2 reload } function _radarr_start() { From 0c3f3876463568974e02fe5253d927190bed32f8 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 17:35:39 -0500 Subject: [PATCH 13/14] add gritter messages for Radarr on uninstall --- themes/defaulted/inc/panel.scripts.php | 9 +++++++++ themes/smoked/inc/panel.scripts.php | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/themes/defaulted/inc/panel.scripts.php b/themes/defaulted/inc/panel.scripts.php index 965b1390..d380a705 100644 --- a/themes/defaulted/inc/panel.scripts.php +++ b/themes/defaulted/inc/panel.scripts.php @@ -699,6 +699,15 @@ class_name: 'with-icon times-circle danger', sticky: true }); }); + // RadarrRemove + $('#radarrRemove').click(function(){ + $.gritter.add({ + title: '<?php echo T('UNINSTALLING_TITLE'); ?> Radarr', + text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Radarr <?php echo T('UNINSTALLING_TXT_2'); ?>', + class_name: 'with-icon times-circle danger', + sticky: true + }); + }); // RapidleechRemove $('#rapidleechRemove').click(function(){ $.gritter.add({ diff --git a/themes/smoked/inc/panel.scripts.php b/themes/smoked/inc/panel.scripts.php index 965b1390..d380a705 100644 --- a/themes/smoked/inc/panel.scripts.php +++ b/themes/smoked/inc/panel.scripts.php @@ -699,6 +699,15 @@ class_name: 'with-icon times-circle danger', sticky: true }); }); + // RadarrRemove + $('#radarrRemove').click(function(){ + $.gritter.add({ + title: '<?php echo T('UNINSTALLING_TITLE'); ?> Radarr', + text: '<?php echo T('UNINSTALLING_TXT_1'); ?> Radarr <?php echo T('UNINSTALLING_TXT_2'); ?>', + class_name: 'with-icon times-circle danger', + sticky: true + }); + }); // RapidleechRemove $('#rapidleechRemove').click(function(){ $.gritter.add({ From dc0d2faa7c5370f4b623963d7e073031fa6880c1 Mon Sep 17 00:00:00 2001 From: JMSolo <jmsolodesigns@gmail.com> Date: Fri, 21 Apr 2017 17:36:59 -0500 Subject: [PATCH 14/14] small update to README instructions --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f03a4cad..9097992b 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ grab the current/future QuickBox repository with the following: git clone https://github.com/QuickBox/QB /etc/QuickBox ``` +>If you receive an error `/etc/QuickBox already exists` please perform an `rm -rf /etc/QuickBox`. You can then run the `git clone` command above to proceed. + ### [3]: update your current update function by doing the following: ``` @@ -57,7 +59,7 @@ updateQuickBox --- -###Quick Advisory Notice(s) on QuickBox +### Quick Advisory Notice(s) on QuickBox >### :rotating_light: OVH DEFAULT KERNEL NOTICE!<br> grsec is built into OVH's custom kernel and it absolutely wrecks havoc when using these panels where we depend on the ability for one user (www-data) to see the processes of another running user ($username).